summary refs log tree commit diff stats
path: root/tools
diff options
context:
space:
mode:
Diffstat (limited to 'tools')
-rw-r--r--tools/detect/.gitignore5
-rw-r--r--tools/detect/detect.nim1539
-rw-r--r--tools/detect/linux_amd64_consts.nim631
3 files changed, 789 insertions, 1386 deletions
diff --git a/tools/detect/.gitignore b/tools/detect/.gitignore
new file mode 100644
index 000000000..4a32aee50
--- /dev/null
+++ b/tools/detect/.gitignore
@@ -0,0 +1,5 @@
+pre.c
+pre.i
+genconsts.c
+other_consts.nim
+linux_amd64_consts.nim
diff --git a/tools/detect/detect.nim b/tools/detect/detect.nim
index 0470257ee..3afe8ee67 100644
--- a/tools/detect/detect.nim
+++ b/tools/detect/detect.nim
@@ -1,16 +1,22 @@
 # Posix detect program
 # (c) 2010 Andreas Rumpf
 
-# This program produces a C program that produces a Nim include file.
-# The Nim include file lists the values of each POSIX constant.
-# This is needed because POSIX is brain-dead: It only cares for C, any other
-# language is ignored. It would have been easier had they specified the
-# concrete values of the constants. Sigh.
-
+# This program generates:
+# * A c program that prints a nim file containing constant variables holding the
+#   value of many C #define's, on the platform it's currently running at
+# * A nim file that contains the same contants, but as nim var:s that fetch the
+#   value of the constant using importc/header during the C compile phase.
+#
+# The first file allows nim to know the value of the constant at nim
+# compile time, but since the values differ across platform, isn't as portable.
+# The second one is more portable, and less semantically correct. It only works
+# when there's a backing C compiler available as well, preventing standalone
+# compilation.
 import os, strutils
 
 const
   cc = "gcc -o $# $#.c"
+  cpp = "gcc -E -o $#.i $#.c"
 
   cfile = """
 /* Generated by detect.nim */
@@ -22,46 +28,67 @@ $1
 int main() {
   FILE* f;
   f = fopen("$3_$4_consts.nim", "w+");
-  fputs("# Generated by detect.nim\nconst\n", f);
+  fputs("# Generated by detect.nim\n\n", f);
   $2
   fclose(f);
 }
 """
+  ifile = """
+/* Generated by detect.nim */
 
-type
-  TTypeKind = enum
-    cint, cshort, clong, cstring, pointer
+$1
+"""
+  nimfile = """
+# Generated by detect.nim
+$1
+"""
 
 var
+  cur = ""
+  found = false
   hd = ""
   tl = ""
+  other = ""
 
 proc myExec(cmd: string): bool =
   echo "CMD ", cmd
   return execShellCmd(cmd) == 0
 
-proc header(s: string): bool =
+proc header(s: string) =
+  cur = s
   const testh = "testh"
-  var f: TFile
+  var f: File
   if open(f, addFileExt(testh, "c"), fmWrite):
     f.write("#include $1\n" % s)
     f.write("int main() { return 0; }\n")
     close(f)
-    result = myExec(cc % [testh.addFileExt(ExeExt), testh])
+    found = myExec(cc % [testh.addFileExt(ExeExt), testh])
     removeFile(addFileExt(testh, "c"))
-  if result:
-    addf(hd, "#include $1\n", s)
+
+  addf(other, "\n# $1\n", cur)
+
+  if found:
+    addf(hd, "#include $1\n", cur)
+    addf(tl, "  fprintf(f, \"\\n# $1\\n\");\n", cur)
     echo("Found: ", s)
   else:
     echo("Not found: ", s)
 
 proc main =
   const gen = "genconsts"
-  var f: TFile
+  const pre = "pre"
+  var f: File
   if open(f, addFileExt(gen, "c"), fmWrite):
     f.write(cfile % [hd, tl, system.hostOS, system.hostCPU])
     close(f)
+  if open(f, addFileExt(pre, "c"), fmWrite):
+    f.write(cfile % [hd, tl, system.hostOS, system.hostCPU])
+    close(f)
+  if open(f, "other_consts.nim", fmWrite):
+    f.write(nimfile % [other])
+    close(f)
   if not myExec(cc % [gen.addFileExt(ExeExt), gen]): quit(1)
+  if not myExec(cpp % [pre.addFileExt(ExeExt), pre]): quit(1)
   when defined(windows):
     if not myExec(gen.addFileExt(ExeExt)): quit(1)
   else:
@@ -69,763 +96,765 @@ proc main =
   #removeFile(addFileExt(gen, "c"))
   echo("Success")
 
-proc v(name: string, typ: TTypeKind=cint) =
+proc v(name: string, typ = "cint", no_other = false) =
   var n = if name[0] == '_': substr(name, 1) else: name
   var t = $typ
+
+  if not no_other:
+    addf(other,
+      "var $1* {.importc: \"$2\", header: \"$3\".}: $4\n", n, name, cur, t)
+
+  if not found: return
+
   case typ
-  of pointer:
+  of "pointer":
     addf(tl,
-      "#ifdef $3\n  fprintf(f, \"  $1* = cast[$2](%p)\\n\", $3);\n#endif\n",
+      "#ifdef $3\n  fprintf(f, \"const $1* = cast[$2](%p)\\n\", $3);\n#endif\n",
       n, t, name)
-
-  of cstring:
+  of "cstring":
     addf(tl,
-      "#ifdef $3\n  fprintf(f, \"  $1* = $2(\\\"%s\\\")\\n\", $3);\n#endif\n",
+      "#ifdef $3\n  fprintf(f, \"const $1* = $2(\\\"%s\\\")\\n\", $3);\n#endif\n",
       n, t, name)
-  of clong:
+  of "clong":
     addf(tl,
-      "#ifdef $3\n  fprintf(f, \"  $1* = $2(%ld)\\n\", $3);\n#endif\n",
+      "#ifdef $3\n  fprintf(f, \"const $1* = $2(%ld)\\n\", $3);\n#endif\n",
       n, t, name)
   else:
     addf(tl,
-      "#ifdef $3\n  fprintf(f, \"  $1* = $2(%d)\\n\", $3);\n#endif\n",
+      "#ifdef $3\n  fprintf(f, \"const $1* = $2(%d)\\n\", $3);\n#endif\n",
       n, t, name)
 
-if header("<aio.h>"):
-  v("AIO_ALLDONE")
-  v("AIO_CANCELED")
-  v("AIO_NOTCANCELED")
-  v("LIO_NOP")
-  v("LIO_NOWAIT")
-  v("LIO_READ")
-  v("LIO_WAIT")
-  v("LIO_WRITE")
-
-if header("<dlfcn.h>"):
-  v("RTLD_LAZY")
-  v("RTLD_NOW")
-  v("RTLD_GLOBAL")
-  v("RTLD_LOCAL")
-
-if header("<errno.h>"):
-  v("E2BIG")
-  v("EACCES")
-  v("EADDRINUSE")
-  v("EADDRNOTAVAIL")
-  v("EAFNOSUPPORT")
-  v("EAGAIN")
-  v("EALREADY")
-  v("EBADF")
-  v("EBADMSG")
-  v("EBUSY")
-  v("ECANCELED")
-  v("ECHILD")
-  v("ECONNABORTED")
-  v("ECONNREFUSED")
-  v("ECONNRESET")
-  v("EDEADLK")
-  v("EDESTADDRREQ")
-  v("EDOM")
-  v("EDQUOT")
-  v("EEXIST")
-  v("EFAULT")
-  v("EFBIG")
-  v("EHOSTUNREACH")
-  v("EIDRM")
-  v("EILSEQ")
-  v("EINPROGRESS")
-  v("EINTR")
-  v("EINVAL")
-  v("EIO")
-  v("EISCONN")
-  v("EISDIR")
-  v("ELOOP")
-  v("EMFILE")
-  v("EMLINK")
-  v("EMSGSIZE")
-  v("EMULTIHOP")
-  v("ENAMETOOLONG")
-  v("ENETDOWN")
-  v("ENETRESET")
-  v("ENETUNREACH")
-  v("ENFILE")
-  v("ENOBUFS")
-  v("ENODATA")
-  v("ENODEV")
-  v("ENOENT")
-  v("ENOEXEC")
-  v("ENOLCK")
-  v("ENOLINK")
-  v("ENOMEM")
-  v("ENOMSG")
-  v("ENOPROTOOPT")
-  v("ENOSPC")
-  v("ENOSR")
-  v("ENOSTR")
-  v("ENOSYS")
-  v("ENOTCONN")
-  v("ENOTDIR")
-  v("ENOTEMPTY")
-  v("ENOTSOCK")
-  v("ENOTSUP")
-  v("ENOTTY")
-  v("ENXIO")
-  v("EOPNOTSUPP")
-  v("EOVERFLOW")
-  v("EPERM")
-  v("EPIPE")
-  v("EPROTO")
-  v("EPROTONOSUPPORT")
-  v("EPROTOTYPE")
-  v("ERANGE")
-  v("EROFS")
-  v("ESPIPE")
-  v("ESRCH")
-  v("ESTALE")
-  v("ETIME")
-  v("ETIMEDOUT")
-  v("ETXTBSY")
-  v("EWOULDBLOCK")
-  v("EXDEV")
-
-if header("<fcntl.h>"):
-  v("F_DUPFD")
-  v("F_GETFD")
-  v("F_SETFD")
-  v("F_GETFL")
-  v("F_SETFL")
-  v("F_GETLK")
-  v("F_SETLK")
-  v("F_SETLKW")
-  v("F_GETOWN")
-  v("F_SETOWN")
-  v("FD_CLOEXEC")
-  v("F_RDLCK")
-  v("F_UNLCK")
-  v("F_WRLCK")
-  v("O_CREAT")
-  v("O_EXCL")
-  v("O_NOCTTY")
-  v("O_TRUNC")
-  v("O_APPEND")
-  v("O_DSYNC")
-  v("O_NONBLOCK")
-  v("O_RSYNC")
-  v("O_SYNC")
-  v("O_ACCMODE")
-  v("O_RDONLY")
-  v("O_RDWR")
-  v("O_WRONLY")
-  v("POSIX_FADV_NORMAL")
-  v("POSIX_FADV_SEQUENTIAL")
-  v("POSIX_FADV_RANDOM")
-  v("POSIX_FADV_WILLNEED")
-  v("POSIX_FADV_DONTNEED")
-  v("POSIX_FADV_NOREUSE")
-
-if header("<fenv.h>"):
-  v("FE_DIVBYZERO")
-  v("FE_INEXACT")
-  v("FE_INVALID")
-  v("FE_OVERFLOW")
-  v("FE_UNDERFLOW")
-  v("FE_ALL_EXCEPT")
-  v("FE_DOWNWARD")
-  v("FE_TONEAREST")
-  v("FE_TOWARDZERO")
-  v("FE_UPWARD")
-  v("FE_DFL_ENV", pointer)
-
-if header("<fmtmsg.h>"):
-  v("MM_HARD")
-  v("MM_SOFT")
-  v("MM_FIRM")
-  v("MM_APPL")
-  v("MM_UTIL")
-  v("MM_OPSYS")
-  v("MM_RECOVER")
-  v("MM_NRECOV")
-  v("MM_HALT")
-  v("MM_ERROR")
-  v("MM_WARNING")
-  v("MM_INFO")
-  v("MM_NOSEV")
-  v("MM_PRINT")
-  v("MM_CONSOLE")
-  v("MM_OK")
-  v("MM_NOTOK")
-  v("MM_NOMSG")
-  v("MM_NOCON")
-
-if header("<fnmatch.h>"):
-  v("FNM_NOMATCH")
-  v("FNM_PATHNAME")
-  v("FNM_PERIOD")
-  v("FNM_NOESCAPE")
-  v("FNM_NOSYS")
-
-if header("<ftw.h>"):
-  v("FTW_F")
-  v("FTW_D")
-  v("FTW_DNR")
-  v("FTW_DP")
-  v("FTW_NS")
-  v("FTW_SL")
-  v("FTW_SLN")
-  v("FTW_PHYS")
-  v("FTW_MOUNT")
-  v("FTW_DEPTH")
-  v("FTW_CHDIR")
-
-if header("<glob.h>"):
-  v("GLOB_APPEND")
-  v("GLOB_DOOFFS")
-  v("GLOB_ERR")
-  v("GLOB_MARK")
-  v("GLOB_NOCHECK")
-  v("GLOB_NOESCAPE")
-  v("GLOB_NOSORT")
-  v("GLOB_ABORTED")
-  v("GLOB_NOMATCH")
-  v("GLOB_NOSPACE")
-  v("GLOB_NOSYS")
-
-if header("<langinfo.h>"):
-  v("CODESET")
-  v("D_T_FMT")
-  v("D_FMT")
-  v("T_FMT")
-  v("T_FMT_AMPM")
-  v("AM_STR")
-  v("PM_STR")
-  v("DAY_1")
-  v("DAY_2")
-  v("DAY_3")
-  v("DAY_4")
-  v("DAY_5")
-  v("DAY_6")
-  v("DAY_7")
-  v("ABDAY_1")
-  v("ABDAY_2")
-  v("ABDAY_3")
-  v("ABDAY_4")
-  v("ABDAY_5")
-  v("ABDAY_6")
-  v("ABDAY_7")
-  v("MON_1")
-  v("MON_2")
-  v("MON_3")
-  v("MON_4")
-  v("MON_5")
-  v("MON_6")
-  v("MON_7")
-  v("MON_8")
-  v("MON_9")
-  v("MON_10")
-  v("MON_11")
-  v("MON_12")
-  v("ABMON_1")
-  v("ABMON_2")
-  v("ABMON_3")
-  v("ABMON_4")
-  v("ABMON_5")
-  v("ABMON_6")
-  v("ABMON_7")
-  v("ABMON_8")
-  v("ABMON_9")
-  v("ABMON_10")
-  v("ABMON_11")
-  v("ABMON_12")
-  v("ERA")
-  v("ERA_D_FMT")
-  v("ERA_D_T_FMT")
-  v("ERA_T_FMT")
-  v("ALT_DIGITS")
-  v("RADIXCHAR")
-  v("THOUSEP")
-  v("YESEXPR")
-  v("NOEXPR")
-  v("CRNCYSTR")
-
-if header("<locale.h>"):
-  v("LC_ALL") #{.importc, header: .}: cint
-  v("LC_COLLATE") #{.importc, header: "<locale.h>".}: cint
-  v("LC_CTYPE") #{.importc, header: "<locale.h>".}: cint
-  v("LC_MESSAGES") #{.importc, header: "<locale.h>".}: cint
-  v("LC_MONETARY") #{.importc, header: "<locale.h>".}: cint
-  v("LC_NUMERIC") #{.importc, header: "<locale.h>".}: cint
-  v("LC_TIME") #{.importc, header: "<locale.h>".}: cint
-
-if header("<pthread.h>"):
-  v("PTHREAD_BARRIER_SERIAL_THREAD")
-  v("PTHREAD_CANCEL_ASYNCHRONOUS")
-  v("PTHREAD_CANCEL_ENABLE")
-  v("PTHREAD_CANCEL_DEFERRED")
-  v("PTHREAD_CANCEL_DISABLE")
+
+header("<aio.h>")
+v("AIO_ALLDONE")
+v("AIO_CANCELED")
+v("AIO_NOTCANCELED")
+v("LIO_NOP")
+v("LIO_NOWAIT")
+v("LIO_READ")
+v("LIO_WAIT")
+v("LIO_WRITE")
+
+header("<dlfcn.h>")
+v("RTLD_LAZY")
+v("RTLD_NOW")
+v("RTLD_GLOBAL")
+v("RTLD_LOCAL")
+
+header("<errno.h>")
+v("E2BIG")
+v("EACCES")
+v("EADDRINUSE")
+v("EADDRNOTAVAIL")
+v("EAFNOSUPPORT")
+v("EAGAIN")
+v("EALREADY")
+v("EBADF")
+v("EBADMSG")
+v("EBUSY")
+v("ECANCELED")
+v("ECHILD")
+v("ECONNABORTED")
+v("ECONNREFUSED")
+v("ECONNRESET")
+v("EDEADLK")
+v("EDESTADDRREQ")
+v("EDOM")
+v("EDQUOT")
+v("EEXIST")
+v("EFAULT")
+v("EFBIG")
+v("EHOSTUNREACH")
+v("EIDRM")
+v("EILSEQ")
+v("EINPROGRESS")
+v("EINTR")
+v("EINVAL")
+v("EIO")
+v("EISCONN")
+v("EISDIR")
+v("ELOOP")
+v("EMFILE")
+v("EMLINK")
+v("EMSGSIZE")
+v("EMULTIHOP")
+v("ENAMETOOLONG")
+v("ENETDOWN")
+v("ENETRESET")
+v("ENETUNREACH")
+v("ENFILE")
+v("ENOBUFS")
+v("ENODATA")
+v("ENODEV")
+v("ENOENT")
+v("ENOEXEC")
+v("ENOLCK")
+v("ENOLINK")
+v("ENOMEM")
+v("ENOMSG")
+v("ENOPROTOOPT")
+v("ENOSPC")
+v("ENOSR")
+v("ENOSTR")
+v("ENOSYS")
+v("ENOTCONN")
+v("ENOTDIR")
+v("ENOTEMPTY")
+v("ENOTSOCK")
+v("ENOTSUP")
+v("ENOTTY")
+v("ENXIO")
+v("EOPNOTSUPP")
+v("EOVERFLOW")
+v("EPERM")
+v("EPIPE")
+v("EPROTO")
+v("EPROTONOSUPPORT")
+v("EPROTOTYPE")
+v("ERANGE")
+v("EROFS")
+v("ESPIPE")
+v("ESRCH")
+v("ESTALE")
+v("ETIME")
+v("ETIMEDOUT")
+v("ETXTBSY")
+v("EWOULDBLOCK")
+v("EXDEV")
+
+header("<fcntl.h>")
+v("F_DUPFD")
+v("F_GETFD")
+v("F_SETFD")
+v("F_GETFL")
+v("F_SETFL")
+v("F_GETLK")
+v("F_SETLK")
+v("F_SETLKW")
+v("F_GETOWN")
+v("F_SETOWN")
+v("FD_CLOEXEC")
+v("F_RDLCK")
+v("F_UNLCK")
+v("F_WRLCK")
+v("O_CREAT")
+v("O_EXCL")
+v("O_NOCTTY")
+v("O_TRUNC")
+v("O_APPEND")
+v("O_DSYNC")
+v("O_NONBLOCK")
+v("O_RSYNC")
+v("O_SYNC")
+v("O_ACCMODE")
+v("O_RDONLY")
+v("O_RDWR")
+v("O_WRONLY")
+v("POSIX_FADV_NORMAL")
+v("POSIX_FADV_SEQUENTIAL")
+v("POSIX_FADV_RANDOM")
+v("POSIX_FADV_WILLNEED")
+v("POSIX_FADV_DONTNEED")
+v("POSIX_FADV_NOREUSE")
+
+header("<fenv.h>")
+v("FE_DIVBYZERO")
+v("FE_INEXACT")
+v("FE_INVALID")
+v("FE_OVERFLOW")
+v("FE_UNDERFLOW")
+v("FE_ALL_EXCEPT")
+v("FE_DOWNWARD")
+v("FE_TONEAREST")
+v("FE_TOWARDZERO")
+v("FE_UPWARD")
+v("FE_DFL_ENV")
+
+header("<fmtmsg.h>")
+v("MM_HARD")
+v("MM_SOFT")
+v("MM_FIRM")
+v("MM_APPL")
+v("MM_UTIL")
+v("MM_OPSYS")
+v("MM_RECOVER")
+v("MM_NRECOV")
+v("MM_HALT")
+v("MM_ERROR")
+v("MM_WARNING")
+v("MM_INFO")
+v("MM_NOSEV")
+v("MM_PRINT")
+v("MM_CONSOLE")
+v("MM_OK")
+v("MM_NOTOK")
+v("MM_NOMSG")
+v("MM_NOCON")
+
+header("<fnmatch.h>")
+v("FNM_NOMATCH")
+v("FNM_PATHNAME")
+v("FNM_PERIOD")
+v("FNM_NOESCAPE")
+v("FNM_NOSYS")
+
+header("<ftw.h>")
+v("FTW_F")
+v("FTW_D")
+v("FTW_DNR")
+v("FTW_DP")
+v("FTW_NS")
+v("FTW_SL")
+v("FTW_SLN")
+v("FTW_PHYS")
+v("FTW_MOUNT")
+v("FTW_DEPTH")
+v("FTW_CHDIR")
+
+header("<glob.h>")
+v("GLOB_APPEND")
+v("GLOB_DOOFFS")
+v("GLOB_ERR")
+v("GLOB_MARK")
+v("GLOB_NOCHECK")
+v("GLOB_NOESCAPE")
+v("GLOB_NOSORT")
+v("GLOB_ABORTED")
+v("GLOB_NOMATCH")
+v("GLOB_NOSPACE")
+v("GLOB_NOSYS")
+
+header("<langinfo.h>")
+v("CODESET")
+v("D_T_FMT")
+v("D_FMT")
+v("T_FMT")
+v("T_FMT_AMPM")
+v("AM_STR")
+v("PM_STR")
+v("DAY_1")
+v("DAY_2")
+v("DAY_3")
+v("DAY_4")
+v("DAY_5")
+v("DAY_6")
+v("DAY_7")
+v("ABDAY_1")
+v("ABDAY_2")
+v("ABDAY_3")
+v("ABDAY_4")
+v("ABDAY_5")
+v("ABDAY_6")
+v("ABDAY_7")
+v("MON_1")
+v("MON_2")
+v("MON_3")
+v("MON_4")
+v("MON_5")
+v("MON_6")
+v("MON_7")
+v("MON_8")
+v("MON_9")
+v("MON_10")
+v("MON_11")
+v("MON_12")
+v("ABMON_1")
+v("ABMON_2")
+v("ABMON_3")
+v("ABMON_4")
+v("ABMON_5")
+v("ABMON_6")
+v("ABMON_7")
+v("ABMON_8")
+v("ABMON_9")
+v("ABMON_10")
+v("ABMON_11")
+v("ABMON_12")
+v("ERA")
+v("ERA_D_FMT")
+v("ERA_D_T_FMT")
+v("ERA_T_FMT")
+v("ALT_DIGITS")
+v("RADIXCHAR")
+v("THOUSEP")
+v("YESEXPR")
+v("NOEXPR")
+v("CRNCYSTR")
+
+header("<locale.h>")
+v("LC_ALL")
+v("LC_COLLATE")
+v("LC_CTYPE")
+v("LC_MESSAGES")
+v("LC_MONETARY")
+v("LC_NUMERIC")
+v("LC_TIME")
+
+header("<netdb.h>")
+v("IPPORT_RESERVED")
+v("HOST_NOT_FOUND")
+v("NO_DATA")
+v("NO_RECOVERY")
+v("TRY_AGAIN")
+v("AI_PASSIVE")
+v("AI_CANONNAME")
+v("AI_NUMERICHOST")
+v("AI_NUMERICSERV")
+v("AI_V4MAPPED")
+v("AI_ALL")
+v("AI_ADDRCONFIG")
+v("NI_NOFQDN")
+v("NI_NUMERICHOST")
+v("NI_NAMEREQD")
+v("NI_NUMERICSERV")
+v("NI_NUMERICSCOPE")
+v("NI_DGRAM")
+v("EAI_AGAIN")
+v("EAI_BADFLAGS")
+v("EAI_FAIL")
+v("EAI_FAMILY")
+v("EAI_MEMORY")
+v("EAI_NONAME")
+v("EAI_SERVICE")
+v("EAI_SOCKTYPE")
+v("EAI_SYSTEM")
+v("EAI_OVERFLOW")
+
+header("<net/if.h>")
+v("IF_NAMESIZE")
+
+header("<netinet/in.h>")
+v("IPPROTO_IP")
+v("IPPROTO_IPV6")
+v("IPPROTO_ICMP")
+v("IPPROTO_RAW")
+v("IPPROTO_TCP")
+v("IPPROTO_UDP")
+v("INADDR_ANY", "InAddrScalar")
+v("INADDR_LOOPBACK", "InAddrScalar")
+v("INADDR_BROADCAST", "InAddrScalar")
+v("INET_ADDRSTRLEN")
+v("INET6_ADDRSTRLEN")
+v("IPV6_JOIN_GROUP")
+v("IPV6_LEAVE_GROUP")
+v("IPV6_MULTICAST_HOPS")
+v("IPV6_MULTICAST_IF")
+v("IPV6_MULTICAST_LOOP")
+v("IPV6_UNICAST_HOPS")
+v("IPV6_V6ONLY")
+
+header("<netinet/tcp.h>")
+v("TCP_NODELAY")
+
+header("<nl_types.h>")
+v("NL_SETD")
+v("NL_CAT_LOCALE")
+
+header("<poll.h>")
+v("POLLIN", "cshort")
+v("POLLRDNORM", "cshort")
+v("POLLRDBAND", "cshort")
+v("POLLPRI", "cshort")
+v("POLLOUT", "cshort")
+v("POLLWRNORM", "cshort")
+v("POLLWRBAND", "cshort")
+v("POLLERR", "cshort")
+v("POLLHUP", "cshort")
+v("POLLNVAL", "cshort")
+
+header("<pthread.h>")
+v("PTHREAD_BARRIER_SERIAL_THREAD")
+v("PTHREAD_CANCEL_ASYNCHRONOUS")
+v("PTHREAD_CANCEL_ENABLE")
+v("PTHREAD_CANCEL_DEFERRED")
+v("PTHREAD_CANCEL_DISABLE")
   #v("PTHREAD_CANCELED")
   #v("PTHREAD_COND_INITIALIZER")
-  v("PTHREAD_CREATE_DETACHED")
-  v("PTHREAD_CREATE_JOINABLE")
-  v("PTHREAD_EXPLICIT_SCHED")
-  v("PTHREAD_INHERIT_SCHED")
-  v("PTHREAD_MUTEX_DEFAULT")
-  v("PTHREAD_MUTEX_ERRORCHECK")
+v("PTHREAD_CREATE_DETACHED")
+v("PTHREAD_CREATE_JOINABLE")
+v("PTHREAD_EXPLICIT_SCHED")
+v("PTHREAD_INHERIT_SCHED")
+v("PTHREAD_MUTEX_DEFAULT")
+v("PTHREAD_MUTEX_ERRORCHECK")
   #v("PTHREAD_MUTEX_INITIALIZER")
-  v("PTHREAD_MUTEX_NORMAL")
-  v("PTHREAD_MUTEX_RECURSIVE") #{.importc, header: "<pthread.h>".}: cint
-  #v("PTHREAD_ONCE_INIT") #{.importc, header: "<pthread.h>".}: cint
-  v("PTHREAD_PRIO_INHERIT") #{.importc, header: "<pthread.h>".}: cint
-  v("PTHREAD_PRIO_NONE") #{.importc, header: "<pthread.h>".}: cint
-  v("PTHREAD_PRIO_PROTECT") #{.importc, header: "<pthread.h>".}: cint
-  v("PTHREAD_PROCESS_SHARED") #{.importc, header: "<pthread.h>".}: cint
-  v("PTHREAD_PROCESS_PRIVATE") #{.importc, header: "<pthread.h>".}: cint
-  v("PTHREAD_SCOPE_PROCESS") #{.importc, header: "<pthread.h>".}: cint
-  v("PTHREAD_SCOPE_SYSTEM") #{.importc, header: "<pthread.h>".}: cint
-
-if header("<unistd.h>"):
-  v("_POSIX_ASYNC_IO")
-  v("_POSIX_PRIO_IO")
-  v("_POSIX_SYNC_IO")
-  v("F_OK")
-  v("R_OK")
-  v("W_OK")
-  v("X_OK")
-
-  v("_CS_PATH")
-  v("_CS_POSIX_V6_ILP32_OFF32_CFLAGS")
-  v("_CS_POSIX_V6_ILP32_OFF32_LDFLAGS")
-  v("_CS_POSIX_V6_ILP32_OFF32_LIBS")
-  v("_CS_POSIX_V6_ILP32_OFFBIG_CFLAGS")
-  v("_CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS")
-  v("_CS_POSIX_V6_ILP32_OFFBIG_LIBS")
-  v("_CS_POSIX_V6_LP64_OFF64_CFLAGS")
-  v("_CS_POSIX_V6_LP64_OFF64_LDFLAGS")
-  v("_CS_POSIX_V6_LP64_OFF64_LIBS")
-  v("_CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS")
-  v("_CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS")
-  v("_CS_POSIX_V6_LPBIG_OFFBIG_LIBS")
-  v("_CS_POSIX_V6_WIDTH_RESTRICTED_ENVS")
-
-  v("F_LOCK")
-  v("F_TEST") #{.importc: "F_TEST", header: "<unistd.h>".}: cint
-  v("F_TLOCK") #{.importc: "F_TLOCK", header: "<unistd.h>".}: cint
-  v("F_ULOCK") #{.importc: "F_ULOCK", header: "<unistd.h>".}: cint
-  v("_PC_2_SYMLINKS") #{.importc: "_PC_2_SYMLINKS", header: "<unistd.h>".}: cint
-  v("_PC_ALLOC_SIZE_MIN")
-  v("_PC_ASYNC_IO") #{.importc: "_PC_ASYNC_IO", header: "<unistd.h>".}: cint
-  v("_PC_CHOWN_RESTRICTED")
-  v("_PC_FILESIZEBITS") #{.importc: "_PC_FILESIZEBITS", header: "<unistd.h>".}: cint
-  v("_PC_LINK_MAX") #{.importc: "_PC_LINK_MAX", header: "<unistd.h>".}: cint
-  v("_PC_MAX_CANON") #{.importc: "_PC_MAX_CANON", header: "<unistd.h>".}: cint
-  v("_PC_MAX_INPUT") #{.importc: "_PC_MAX_INPUT", header: "<unistd.h>".}: cint
-  v("_PC_NAME_MAX") #{.importc: "_PC_NAME_MAX", header: "<unistd.h>".}: cint
-  v("_PC_NO_TRUNC") #{.importc: "_PC_NO_TRUNC", header: "<unistd.h>".}: cint
-  v("_PC_PATH_MAX") #{.importc: "_PC_PATH_MAX", header: "<unistd.h>".}: cint
-  v("_PC_PIPE_BUF") #{.importc: "_PC_PIPE_BUF", header: "<unistd.h>".}: cint
-  v("_PC_PRIO_IO") #{.importc: "_PC_PRIO_IO", header: "<unistd.h>".}: cint
-  v("_PC_REC_INCR_XFER_SIZE")
-  v("_PC_REC_MIN_XFER_SIZE")
-  v("_PC_REC_XFER_ALIGN")
-  v("_PC_SYMLINK_MAX") #{.importc: "_PC_SYMLINK_MAX", header: "<unistd.h>".}: cint
-  v("_PC_SYNC_IO") #{.importc: "_PC_SYNC_IO", header: "<unistd.h>".}: cint
-  v("_PC_VDISABLE") #{.importc: "_PC_VDISABLE", header: "<unistd.h>".}: cint
-  v("_SC_2_C_BIND") #{.importc: "_SC_2_C_BIND", header: "<unistd.h>".}: cint
-  v("_SC_2_C_DEV") #{.importc: "_SC_2_C_DEV", header: "<unistd.h>".}: cint
-  v("_SC_2_CHAR_TERM") #{.importc: "_SC_2_CHAR_TERM", header: "<unistd.h>".}: cint
-  v("_SC_2_FORT_DEV") #{.importc: "_SC_2_FORT_DEV", header: "<unistd.h>".}: cint
-  v("_SC_2_FORT_RUN") #{.importc: "_SC_2_FORT_RUN", header: "<unistd.h>".}: cint
-  v("_SC_2_LOCALEDEF") #{.importc: "_SC_2_LOCALEDEF", header: "<unistd.h>".}: cint
-  v("_SC_2_PBS") #{.importc: "_SC_2_PBS", header: "<unistd.h>".}: cint
-  v("_SC_2_PBS_ACCOUNTING")
-  v("_SC_2_PBS_CHECKPOINT")
-  v("_SC_2_PBS_LOCATE") #{.importc: "_SC_2_PBS_LOCATE", header: "<unistd.h>".}: cint
-  v("_SC_2_PBS_MESSAGE") #{.importc: "_SC_2_PBS_MESSAGE", header: "<unistd.h>".}: cint
-  v("_SC_2_PBS_TRACK") #{.importc: "_SC_2_PBS_TRACK", header: "<unistd.h>".}: cint
-  v("_SC_2_SW_DEV") #{.importc: "_SC_2_SW_DEV", header: "<unistd.h>".}: cint
-  v("_SC_2_UPE") #{.importc: "_SC_2_UPE", header: "<unistd.h>".}: cint
-  v("_SC_2_VERSION") #{.importc: "_SC_2_VERSION", header: "<unistd.h>".}: cint
-  v("_SC_ADVISORY_INFO") #{.importc: "_SC_ADVISORY_INFO", header: "<unistd.h>".}: cint
-  v("_SC_AIO_LISTIO_MAX")
-  v("_SC_AIO_MAX") #{.importc: "_SC_AIO_MAX", header: "<unistd.h>".}: cint
-  v("_SC_AIO_PRIO_DELTA_MAX")
-  v("_SC_ARG_MAX") #{.importc: "_SC_ARG_MAX", header: "<unistd.h>".}: cint
-  v("_SC_ASYNCHRONOUS_IO")
-  v("_SC_ATEXIT_MAX") #{.importc: "_SC_ATEXIT_MAX", header: "<unistd.h>".}: cint
-  v("_SC_BARRIERS") #{.importc: "_SC_BARRIERS", header: "<unistd.h>".}: cint
-  v("_SC_BC_BASE_MAX") #{.importc: "_SC_BC_BASE_MAX", header: "<unistd.h>".}: cint
-  v("_SC_BC_DIM_MAX") #{.importc: "_SC_BC_DIM_MAX", header: "<unistd.h>".}: cint
-  v("_SC_BC_SCALE_MAX") #{.importc: "_SC_BC_SCALE_MAX", header: "<unistd.h>".}: cint
-  v("_SC_BC_STRING_MAX") #{.importc: "_SC_BC_STRING_MAX", header: "<unistd.h>".}: cint
-  v("_SC_CHILD_MAX") #{.importc: "_SC_CHILD_MAX", header: "<unistd.h>".}: cint
-  v("_SC_CLK_TCK") #{.importc: "_SC_CLK_TCK", header: "<unistd.h>".}: cint
-  v("_SC_CLOCK_SELECTION")
-  v("_SC_COLL_WEIGHTS_MAX")
-  v("_SC_CPUTIME") #{.importc: "_SC_CPUTIME", header: "<unistd.h>".}: cint
-  v("_SC_DELAYTIMER_MAX")
-  v("_SC_EXPR_NEST_MAX") #{.importc: "_SC_EXPR_NEST_MAX", header: "<unistd.h>".}: cint
-  v("_SC_FSYNC") #{.importc: "_SC_FSYNC", header: "<unistd.h>".}: cint
-  v("_SC_GETGR_R_SIZE_MAX")
-  v("_SC_GETPW_R_SIZE_MAX")
-  v("_SC_HOST_NAME_MAX") #{.importc: "_SC_HOST_NAME_MAX", header: "<unistd.h>".}: cint
-  v("_SC_IOV_MAX") #{.importc: "_SC_IOV_MAX", header: "<unistd.h>".}: cint
-  v("_SC_IPV6") #{.importc: "_SC_IPV6", header: "<unistd.h>".}: cint
-  v("_SC_JOB_CONTROL") #{.importc: "_SC_JOB_CONTROL", header: "<unistd.h>".}: cint
-  v("_SC_LINE_MAX") #{.importc: "_SC_LINE_MAX", header: "<unistd.h>".}: cint
-  v("_SC_LOGIN_NAME_MAX")
-  v("_SC_MAPPED_FILES") #{.importc: "_SC_MAPPED_FILES", header: "<unistd.h>".}: cint
-  v("_SC_MEMLOCK") #{.importc: "_SC_MEMLOCK", header: "<unistd.h>".}: cint
-  v("_SC_MEMLOCK_RANGE") #{.importc: "_SC_MEMLOCK_RANGE", header: "<unistd.h>".}: cint
-  v("_SC_MEMORY_PROTECTION")
-  v("_SC_MESSAGE_PASSING")
-  v("_SC_MONOTONIC_CLOCK")
-  v("_SC_MQ_OPEN_MAX") #{.importc: "_SC_MQ_OPEN_MAX", header: "<unistd.h>".}: cint
-  v("_SC_MQ_PRIO_MAX") #{.importc: "_SC_MQ_PRIO_MAX", header: "<unistd.h>".}: cint
-  v("_SC_NGROUPS_MAX") #{.importc: "_SC_NGROUPS_MAX", header: "<unistd.h>".}: cint
-  v("_SC_OPEN_MAX") #{.importc: "_SC_OPEN_MAX", header: "<unistd.h>".}: cint
-  v("_SC_PAGE_SIZE") #{.importc: "_SC_PAGE_SIZE", header: "<unistd.h>".}: cint
-  v("_SC_PRIORITIZED_IO")
-  v("_SC_PRIORITY_SCHEDULING")
-  v("_SC_RAW_SOCKETS") #{.importc: "_SC_RAW_SOCKETS", header: "<unistd.h>".}: cint
-  v("_SC_RE_DUP_MAX") #{.importc: "_SC_RE_DUP_MAX", header: "<unistd.h>".}: cint
-  v("_SC_READER_WRITER_LOCKS")
-  v("_SC_REALTIME_SIGNALS")
-  v("_SC_REGEXP") #{.importc: "_SC_REGEXP", header: "<unistd.h>".}: cint
-  v("_SC_RTSIG_MAX") #{.importc: "_SC_RTSIG_MAX", header: "<unistd.h>".}: cint
-  v("_SC_SAVED_IDS") #{.importc: "_SC_SAVED_IDS", header: "<unistd.h>".}: cint
-  v("_SC_SEM_NSEMS_MAX") #{.importc: "_SC_SEM_NSEMS_MAX", header: "<unistd.h>".}: cint
-  v("_SC_SEM_VALUE_MAX") #{.importc: "_SC_SEM_VALUE_MAX", header: "<unistd.h>".}: cint
-  v("_SC_SEMAPHORES") #{.importc: "_SC_SEMAPHORES", header: "<unistd.h>".}: cint
-  v("_SC_SHARED_MEMORY_OBJECTS")
-  v("_SC_SHELL") #{.importc: "_SC_SHELL", header: "<unistd.h>".}: cint
-  v("_SC_SIGQUEUE_MAX") #{.importc: "_SC_SIGQUEUE_MAX", header: "<unistd.h>".}: cint
-  v("_SC_SPAWN") #{.importc: "_SC_SPAWN", header: "<unistd.h>".}: cint
-  v("_SC_SPIN_LOCKS") #{.importc: "_SC_SPIN_LOCKS", header: "<unistd.h>".}: cint
-  v("_SC_SPORADIC_SERVER")
-  v("_SC_SS_REPL_MAX") #{.importc: "_SC_SS_REPL_MAX", header: "<unistd.h>".}: cint
-  v("_SC_STREAM_MAX") #{.importc: "_SC_STREAM_MAX", header: "<unistd.h>".}: cint
-  v("_SC_SYMLOOP_MAX") #{.importc: "_SC_SYMLOOP_MAX", header: "<unistd.h>".}: cint
-  v("_SC_SYNCHRONIZED_IO")
-  v("_SC_THREAD_ATTR_STACKADDR")
-  v("_SC_THREAD_ATTR_STACKSIZE")
-  v("_SC_THREAD_CPUTIME")
-  v("_SC_THREAD_DESTRUCTOR_ITERATIONS")
-  v("_SC_THREAD_KEYS_MAX")
-  v("_SC_THREAD_PRIO_INHERIT")
-  v("_SC_THREAD_PRIO_PROTECT")
-  v("_SC_THREAD_PRIORITY_SCHEDULING")
-  v("_SC_THREAD_PROCESS_SHARED")
-  v("_SC_THREAD_SAFE_FUNCTIONS")
-  v("_SC_THREAD_SPORADIC_SERVER")
-  v("_SC_THREAD_STACK_MIN")
-  v("_SC_THREAD_THREADS_MAX")
-  v("_SC_THREADS") #{.importc: "_SC_THREADS", header: "<unistd.h>".}: cint
-  v("_SC_TIMEOUTS") #{.importc: "_SC_TIMEOUTS", header: "<unistd.h>".}: cint
-  v("_SC_TIMER_MAX") #{.importc: "_SC_TIMER_MAX", header: "<unistd.h>".}: cint
-  v("_SC_TIMERS") #{.importc: "_SC_TIMERS", header: "<unistd.h>".}: cint
-  v("_SC_TRACE") #{.importc: "_SC_TRACE", header: "<unistd.h>".}: cint
-  v("_SC_TRACE_EVENT_FILTER")
-  v("_SC_TRACE_EVENT_NAME_MAX")
-  v("_SC_TRACE_INHERIT") #{.importc: "_SC_TRACE_INHERIT", header: "<unistd.h>".}: cint
-  v("_SC_TRACE_LOG") #{.importc: "_SC_TRACE_LOG", header: "<unistd.h>".}: cint
-  v("_SC_TRACE_NAME_MAX")
-  v("_SC_TRACE_SYS_MAX") #{.importc: "_SC_TRACE_SYS_MAX", header: "<unistd.h>".}: cint
-  v("_SC_TRACE_USER_EVENT_MAX")
-  v("_SC_TTY_NAME_MAX") #{.importc: "_SC_TTY_NAME_MAX", header: "<unistd.h>".}: cint
-  v("_SC_TYPED_MEMORY_OBJECTS")
-  v("_SC_TZNAME_MAX") #{.importc: "_SC_TZNAME_MAX", header: "<unistd.h>".}: cint
-  v("_SC_V6_ILP32_OFF32")
-  v("_SC_V6_ILP32_OFFBIG")
-  v("_SC_V6_LP64_OFF64") #{.importc: "_SC_V6_LP64_OFF64", header: "<unistd.h>".}: cint
-  v("_SC_V6_LPBIG_OFFBIG")
-  v("_SC_VERSION") #{.importc: "_SC_VERSION", header: "<unistd.h>".}: cint
-  v("_SC_XBS5_ILP32_OFF32")
-  v("_SC_XBS5_ILP32_OFFBIG")
-  v("_SC_XBS5_LP64_OFF64")
-  v("_SC_XBS5_LPBIG_OFFBIG")
-  v("_SC_XOPEN_CRYPT") #{.importc: "_SC_XOPEN_CRYPT", header: "<unistd.h>".}: cint
-  v("_SC_XOPEN_ENH_I18N")
-  v("_SC_XOPEN_LEGACY") #{.importc: "_SC_XOPEN_LEGACY", header: "<unistd.h>".}: cint
-  v("_SC_XOPEN_REALTIME")
-  v("_SC_XOPEN_REALTIME_THREADS")
-  v("_SC_XOPEN_SHM") #{.importc: "_SC_XOPEN_SHM", header: "<unistd.h>".}: cint
-  v("_SC_XOPEN_STREAMS") #{.importc: "_SC_XOPEN_STREAMS", header: "<unistd.h>".}: cint
-  v("_SC_XOPEN_UNIX") #{.importc: "_SC_XOPEN_UNIX", header: "<unistd.h>".}: cint
-  v("_SC_XOPEN_VERSION") #{.importc: "_SC_XOPEN_VERSION", header: "<unistd.h>".}: cint
-
-  v("SEEK_SET") #{.importc, header: "<unistd.h>".}: cint
-  v("SEEK_CUR") #{.importc, header: "<unistd.h>".}: cint
-  v("SEEK_END") #{.importc, header: "<unistd.h>".}: cint
-
-
-if header("<semaphore.h>"):
-  v("SEM_FAILED", pointer)
-
-if header("<sys/ipc.h>"):
-  v("IPC_CREAT") #{.importc, header: .}: cint
-  v("IPC_EXCL") #{.importc, header: "<sys/ipc.h>".}: cint
-  v("IPC_NOWAIT") #{.importc, header: "<sys/ipc.h>".}: cint
-  v("IPC_PRIVATE") #{.importc, header: "<sys/ipc.h>".}: cint
-  v("IPC_RMID") #{.importc, header: "<sys/ipc.h>".}: cint
-  v("IPC_SET") #{.importc, header: "<sys/ipc.h>".}: cint
-  v("IPC_STAT") #{.importc, header: "<sys/ipc.h>".}: cint
-
-if header("<sys/stat.h>"):
-  v("S_IFMT") #{.importc, header: .}: cint
-  v("S_IFBLK") #{.importc, header: "<sys/stat.h>".}: cint
-  v("S_IFCHR") #{.importc, header: "<sys/stat.h>".}: cint
-  v("S_IFIFO") #{.importc, header: "<sys/stat.h>".}: cint
-  v("S_IFREG") #{.importc, header: "<sys/stat.h>".}: cint
-  v("S_IFDIR") #{.importc, header: "<sys/stat.h>".}: cint
-  v("S_IFLNK") #{.importc, header: "<sys/stat.h>".}: cint
-  v("S_IFSOCK") #{.importc, header: "<sys/stat.h>".}: cint
-  v("S_IRWXU") #{.importc, header: "<sys/stat.h>".}: cint
-  v("S_IRUSR") #{.importc, header: "<sys/stat.h>".}: cint
-  v("S_IWUSR") #{.importc, header: "<sys/stat.h>".}: cint
-  v("S_IXUSR") #{.importc, header: "<sys/stat.h>".}: cint
-  v("S_IRWXG") #{.importc, header: "<sys/stat.h>".}: cint
-  v("S_IRGRP") #{.importc, header: "<sys/stat.h>".}: cint
-  v("S_IWGRP") #{.importc, header: "<sys/stat.h>".}: cint
-  v("S_IXGRP") #{.importc, header: "<sys/stat.h>".}: cint
-  v("S_IRWXO") #{.importc, header: "<sys/stat.h>".}: cint
-  v("S_IROTH") #{.importc, header: "<sys/stat.h>".}: cint
-  v("S_IWOTH") #{.importc, header: "<sys/stat.h>".}: cint
-  v("S_IXOTH") #{.importc, header: "<sys/stat.h>".}: cint
-  v("S_ISUID") #{.importc, header: "<sys/stat.h>".}: cint
-  v("S_ISGID") #{.importc, header: "<sys/stat.h>".}: cint
-  v("S_ISVTX") #{.importc, header: "<sys/stat.h>".}: cint
-
-if header("<sys/statvfs.h>"):
-  v("ST_RDONLY") #{.importc, header: .}: cint
-  v("ST_NOSUID") #{.importc, header: "<sys/statvfs.h>".}: cint
-
-if header("<sys/mman.h>"):
-  v("PROT_READ") #{.importc, header: .}: cint
-  v("PROT_WRITE") #{.importc, header: "<sys/mman.h>".}: cint
-  v("PROT_EXEC") #{.importc, header: "<sys/mman.h>".}: cint
-  v("PROT_NONE") #{.importc, header: "<sys/mman.h>".}: cint
-  v("MAP_SHARED") #{.importc, header: "<sys/mman.h>".}: cint
-  v("MAP_PRIVATE") #{.importc, header: "<sys/mman.h>".}: cint
-  v("MAP_FIXED") #{.importc, header: "<sys/mman.h>".}: cint
-  v("MS_ASYNC") #{.importc, header: "<sys/mman.h>".}: cint
-  v("MS_SYNC") #{.importc, header: "<sys/mman.h>".}: cint
-  v("MS_INVALIDATE") #{.importc, header: "<sys/mman.h>".}: cint
-  v("MCL_CURRENT") #{.importc, header: "<sys/mman.h>".}: cint
-  v("MCL_FUTURE") #{.importc, header: "<sys/mman.h>".}: cint
-
-  v("MAP_FAILED", pointer)
-  v("POSIX_MADV_NORMAL") #{.importc, header: "<sys/mman.h>".}: cint
-  v("POSIX_MADV_SEQUENTIAL") #{.importc, header: "<sys/mman.h>".}: cint
-  v("POSIX_MADV_RANDOM") #{.importc, header: "<sys/mman.h>".}: cint
-  v("POSIX_MADV_WILLNEED") #{.importc, header: "<sys/mman.h>".}: cint
-  v("POSIX_MADV_DONTNEED") #{.importc, header: "<sys/mman.h>".}: cint
-  v("POSIX_TYPED_MEM_ALLOCATE") #{.importc, header: "<sys/mman.h>".}: cint
-  v("POSIX_TYPED_MEM_ALLOCATE_CONTIG") #{.importc, header: "<sys/mman.h>".}: cint
-  v("POSIX_TYPED_MEM_MAP_ALLOCATABLE") #{.importc, header: "<sys/mman.h>".}: cint
-
-if header("<time.h>"):
-  v("CLOCKS_PER_SEC", clong)
-  v("CLOCK_PROCESS_CPUTIME_ID")
-  v("CLOCK_THREAD_CPUTIME_ID")
-  v("CLOCK_REALTIME")
-  v("TIMER_ABSTIME")
-  v("CLOCK_MONOTONIC")
-
-if header("<sys/wait.h>"):
-  v("WNOHANG") #{.importc, header: .}: cint
-  v("WUNTRACED") #{.importc, header: "<sys/wait.h>".}: cint
+v("PTHREAD_MUTEX_NORMAL")
+v("PTHREAD_MUTEX_RECURSIVE")
+  #v("PTHREAD_ONCE_INIT")
+v("PTHREAD_PRIO_INHERIT")
+v("PTHREAD_PRIO_NONE")
+v("PTHREAD_PRIO_PROTECT")
+v("PTHREAD_PROCESS_SHARED")
+v("PTHREAD_PROCESS_PRIVATE")
+v("PTHREAD_SCOPE_PROCESS")
+v("PTHREAD_SCOPE_SYSTEM")
+
+header("<sched.h>")
+v("SCHED_FIFO")
+v("SCHED_RR")
+v("SCHED_SPORADIC")
+v("SCHED_OTHER")
+
+header("<semaphore.h>")
+v("SEM_FAILED", "pointer")
+
+header("<signal.h>")
+v("SIGEV_NONE")
+v("SIGEV_SIGNAL")
+v("SIGEV_THREAD")
+v("SIGABRT")
+v("SIGALRM")
+v("SIGBUS")
+v("SIGCHLD")
+v("SIGCONT")
+v("SIGFPE")
+v("SIGHUP")
+v("SIGILL")
+v("SIGINT")
+v("SIGKILL")
+v("SIGPIPE")
+v("SIGQUIT")
+v("SIGSEGV")
+v("SIGSTOP")
+v("SIGTERM")
+v("SIGTSTP")
+v("SIGTTIN")
+v("SIGTTOU")
+v("SIGUSR1")
+v("SIGUSR2")
+v("SIGPOLL")
+v("SIGPROF")
+v("SIGSYS")
+v("SIGTRAP")
+v("SIGURG")
+v("SIGVTALRM")
+v("SIGXCPU")
+v("SIGXFSZ")
+v("SA_NOCLDSTOP")
+v("SIG_BLOCK")
+v("SIG_UNBLOCK")
+v("SIG_SETMASK")
+v("SA_ONSTACK")
+v("SA_RESETHAND")
+v("SA_RESTART")
+v("SA_SIGINFO")
+v("SA_NOCLDWAIT")
+v("SA_NODEFER")
+v("SS_ONSTACK")
+v("SS_DISABLE")
+v("MINSIGSTKSZ")
+v("SIGSTKSZ")
+
+header("<sys/ipc.h>")
+v("IPC_CREAT")
+v("IPC_EXCL")
+v("IPC_NOWAIT")
+v("IPC_PRIVATE")
+v("IPC_RMID")
+v("IPC_SET")
+v("IPC_STAT")
+
+header("<sys/mman.h>")
+v("PROT_READ")
+v("PROT_WRITE")
+v("PROT_EXEC")
+v("PROT_NONE")
+v("MAP_SHARED")
+v("MAP_PRIVATE")
+v("MAP_FIXED")
+v("MS_ASYNC")
+v("MS_SYNC")
+v("MS_INVALIDATE")
+v("MCL_CURRENT")
+v("MCL_FUTURE")
+v("MAP_FAILED", "pointer")
+v("POSIX_MADV_NORMAL")
+v("POSIX_MADV_SEQUENTIAL")
+v("POSIX_MADV_RANDOM")
+v("POSIX_MADV_WILLNEED")
+v("POSIX_MADV_DONTNEED")
+v("POSIX_TYPED_MEM_ALLOCATE")
+v("POSIX_TYPED_MEM_ALLOCATE_CONTIG")
+v("POSIX_TYPED_MEM_MAP_ALLOCATABLE")
+v("MAP_POPULATE", no_other = true)
+
+header("<sys/select.h>")
+v("FD_SETSIZE")
+
+header("<sys/socket.h>")
+v("MSG_CTRUNC")
+v("MSG_DONTROUTE")
+v("MSG_EOR")
+v("MSG_OOB")
+v("SCM_RIGHTS")
+v("SO_ACCEPTCONN")
+v("SO_BROADCAST")
+v("SO_DEBUG")
+v("SO_DONTROUTE")
+v("SO_ERROR")
+v("SO_KEEPALIVE")
+v("SO_LINGER")
+v("SO_OOBINLINE")
+v("SO_RCVBUF")
+v("SO_RCVLOWAT")
+v("SO_RCVTIMEO")
+v("SO_REUSEADDR")
+v("SO_SNDBUF")
+v("SO_SNDLOWAT")
+v("SO_SNDTIMEO")
+v("SO_TYPE")
+v("SOCK_DGRAM")
+v("SOCK_RAW")
+v("SOCK_SEQPACKET")
+v("SOCK_STREAM")
+v("SOL_SOCKET")
+v("SOMAXCONN")
+v("SO_REUSEPORT", no_other = true)
+v("MSG_NOSIGNAL", no_other = true)
+v("MSG_PEEK")
+v("MSG_TRUNC")
+v("MSG_WAITALL")
+v("AF_INET", "TSa_Family")
+v("AF_INET6", "TSa_Family")
+v("AF_UNIX", "TSa_Family")
+v("AF_UNSPEC", "TSa_Family")
+v("SHUT_RD")
+v("SHUT_RDWR")
+v("SHUT_WR")
+
+header("<sys/stat.h>")
+v("S_IFBLK")
+v("S_IFCHR")
+v("S_IFDIR")
+v("S_IFIFO")
+v("S_IFLNK")
+v("S_IFMT")
+v("S_IFREG")
+v("S_IFSOCK")
+v("S_IRGRP")
+v("S_IROTH")
+v("S_IRUSR")
+v("S_IRWXG")
+v("S_IRWXO")
+v("S_IRWXU")
+v("S_ISGID")
+v("S_ISUID")
+v("S_ISVTX")
+v("S_IWGRP")
+v("S_IWOTH")
+v("S_IWUSR")
+v("S_IXGRP")
+v("S_IXOTH")
+v("S_IXUSR")
+
+header("<sys/statvfs.h>")
+v("ST_RDONLY")
+v("ST_NOSUID")
+
+header("<sys/wait.h>")
+v("WNOHANG")
+v("WUNTRACED")
   #v("WEXITSTATUS")
-  #v("WIFCONTINUED")
-  #v("WIFEXITED")
-  #v("WIFSIGNALED")
-  #v("WIFSTOPPED")
   #v("WSTOPSIG")
   #v("WTERMSIG")
-  v("WEXITED") #{.importc, header: "<sys/wait.h>".}: cint
-  v("WSTOPPED") #{.importc, header: "<sys/wait.h>".}: cint
-  v("WCONTINUED") #{.importc, header: "<sys/wait.h>".}: cint
-  v("WNOWAIT") #{.importc, header: "<sys/wait.h>".}: cint
-  v("P_ALL") #{.importc, header: "<sys/wait.h>".}: cint
-  v("P_PID") #{.importc, header: "<sys/wait.h>".}: cint
-  v("P_PGID") #{.importc, header: "<sys/wait.h>".}: cint
-
-if header("<signal.h>"):
-  v("SIGEV_NONE") #{.importc, header: "<signal.h>".}: cint
-  v("SIGEV_SIGNAL") #{.importc, header: "<signal.h>".}: cint
-  v("SIGEV_THREAD") #{.importc, header: "<signal.h>".}: cint
-  v("SIGABRT") #{.importc, header: "<signal.h>".}: cint
-  v("SIGALRM") #{.importc, header: "<signal.h>".}: cint
-  v("SIGBUS") #{.importc, header: "<signal.h>".}: cint
-  v("SIGCHLD") #{.importc, header: "<signal.h>".}: cint
-  v("SIGCONT") #{.importc, header: "<signal.h>".}: cint
-  v("SIGFPE") #{.importc, header: "<signal.h>".}: cint
-  v("SIGHUP") #{.importc, header: "<signal.h>".}: cint
-  v("SIGILL") #{.importc, header: "<signal.h>".}: cint
-  v("SIGINT") #{.importc, header: "<signal.h>".}: cint
-  v("SIGKILL") #{.importc, header: "<signal.h>".}: cint
-  v("SIGPIPE") #{.importc, header: "<signal.h>".}: cint
-  v("SIGQUIT") #{.importc, header: "<signal.h>".}: cint
-  v("SIGSEGV") #{.importc, header: "<signal.h>".}: cint
-  v("SIGSTOP") #{.importc, header: "<signal.h>".}: cint
-  v("SIGTERM") #{.importc, header: "<signal.h>".}: cint
-  v("SIGTSTP") #{.importc, header: "<signal.h>".}: cint
-  v("SIGTTIN") #{.importc, header: "<signal.h>".}: cint
-  v("SIGTTOU") #{.importc, header: "<signal.h>".}: cint
-  v("SIGUSR1") #{.importc, header: "<signal.h>".}: cint
-  v("SIGUSR2") #{.importc, header: "<signal.h>".}: cint
-  v("SIGPOLL") #{.importc, header: "<signal.h>".}: cint
-  v("SIGPROF") #{.importc, header: "<signal.h>".}: cint
-  v("SIGSYS") #{.importc, header: "<signal.h>".}: cint
-  v("SIGTRAP") #{.importc, header: "<signal.h>".}: cint
-  v("SIGURG") #{.importc, header: "<signal.h>".}: cint
-  v("SIGVTALRM") #{.importc, header: "<signal.h>".}: cint
-  v("SIGXCPU") #{.importc, header: "<signal.h>".}: cint
-  v("SIGXFSZ") #{.importc, header: "<signal.h>".}: cint
-  v("SA_NOCLDSTOP") #{.importc, header: "<signal.h>".}: cint
-  v("SIG_BLOCK") #{.importc, header: "<signal.h>".}: cint
-  v("SIG_UNBLOCK") #{.importc, header: "<signal.h>".}: cint
-  v("SIG_SETMASK") #{.importc, header: "<signal.h>".}: cint
-  v("SA_ONSTACK") #{.importc, header: "<signal.h>".}: cint
-  v("SA_RESETHAND") #{.importc, header: "<signal.h>".}: cint
-  v("SA_RESTART") #{.importc, header: "<signal.h>".}: cint
-  v("SA_SIGINFO") #{.importc, header: "<signal.h>".}: cint
-  v("SA_NOCLDWAIT") #{.importc, header: "<signal.h>".}: cint
-  v("SA_NODEFER") #{.importc, header: "<signal.h>".}: cint
-  v("SS_ONSTACK") #{.importc, header: "<signal.h>".}: cint
-  v("SS_DISABLE") #{.importc, header: "<signal.h>".}: cint
-  v("MINSIGSTKSZ") #{.importc, header: "<signal.h>".}: cint
-  v("SIGSTKSZ") #{.importc, header: "<signal.h>".}: cint
-
-if header("<nl_types.h>"):
-  v("NL_SETD") #{.importc, header: .}: cint
-  v("NL_CAT_LOCALE") #{.importc, header: "<nl_types.h>".}: cint
-
-if header("<sched.h>"):
-  v("SCHED_FIFO")
-  v("SCHED_RR")
-  v("SCHED_SPORADIC")
-  v("SCHED_OTHER")
-
-if header("<sys/select.h>"):
-  v("FD_SETSIZE")
-
-if header("<net/if.h>"):
-  v("IF_NAMESIZE")
-
-if header("<sys/socket.h>"):
-  v("SCM_RIGHTS") #{.importc, header: .}: cint
-  v("SOCK_DGRAM") #{.importc, header: "<sys/socket.h>".}: cint
-  v("SOCK_RAW") #{.importc, header: "<sys/socket.h>".}: cint
-  v("SOCK_SEQPACKET") #{.importc, header: "<sys/socket.h>".}: cint
-  v("SOCK_STREAM") #{.importc, header: "<sys/socket.h>".}: cint
-  v("SOL_SOCKET") #{.importc, header: "<sys/socket.h>".}: cint
-  v("SO_ACCEPTCONN") #{.importc, header: "<sys/socket.h>".}: cint
-  v("SO_BROADCAST") #{.importc, header: "<sys/socket.h>".}: cint
-  v("SO_DEBUG") #{.importc, header: "<sys/socket.h>".}: cint
-  v("SO_DONTROUTE") #{.importc, header: "<sys/socket.h>".}: cint
-  v("SO_ERROR") #{.importc, header: "<sys/socket.h>".}: cint
-  v("SO_KEEPALIVE") #{.importc, header: "<sys/socket.h>".}: cint
-  v("SO_LINGER") #{.importc, header: "<sys/socket.h>".}: cint
-  v("SO_OOBINLINE") #{.importc, header: "<sys/socket.h>".}: cint
-  v("SO_RCVBUF") #{.importc, header: "<sys/socket.h>".}: cint
-  v("SO_RCVLOWAT") #{.importc, header: "<sys/socket.h>".}: cint
-  v("SO_RCVTIMEO") #{.importc, header: "<sys/socket.h>".}: cint
-  v("SO_REUSEADDR") #{.importc, header: "<sys/socket.h>".}: cint
-  v("SO_SNDBUF") #{.importc, header: "<sys/socket.h>".}: cint
-  v("SO_SNDLOWAT") #{.importc, header: "<sys/socket.h>".}: cint
-  v("SO_SNDTIMEO") #{.importc, header: "<sys/socket.h>".}: cint
-  v("SO_TYPE") #{.importc, header: "<sys/socket.h>".}: cint
-  v("SOMAXCONN") #{.importc, header: "<sys/socket.h>".}: cint
-  v("MSG_CTRUNC") #{.importc, header: "<sys/socket.h>".}: cint
-  v("MSG_DONTROUTE") #{.importc, header: "<sys/socket.h>".}: cint
-  v("MSG_EOR") #{.importc, header: "<sys/socket.h>".}: cint
-  v("MSG_OOB") #{.importc, header: "<sys/socket.h>".}: cint
-  v("MSG_PEEK") #{.importc, header: "<sys/socket.h>".}: cint
-  v("MSG_TRUNC") #{.importc, header: "<sys/socket.h>".}: cint
-  v("MSG_WAITALL") #{.importc, header: "<sys/socket.h>".}: cint
-  v("AF_INET") #{.importc, header: "<sys/socket.h>".}: cint
-  v("AF_INET6") #{.importc, header: "<sys/socket.h>".}: cint
-  v("AF_UNIX") #{.importc, header: "<sys/socket.h>".}: cint
-  v("AF_UNSPEC") #{.importc, header: "<sys/socket.h>".}: cint
-  v("SHUT_RD") #{.importc, header: "<sys/socket.h>".}: cint
-  v("SHUT_RDWR") #{.importc, header: "<sys/socket.h>".}: cint
-  v("SHUT_WR") #{.importc, header: "<sys/socket.h>".}: cint
-
-if header("<netinet/in.h>"):
-  v("IPPROTO_IP") #{.importc, header: .}: cint
-  v("IPPROTO_IPV6") #{.importc, header: "<netinet/in.h>".}: cint
-  v("IPPROTO_ICMP") #{.importc, header: "<netinet/in.h>".}: cint
-  v("IPPROTO_RAW") #{.importc, header: "<netinet/in.h>".}: cint
-  v("IPPROTO_TCP") #{.importc, header: "<netinet/in.h>".}: cint
-  v("IPPROTO_UDP") #{.importc, header: "<netinet/in.h>".}: cint
-  v("INADDR_ANY") #{.importc, header: "<netinet/in.h>".}: TinAddrScalar
-  v("INADDR_BROADCAST") #{.importc, header: "<netinet/in.h>".}: TinAddrScalar
-  v("INET_ADDRSTRLEN") #{.importc, header: "<netinet/in.h>".}: cint
-
-  v("IPV6_JOIN_GROUP") #{.importc, header: "<netinet/in.h>".}: cint
-  v("IPV6_LEAVE_GROUP") #{.importc, header: "<netinet/in.h>".}: cint
-  v("IPV6_MULTICAST_HOPS") #{.importc, header: "<netinet/in.h>".}: cint
-  v("IPV6_MULTICAST_IF") #{.importc, header: "<netinet/in.h>".}: cint
-  v("IPV6_MULTICAST_LOOP") #{.importc, header: "<netinet/in.h>".}: cint
-  v("IPV6_UNICAST_HOPS") #{.importc, header: "<netinet/in.h>".}: cint
-  v("IPV6_V6ONLY") #{.importc, header: "<netinet/in.h>".}: cint
-
-  v("TCP_NODELAY") #{.importc, header: "<netinet/tcp.h>".}: cint
-
-if header("<netdb.h>"):
-  v("IPPORT_RESERVED")
-
-  v("HOST_NOT_FOUND")
-  v("NO_DATA")
-  v("NO_RECOVERY")
-  v("TRY_AGAIN")
-
-  v("AI_PASSIVE")
-  v("AI_CANONNAME")
-  v("AI_NUMERICHOST")
-  v("AI_NUMERICSERV")
-  v("AI_V4MAPPED")
-  v("AI_ALL")
-  v("AI_ADDRCONFIG")
-
-  v("NI_NOFQDN")
-  v("NI_NUMERICHOST")
-  v("NI_NAMEREQD")
-  v("NI_NUMERICSERV")
-  v("NI_NUMERICSCOPE")
-  v("NI_DGRAM")
-  v("EAI_AGAIN")
-  v("EAI_BADFLAGS")
-  v("EAI_FAIL")
-  v("EAI_FAMILY")
-  v("EAI_MEMORY")
-  v("EAI_NONAME")
-  v("EAI_SERVICE")
-  v("EAI_SOCKTYPE")
-  v("EAI_SYSTEM")
-  v("EAI_OVERFLOW")
-
-if header("<poll.h>"):
-  v("POLLIN", cshort)
-  v("POLLRDNORM", cshort)
-  v("POLLRDBAND", cshort)
-  v("POLLPRI", cshort)
-  v("POLLOUT", cshort)
-  v("POLLWRNORM", cshort)
-  v("POLLWRBAND", cshort)
-  v("POLLERR", cshort)
-  v("POLLHUP", cshort)
-  v("POLLNVAL", cshort)
-
-if header("<spawn.h>"):
-  v("POSIX_SPAWN_RESETIDS")
-  v("POSIX_SPAWN_SETPGROUP")
-  v("POSIX_SPAWN_SETSCHEDPARAM")
-  v("POSIX_SPAWN_SETSCHEDULER")
-  v("POSIX_SPAWN_SETSIGDEF")
-  v("POSIX_SPAWN_SETSIGMASK")
-
-if header("<stdio.h>"):
-  v "_IOFBF"
-  v "_IONBF"
+v("WEXITED")
+v("WSTOPPED")
+v("WCONTINUED")
+v("WNOWAIT")
+v("P_ALL")
+v("P_PID")
+v("P_PGID")
+
+header("<spawn.h>")
+v("POSIX_SPAWN_RESETIDS")
+v("POSIX_SPAWN_SETPGROUP")
+v("POSIX_SPAWN_SETSCHEDPARAM")
+v("POSIX_SPAWN_SETSCHEDULER")
+v("POSIX_SPAWN_SETSIGDEF")
+v("POSIX_SPAWN_SETSIGMASK")
+v("POSIX_SPAWN_USEVFORK", no_other = true)
+
+header("<stdio.h>")
+v("_IOFBF")
+v("_IONBF")
+
+header("<time.h>")
+v("CLOCKS_PER_SEC", "clong")
+v("CLOCK_PROCESS_CPUTIME_ID")
+v("CLOCK_THREAD_CPUTIME_ID")
+v("CLOCK_REALTIME")
+v("TIMER_ABSTIME")
+v("CLOCK_MONOTONIC")
+
+header("<unistd.h>")
+v("_POSIX_ASYNC_IO")
+v("_POSIX_PRIO_IO")
+v("_POSIX_SYNC_IO")
+v("F_OK")
+v("R_OK")
+v("W_OK")
+v("X_OK")
+v("_CS_PATH")
+v("_CS_POSIX_V6_ILP32_OFF32_CFLAGS")
+v("_CS_POSIX_V6_ILP32_OFF32_LDFLAGS")
+v("_CS_POSIX_V6_ILP32_OFF32_LIBS")
+v("_CS_POSIX_V6_ILP32_OFFBIG_CFLAGS")
+v("_CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS")
+v("_CS_POSIX_V6_ILP32_OFFBIG_LIBS")
+v("_CS_POSIX_V6_LP64_OFF64_CFLAGS")
+v("_CS_POSIX_V6_LP64_OFF64_LDFLAGS")
+v("_CS_POSIX_V6_LP64_OFF64_LIBS")
+v("_CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS")
+v("_CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS")
+v("_CS_POSIX_V6_LPBIG_OFFBIG_LIBS")
+v("_CS_POSIX_V6_WIDTH_RESTRICTED_ENVS")
+v("F_LOCK")
+v("F_TEST")
+v("F_TLOCK")
+v("F_ULOCK")
+v("_PC_2_SYMLINKS")
+v("_PC_ALLOC_SIZE_MIN")
+v("_PC_ASYNC_IO")
+v("_PC_CHOWN_RESTRICTED")
+v("_PC_FILESIZEBITS")
+v("_PC_LINK_MAX")
+v("_PC_MAX_CANON")
+v("_PC_MAX_INPUT")
+v("_PC_NAME_MAX")
+v("_PC_NO_TRUNC")
+v("_PC_PATH_MAX")
+v("_PC_PIPE_BUF")
+v("_PC_PRIO_IO")
+v("_PC_REC_INCR_XFER_SIZE")
+v("_PC_REC_MIN_XFER_SIZE")
+v("_PC_REC_XFER_ALIGN")
+v("_PC_SYMLINK_MAX")
+v("_PC_SYNC_IO")
+v("_PC_VDISABLE")
+v("_SC_2_C_BIND")
+v("_SC_2_C_DEV")
+v("_SC_2_CHAR_TERM")
+v("_SC_2_FORT_DEV")
+v("_SC_2_FORT_RUN")
+v("_SC_2_LOCALEDEF")
+v("_SC_2_PBS")
+v("_SC_2_PBS_ACCOUNTING")
+v("_SC_2_PBS_CHECKPOINT")
+v("_SC_2_PBS_LOCATE")
+v("_SC_2_PBS_MESSAGE")
+v("_SC_2_PBS_TRACK")
+v("_SC_2_SW_DEV")
+v("_SC_2_UPE")
+v("_SC_2_VERSION")
+v("_SC_ADVISORY_INFO")
+v("_SC_AIO_LISTIO_MAX")
+v("_SC_AIO_MAX")
+v("_SC_AIO_PRIO_DELTA_MAX")
+v("_SC_ARG_MAX")
+v("_SC_ASYNCHRONOUS_IO")
+v("_SC_ATEXIT_MAX")
+v("_SC_BARRIERS")
+v("_SC_BC_BASE_MAX")
+v("_SC_BC_DIM_MAX")
+v("_SC_BC_SCALE_MAX")
+v("_SC_BC_STRING_MAX")
+v("_SC_CHILD_MAX")
+v("_SC_CLK_TCK")
+v("_SC_CLOCK_SELECTION")
+v("_SC_COLL_WEIGHTS_MAX")
+v("_SC_CPUTIME")
+v("_SC_DELAYTIMER_MAX")
+v("_SC_EXPR_NEST_MAX")
+v("_SC_FSYNC")
+v("_SC_GETGR_R_SIZE_MAX")
+v("_SC_GETPW_R_SIZE_MAX")
+v("_SC_HOST_NAME_MAX")
+v("_SC_IOV_MAX")
+v("_SC_IPV6")
+v("_SC_JOB_CONTROL")
+v("_SC_LINE_MAX")
+v("_SC_LOGIN_NAME_MAX")
+v("_SC_MAPPED_FILES")
+v("_SC_MEMLOCK")
+v("_SC_MEMLOCK_RANGE")
+v("_SC_MEMORY_PROTECTION")
+v("_SC_MESSAGE_PASSING")
+v("_SC_MONOTONIC_CLOCK")
+v("_SC_MQ_OPEN_MAX")
+v("_SC_MQ_PRIO_MAX")
+v("_SC_NGROUPS_MAX")
+v("_SC_OPEN_MAX")
+v("_SC_PAGE_SIZE")
+v("_SC_PRIORITIZED_IO")
+v("_SC_PRIORITY_SCHEDULING")
+v("_SC_RAW_SOCKETS")
+v("_SC_RE_DUP_MAX")
+v("_SC_READER_WRITER_LOCKS")
+v("_SC_REALTIME_SIGNALS")
+v("_SC_REGEXP")
+v("_SC_RTSIG_MAX")
+v("_SC_SAVED_IDS")
+v("_SC_SEM_NSEMS_MAX")
+v("_SC_SEM_VALUE_MAX")
+v("_SC_SEMAPHORES")
+v("_SC_SHARED_MEMORY_OBJECTS")
+v("_SC_SHELL")
+v("_SC_SIGQUEUE_MAX")
+v("_SC_SPAWN")
+v("_SC_SPIN_LOCKS")
+v("_SC_SPORADIC_SERVER")
+v("_SC_SS_REPL_MAX")
+v("_SC_STREAM_MAX")
+v("_SC_SYMLOOP_MAX")
+v("_SC_SYNCHRONIZED_IO")
+v("_SC_THREAD_ATTR_STACKADDR")
+v("_SC_THREAD_ATTR_STACKSIZE")
+v("_SC_THREAD_CPUTIME")
+v("_SC_THREAD_DESTRUCTOR_ITERATIONS")
+v("_SC_THREAD_KEYS_MAX")
+v("_SC_THREAD_PRIO_INHERIT")
+v("_SC_THREAD_PRIO_PROTECT")
+v("_SC_THREAD_PRIORITY_SCHEDULING")
+v("_SC_THREAD_PROCESS_SHARED")
+v("_SC_THREAD_SAFE_FUNCTIONS")
+v("_SC_THREAD_SPORADIC_SERVER")
+v("_SC_THREAD_STACK_MIN")
+v("_SC_THREAD_THREADS_MAX")
+v("_SC_THREADS")
+v("_SC_TIMEOUTS")
+v("_SC_TIMER_MAX")
+v("_SC_TIMERS")
+v("_SC_TRACE")
+v("_SC_TRACE_EVENT_FILTER")
+v("_SC_TRACE_EVENT_NAME_MAX")
+v("_SC_TRACE_INHERIT")
+v("_SC_TRACE_LOG")
+v("_SC_TRACE_NAME_MAX")
+v("_SC_TRACE_SYS_MAX")
+v("_SC_TRACE_USER_EVENT_MAX")
+v("_SC_TTY_NAME_MAX")
+v("_SC_TYPED_MEMORY_OBJECTS")
+v("_SC_TZNAME_MAX")
+v("_SC_V6_ILP32_OFF32")
+v("_SC_V6_ILP32_OFFBIG")
+v("_SC_V6_LP64_OFF64")
+v("_SC_V6_LPBIG_OFFBIG")
+v("_SC_VERSION")
+v("_SC_XBS5_ILP32_OFF32")
+v("_SC_XBS5_ILP32_OFFBIG")
+v("_SC_XBS5_LP64_OFF64")
+v("_SC_XBS5_LPBIG_OFFBIG")
+v("_SC_XOPEN_CRYPT")
+v("_SC_XOPEN_ENH_I18N")
+v("_SC_XOPEN_LEGACY")
+v("_SC_XOPEN_REALTIME")
+v("_SC_XOPEN_REALTIME_THREADS")
+v("_SC_XOPEN_SHM")
+v("_SC_XOPEN_STREAMS")
+v("_SC_XOPEN_UNIX")
+v("_SC_XOPEN_VERSION")
+v("_SC_NPROCESSORS_ONLN")
+v("SEEK_SET")
+v("SEEK_CUR")
+v("SEEK_END")
 
 main()
diff --git a/tools/detect/linux_amd64_consts.nim b/tools/detect/linux_amd64_consts.nim
deleted file mode 100644
index eb85da045..000000000
--- a/tools/detect/linux_amd64_consts.nim
+++ /dev/null
@@ -1,631 +0,0 @@
-# Generated by detect.nim
-const
-  AIO_ALLDONE* = cint(2)
-  AIO_CANCELED* = cint(0)
-  AIO_NOTCANCELED* = cint(1)
-  LIO_NOP* = cint(2)
-  LIO_NOWAIT* = cint(1)
-  LIO_READ* = cint(0)
-  LIO_WAIT* = cint(0)
-  LIO_WRITE* = cint(1)
-  RTLD_LAZY* = cint(1)
-  RTLD_NOW* = cint(2)
-  RTLD_GLOBAL* = cint(256)
-  RTLD_LOCAL* = cint(0)
-  E2BIG* = cint(7)
-  EACCES* = cint(13)
-  EADDRINUSE* = cint(98)
-  EADDRNOTAVAIL* = cint(99)
-  EAFNOSUPPORT* = cint(97)
-  EAGAIN* = cint(11)
-  EALREADY* = cint(114)
-  EBADF* = cint(9)
-  EBADMSG* = cint(74)
-  EBUSY* = cint(16)
-  ECANCELED* = cint(125)
-  ECHILD* = cint(10)
-  ECONNABORTED* = cint(103)
-  ECONNREFUSED* = cint(111)
-  ECONNRESET* = cint(104)
-  EDEADLK* = cint(35)
-  EDESTADDRREQ* = cint(89)
-  EDOM* = cint(33)
-  EDQUOT* = cint(122)
-  EEXIST* = cint(17)
-  EFAULT* = cint(14)
-  EFBIG* = cint(27)
-  EHOSTUNREACH* = cint(113)
-  EIDRM* = cint(43)
-  EILSEQ* = cint(84)
-  EINPROGRESS* = cint(115)
-  EINTR* = cint(4)
-  EINVAL* = cint(22)
-  EIO* = cint(5)
-  EISCONN* = cint(106)
-  EISDIR* = cint(21)
-  ELOOP* = cint(40)
-  EMFILE* = cint(24)
-  EMLINK* = cint(31)
-  EMSGSIZE* = cint(90)
-  EMULTIHOP* = cint(72)
-  ENAMETOOLONG* = cint(36)
-  ENETDOWN* = cint(100)
-  ENETRESET* = cint(102)
-  ENETUNREACH* = cint(101)
-  ENFILE* = cint(23)
-  ENOBUFS* = cint(105)
-  ENODATA* = cint(61)
-  ENODEV* = cint(19)
-  ENOENT* = cint(2)
-  ENOEXEC* = cint(8)
-  ENOLCK* = cint(37)
-  ENOLINK* = cint(67)
-  ENOMEM* = cint(12)
-  ENOMSG* = cint(42)
-  ENOPROTOOPT* = cint(92)
-  ENOSPC* = cint(28)
-  ENOSR* = cint(63)
-  ENOSTR* = cint(60)
-  ENOSYS* = cint(38)
-  ENOTCONN* = cint(107)
-  ENOTDIR* = cint(20)
-  ENOTEMPTY* = cint(39)
-  ENOTSOCK* = cint(88)
-  ENOTSUP* = cint(95)
-  ENOTTY* = cint(25)
-  ENXIO* = cint(6)
-  EOPNOTSUPP* = cint(95)
-  EOVERFLOW* = cint(75)
-  EPERM* = cint(1)
-  EPIPE* = cint(32)
-  EPROTO* = cint(71)
-  EPROTONOSUPPORT* = cint(93)
-  EPROTOTYPE* = cint(91)
-  ERANGE* = cint(34)
-  EROFS* = cint(30)
-  ESPIPE* = cint(29)
-  ESRCH* = cint(3)
-  ESTALE* = cint(116)
-  ETIME* = cint(62)
-  ETIMEDOUT* = cint(110)
-  ETXTBSY* = cint(26)
-  EWOULDBLOCK* = cint(11)
-  EXDEV* = cint(18)
-  F_DUPFD* = cint(0)
-  F_GETFD* = cint(1)
-  F_SETFD* = cint(2)
-  F_GETFL* = cint(3)
-  F_SETFL* = cint(4)
-  F_GETLK* = cint(5)
-  F_SETLK* = cint(6)
-  F_SETLKW* = cint(7)
-  F_GETOWN* = cint(9)
-  F_SETOWN* = cint(8)
-  FD_CLOEXEC* = cint(1)
-  F_RDLCK* = cint(0)
-  F_UNLCK* = cint(2)
-  F_WRLCK* = cint(1)
-  O_CREAT* = cint(64)
-  O_EXCL* = cint(128)
-  O_NOCTTY* = cint(256)
-  O_TRUNC* = cint(512)
-  O_APPEND* = cint(1024)
-  O_DSYNC* = cint(4096)
-  O_NONBLOCK* = cint(2048)
-  O_RSYNC* = cint(1052672)
-  O_SYNC* = cint(1052672)
-  O_ACCMODE* = cint(3)
-  O_RDONLY* = cint(0)
-  O_RDWR* = cint(2)
-  O_WRONLY* = cint(1)
-  POSIX_FADV_NORMAL* = cint(0)
-  POSIX_FADV_SEQUENTIAL* = cint(2)
-  POSIX_FADV_RANDOM* = cint(1)
-  POSIX_FADV_WILLNEED* = cint(3)
-  POSIX_FADV_DONTNEED* = cint(4)
-  POSIX_FADV_NOREUSE* = cint(5)
-  FE_DIVBYZERO* = cint(4)
-  FE_INEXACT* = cint(32)
-  FE_INVALID* = cint(1)
-  FE_OVERFLOW* = cint(8)
-  FE_UNDERFLOW* = cint(16)
-  FE_ALL_EXCEPT* = cint(61)
-  FE_DOWNWARD* = cint(1024)
-  FE_TONEAREST* = cint(0)
-  FE_TOWARDZERO* = cint(3072)
-  FE_UPWARD* = cint(2048)
-  FE_DFL_ENV* = cast[pointer](0xffffffffffffffff)
-  MM_HARD* = cint(1)
-  MM_SOFT* = cint(2)
-  MM_FIRM* = cint(4)
-  MM_APPL* = cint(8)
-  MM_UTIL* = cint(16)
-  MM_OPSYS* = cint(32)
-  MM_RECOVER* = cint(64)
-  MM_NRECOV* = cint(128)
-  MM_HALT* = cint(1)
-  MM_ERROR* = cint(2)
-  MM_WARNING* = cint(3)
-  MM_INFO* = cint(4)
-  MM_NOSEV* = cint(0)
-  MM_PRINT* = cint(256)
-  MM_CONSOLE* = cint(512)
-  MM_OK* = cint(0)
-  MM_NOTOK* = cint(-1)
-  MM_NOMSG* = cint(1)
-  MM_NOCON* = cint(4)
-  FNM_NOMATCH* = cint(1)
-  FNM_PATHNAME* = cint(1)
-  FNM_PERIOD* = cint(4)
-  FNM_NOESCAPE* = cint(2)
-  FTW_F* = cint(0)
-  FTW_D* = cint(1)
-  FTW_DNR* = cint(2)
-  FTW_NS* = cint(3)
-  FTW_SL* = cint(4)
-  GLOB_APPEND* = cint(32)
-  GLOB_DOOFFS* = cint(8)
-  GLOB_ERR* = cint(1)
-  GLOB_MARK* = cint(2)
-  GLOB_NOCHECK* = cint(16)
-  GLOB_NOESCAPE* = cint(64)
-  GLOB_NOSORT* = cint(4)
-  GLOB_ABORTED* = cint(2)
-  GLOB_NOMATCH* = cint(3)
-  GLOB_NOSPACE* = cint(1)
-  GLOB_NOSYS* = cint(4)
-  CODESET* = cint(14)
-  D_T_FMT* = cint(131112)
-  D_FMT* = cint(131113)
-  T_FMT* = cint(131114)
-  T_FMT_AMPM* = cint(131115)
-  AM_STR* = cint(131110)
-  PM_STR* = cint(131111)
-  DAY_1* = cint(131079)
-  DAY_2* = cint(131080)
-  DAY_3* = cint(131081)
-  DAY_4* = cint(131082)
-  DAY_5* = cint(131083)
-  DAY_6* = cint(131084)
-  DAY_7* = cint(131085)
-  ABDAY_1* = cint(131072)
-  ABDAY_2* = cint(131073)
-  ABDAY_3* = cint(131074)
-  ABDAY_4* = cint(131075)
-  ABDAY_5* = cint(131076)
-  ABDAY_6* = cint(131077)
-  ABDAY_7* = cint(131078)
-  MON_1* = cint(131098)
-  MON_2* = cint(131099)
-  MON_3* = cint(131100)
-  MON_4* = cint(131101)
-  MON_5* = cint(131102)
-  MON_6* = cint(131103)
-  MON_7* = cint(131104)
-  MON_8* = cint(131105)
-  MON_9* = cint(131106)
-  MON_10* = cint(131107)
-  MON_11* = cint(131108)
-  MON_12* = cint(131109)
-  ABMON_1* = cint(131086)
-  ABMON_2* = cint(131087)
-  ABMON_3* = cint(131088)
-  ABMON_4* = cint(131089)
-  ABMON_5* = cint(131090)
-  ABMON_6* = cint(131091)
-  ABMON_7* = cint(131092)
-  ABMON_8* = cint(131093)
-  ABMON_9* = cint(131094)
-  ABMON_10* = cint(131095)
-  ABMON_11* = cint(131096)
-  ABMON_12* = cint(131097)
-  ERA* = cint(131116)
-  ERA_D_FMT* = cint(131118)
-  ERA_D_T_FMT* = cint(131120)
-  ERA_T_FMT* = cint(131121)
-  ALT_DIGITS* = cint(131119)
-  RADIXCHAR* = cint(65536)
-  THOUSEP* = cint(65537)
-  YESEXPR* = cint(327680)
-  NOEXPR* = cint(327681)
-  CRNCYSTR* = cint(262159)
-  LC_ALL* = cint(6)
-  LC_COLLATE* = cint(3)
-  LC_CTYPE* = cint(0)
-  LC_MESSAGES* = cint(5)
-  LC_MONETARY* = cint(4)
-  LC_NUMERIC* = cint(1)
-  LC_TIME* = cint(2)
-  PTHREAD_BARRIER_SERIAL_THREAD* = cint(-1)
-  PTHREAD_CANCEL_ASYNCHRONOUS* = cint(1)
-  PTHREAD_CANCEL_ENABLE* = cint(0)
-  PTHREAD_CANCEL_DEFERRED* = cint(0)
-  PTHREAD_CANCEL_DISABLE* = cint(1)
-  PTHREAD_CREATE_DETACHED* = cint(1)
-  PTHREAD_CREATE_JOINABLE* = cint(0)
-  PTHREAD_EXPLICIT_SCHED* = cint(1)
-  PTHREAD_INHERIT_SCHED* = cint(0)
-  PTHREAD_PROCESS_SHARED* = cint(1)
-  PTHREAD_PROCESS_PRIVATE* = cint(0)
-  PTHREAD_SCOPE_PROCESS* = cint(1)
-  PTHREAD_SCOPE_SYSTEM* = cint(0)
-  POSIX_ASYNC_IO* = cint(1)
-  F_OK* = cint(0)
-  R_OK* = cint(4)
-  W_OK* = cint(2)
-  X_OK* = cint(1)
-  CS_PATH* = cint(0)
-  CS_POSIX_V6_ILP32_OFF32_CFLAGS* = cint(1116)
-  CS_POSIX_V6_ILP32_OFF32_LDFLAGS* = cint(1117)
-  CS_POSIX_V6_ILP32_OFF32_LIBS* = cint(1118)
-  CS_POSIX_V6_ILP32_OFFBIG_CFLAGS* = cint(1120)
-  CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS* = cint(1121)
-  CS_POSIX_V6_ILP32_OFFBIG_LIBS* = cint(1122)
-  CS_POSIX_V6_LP64_OFF64_CFLAGS* = cint(1124)
-  CS_POSIX_V6_LP64_OFF64_LDFLAGS* = cint(1125)
-  CS_POSIX_V6_LP64_OFF64_LIBS* = cint(1126)
-  CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS* = cint(1128)
-  CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS* = cint(1129)
-  CS_POSIX_V6_LPBIG_OFFBIG_LIBS* = cint(1130)
-  CS_POSIX_V6_WIDTH_RESTRICTED_ENVS* = cint(1)
-  F_LOCK* = cint(1)
-  F_TEST* = cint(3)
-  F_TLOCK* = cint(2)
-  F_ULOCK* = cint(0)
-  PC_2_SYMLINKS* = cint(20)
-  PC_ALLOC_SIZE_MIN* = cint(18)
-  PC_ASYNC_IO* = cint(10)
-  PC_CHOWN_RESTRICTED* = cint(6)
-  PC_FILESIZEBITS* = cint(13)
-  PC_LINK_MAX* = cint(0)
-  PC_MAX_CANON* = cint(1)
-  PC_MAX_INPUT* = cint(2)
-  PC_NAME_MAX* = cint(3)
-  PC_NO_TRUNC* = cint(7)
-  PC_PATH_MAX* = cint(4)
-  PC_PIPE_BUF* = cint(5)
-  PC_PRIO_IO* = cint(11)
-  PC_REC_INCR_XFER_SIZE* = cint(14)
-  PC_REC_MIN_XFER_SIZE* = cint(16)
-  PC_REC_XFER_ALIGN* = cint(17)
-  PC_SYMLINK_MAX* = cint(19)
-  PC_SYNC_IO* = cint(9)
-  PC_VDISABLE* = cint(8)
-  SC_2_C_BIND* = cint(47)
-  SC_2_C_DEV* = cint(48)
-  SC_2_CHAR_TERM* = cint(95)
-  SC_2_FORT_DEV* = cint(49)
-  SC_2_FORT_RUN* = cint(50)
-  SC_2_LOCALEDEF* = cint(52)
-  SC_2_PBS* = cint(168)
-  SC_2_PBS_ACCOUNTING* = cint(169)
-  SC_2_PBS_CHECKPOINT* = cint(175)
-  SC_2_PBS_LOCATE* = cint(170)
-  SC_2_PBS_MESSAGE* = cint(171)
-  SC_2_PBS_TRACK* = cint(172)
-  SC_2_SW_DEV* = cint(51)
-  SC_2_UPE* = cint(97)
-  SC_2_VERSION* = cint(46)
-  SC_ADVISORY_INFO* = cint(132)
-  SC_AIO_LISTIO_MAX* = cint(23)
-  SC_AIO_MAX* = cint(24)
-  SC_AIO_PRIO_DELTA_MAX* = cint(25)
-  SC_ARG_MAX* = cint(0)
-  SC_ASYNCHRONOUS_IO* = cint(12)
-  SC_ATEXIT_MAX* = cint(87)
-  SC_BARRIERS* = cint(133)
-  SC_BC_BASE_MAX* = cint(36)
-  SC_BC_DIM_MAX* = cint(37)
-  SC_BC_SCALE_MAX* = cint(38)
-  SC_BC_STRING_MAX* = cint(39)
-  SC_CHILD_MAX* = cint(1)
-  SC_CLK_TCK* = cint(2)
-  SC_CLOCK_SELECTION* = cint(137)
-  SC_COLL_WEIGHTS_MAX* = cint(40)
-  SC_CPUTIME* = cint(138)
-  SC_DELAYTIMER_MAX* = cint(26)
-  SC_EXPR_NEST_MAX* = cint(42)
-  SC_FSYNC* = cint(15)
-  SC_GETGR_R_SIZE_MAX* = cint(69)
-  SC_GETPW_R_SIZE_MAX* = cint(70)
-  SC_HOST_NAME_MAX* = cint(180)
-  SC_IOV_MAX* = cint(60)
-  SC_IPV6* = cint(235)
-  SC_JOB_CONTROL* = cint(7)
-  SC_LINE_MAX* = cint(43)
-  SC_LOGIN_NAME_MAX* = cint(71)
-  SC_MAPPED_FILES* = cint(16)
-  SC_MEMLOCK* = cint(17)
-  SC_MEMLOCK_RANGE* = cint(18)
-  SC_MEMORY_PROTECTION* = cint(19)
-  SC_MESSAGE_PASSING* = cint(20)
-  SC_MONOTONIC_CLOCK* = cint(149)
-  SC_MQ_OPEN_MAX* = cint(27)
-  SC_MQ_PRIO_MAX* = cint(28)
-  SC_NGROUPS_MAX* = cint(3)
-  SC_OPEN_MAX* = cint(4)
-  SC_PAGE_SIZE* = cint(30)
-  SC_PRIORITIZED_IO* = cint(13)
-  SC_PRIORITY_SCHEDULING* = cint(10)
-  SC_RAW_SOCKETS* = cint(236)
-  SC_RE_DUP_MAX* = cint(44)
-  SC_READER_WRITER_LOCKS* = cint(153)
-  SC_REALTIME_SIGNALS* = cint(9)
-  SC_REGEXP* = cint(155)
-  SC_RTSIG_MAX* = cint(31)
-  SC_SAVED_IDS* = cint(8)
-  SC_SEM_NSEMS_MAX* = cint(32)
-  SC_SEM_VALUE_MAX* = cint(33)
-  SC_SEMAPHORES* = cint(21)
-  SC_SHARED_MEMORY_OBJECTS* = cint(22)
-  SC_SHELL* = cint(157)
-  SC_SIGQUEUE_MAX* = cint(34)
-  SC_SPAWN* = cint(159)
-  SC_SPIN_LOCKS* = cint(154)
-  SC_SPORADIC_SERVER* = cint(160)
-  SC_SS_REPL_MAX* = cint(241)
-  SC_STREAM_MAX* = cint(5)
-  SC_SYMLOOP_MAX* = cint(173)
-  SC_SYNCHRONIZED_IO* = cint(14)
-  SC_THREAD_ATTR_STACKADDR* = cint(77)
-  SC_THREAD_ATTR_STACKSIZE* = cint(78)
-  SC_THREAD_CPUTIME* = cint(139)
-  SC_THREAD_DESTRUCTOR_ITERATIONS* = cint(73)
-  SC_THREAD_KEYS_MAX* = cint(74)
-  SC_THREAD_PRIO_INHERIT* = cint(80)
-  SC_THREAD_PRIO_PROTECT* = cint(81)
-  SC_THREAD_PRIORITY_SCHEDULING* = cint(79)
-  SC_THREAD_PROCESS_SHARED* = cint(82)
-  SC_THREAD_SAFE_FUNCTIONS* = cint(68)
-  SC_THREAD_SPORADIC_SERVER* = cint(161)
-  SC_THREAD_STACK_MIN* = cint(75)
-  SC_THREAD_THREADS_MAX* = cint(76)
-  SC_THREADS* = cint(67)
-  SC_TIMEOUTS* = cint(164)
-  SC_TIMER_MAX* = cint(35)
-  SC_TIMERS* = cint(11)
-  SC_TRACE* = cint(181)
-  SC_TRACE_EVENT_FILTER* = cint(182)
-  SC_TRACE_EVENT_NAME_MAX* = cint(242)
-  SC_TRACE_INHERIT* = cint(183)
-  SC_TRACE_LOG* = cint(184)
-  SC_TRACE_NAME_MAX* = cint(243)
-  SC_TRACE_SYS_MAX* = cint(244)
-  SC_TRACE_USER_EVENT_MAX* = cint(245)
-  SC_TTY_NAME_MAX* = cint(72)
-  SC_TYPED_MEMORY_OBJECTS* = cint(165)
-  SC_TZNAME_MAX* = cint(6)
-  SC_V6_ILP32_OFF32* = cint(176)
-  SC_V6_ILP32_OFFBIG* = cint(177)
-  SC_V6_LP64_OFF64* = cint(178)
-  SC_V6_LPBIG_OFFBIG* = cint(179)
-  SC_VERSION* = cint(29)
-  SC_XBS5_ILP32_OFF32* = cint(125)
-  SC_XBS5_ILP32_OFFBIG* = cint(126)
-  SC_XBS5_LP64_OFF64* = cint(127)
-  SC_XBS5_LPBIG_OFFBIG* = cint(128)
-  SC_XOPEN_CRYPT* = cint(92)
-  SC_XOPEN_ENH_I18N* = cint(93)
-  SC_XOPEN_LEGACY* = cint(129)
-  SC_XOPEN_REALTIME* = cint(130)
-  SC_XOPEN_REALTIME_THREADS* = cint(131)
-  SC_XOPEN_SHM* = cint(94)
-  SC_XOPEN_STREAMS* = cint(246)
-  SC_XOPEN_UNIX* = cint(91)
-  SC_XOPEN_VERSION* = cint(89)
-  SEEK_SET* = cint(0)
-  SEEK_CUR* = cint(1)
-  SEEK_END* = cint(2)
-  SEM_FAILED* = cast[pointer]((nil))
-  IPC_CREAT* = cint(512)
-  IPC_EXCL* = cint(1024)
-  IPC_NOWAIT* = cint(2048)
-  IPC_PRIVATE* = cint(0)
-  IPC_RMID* = cint(0)
-  IPC_SET* = cint(1)
-  IPC_STAT* = cint(2)
-  S_IFMT* = cint(61440)
-  S_IFBLK* = cint(24576)
-  S_IFCHR* = cint(8192)
-  S_IFIFO* = cint(4096)
-  S_IFREG* = cint(32768)
-  S_IFDIR* = cint(16384)
-  S_IFLNK* = cint(40960)
-  S_IFSOCK* = cint(49152)
-  S_IRWXU* = cint(448)
-  S_IRUSR* = cint(256)
-  S_IWUSR* = cint(128)
-  S_IXUSR* = cint(64)
-  S_IRWXG* = cint(56)
-  S_IRGRP* = cint(32)
-  S_IWGRP* = cint(16)
-  S_IXGRP* = cint(8)
-  S_IRWXO* = cint(7)
-  S_IROTH* = cint(4)
-  S_IWOTH* = cint(2)
-  S_IXOTH* = cint(1)
-  S_ISUID* = cint(2048)
-  S_ISGID* = cint(1024)
-  S_ISVTX* = cint(512)
-  ST_RDONLY* = cint(1)
-  ST_NOSUID* = cint(2)
-  PROT_READ* = cint(1)
-  PROT_WRITE* = cint(2)
-  PROT_EXEC* = cint(4)
-  PROT_NONE* = cint(0)
-  MAP_SHARED* = cint(1)
-  MAP_PRIVATE* = cint(2)
-  MAP_FIXED* = cint(16)
-  MS_ASYNC* = cint(1)
-  MS_SYNC* = cint(4)
-  MS_INVALIDATE* = cint(2)
-  MCL_CURRENT* = cint(1)
-  MCL_FUTURE* = cint(2)
-  MAP_FAILED* = cast[pointer](0xffffffffffffffff)
-  POSIX_MADV_NORMAL* = cint(0)
-  POSIX_MADV_SEQUENTIAL* = cint(2)
-  POSIX_MADV_RANDOM* = cint(1)
-  POSIX_MADV_WILLNEED* = cint(3)
-  POSIX_MADV_DONTNEED* = cint(4)
-  CLOCKS_PER_SEC* = clong(1000000)
-  CLOCK_PROCESS_CPUTIME_ID* = cint(2)
-  CLOCK_THREAD_CPUTIME_ID* = cint(3)
-  CLOCK_REALTIME* = cint(0)
-  TIMER_ABSTIME* = cint(1)
-  CLOCK_MONOTONIC* = cint(1)
-  WNOHANG* = cint(1)
-  WUNTRACED* = cint(2)
-  WEXITED* = cint(4)
-  WSTOPPED* = cint(2)
-  WCONTINUED* = cint(8)
-  WNOWAIT* = cint(16777216)
-  SIGEV_NONE* = cint(1)
-  SIGEV_SIGNAL* = cint(0)
-  SIGEV_THREAD* = cint(2)
-  SIGABRT* = cint(6)
-  SIGALRM* = cint(14)
-  SIGBUS* = cint(7)
-  SIGCHLD* = cint(17)
-  SIGCONT* = cint(18)
-  SIGFPE* = cint(8)
-  SIGHUP* = cint(1)
-  SIGILL* = cint(4)
-  SIGINT* = cint(2)
-  SIGKILL* = cint(9)
-  SIGPIPE* = cint(13)
-  SIGQUIT* = cint(3)
-  SIGSEGV* = cint(11)
-  SIGSTOP* = cint(19)
-  SIGTERM* = cint(15)
-  SIGTSTP* = cint(20)
-  SIGTTIN* = cint(21)
-  SIGTTOU* = cint(22)
-  SIGUSR1* = cint(10)
-  SIGUSR2* = cint(12)
-  SIGPOLL* = cint(29)
-  SIGPROF* = cint(27)
-  SIGSYS* = cint(31)
-  SIGTRAP* = cint(5)
-  SIGURG* = cint(23)
-  SIGVTALRM* = cint(26)
-  SIGXCPU* = cint(24)
-  SIGXFSZ* = cint(25)
-  SA_NOCLDSTOP* = cint(1)
-  SIG_BLOCK* = cint(0)
-  SIG_UNBLOCK* = cint(1)
-  SIG_SETMASK* = cint(2)
-  SA_ONSTACK* = cint(134217728)
-  SA_RESETHAND* = cint(-2147483648)
-  SA_RESTART* = cint(268435456)
-  SA_SIGINFO* = cint(4)
-  SA_NOCLDWAIT* = cint(2)
-  SA_NODEFER* = cint(1073741824)
-  SS_ONSTACK* = cint(1)
-  SS_DISABLE* = cint(2)
-  MINSIGSTKSZ* = cint(2048)
-  SIGSTKSZ* = cint(8192)
-  NL_SETD* = cint(1)
-  NL_CAT_LOCALE* = cint(1)
-  SCHED_FIFO* = cint(1)
-  SCHED_RR* = cint(2)
-  SCHED_OTHER* = cint(0)
-  FD_SETSIZE* = cint(1024)
-  IF_NAMESIZE* = cint(16)
-  SCM_RIGHTS* = cint(1)
-  SOCK_DGRAM* = cint(2)
-  SOCK_RAW* = cint(3)
-  SOCK_SEQPACKET* = cint(5)
-  SOCK_STREAM* = cint(1)
-  SOL_SOCKET* = cint(1)
-  SO_ACCEPTCONN* = cint(30)
-  SO_BROADCAST* = cint(6)
-  SO_DEBUG* = cint(1)
-  SO_DONTROUTE* = cint(5)
-  SO_ERROR* = cint(4)
-  SO_KEEPALIVE* = cint(9)
-  SO_LINGER* = cint(13)
-  SO_OOBINLINE* = cint(10)
-  SO_RCVBUF* = cint(8)
-  SO_RCVLOWAT* = cint(18)
-  SO_RCVTIMEO* = cint(20)
-  SO_REUSEADDR* = cint(2)
-  SO_SNDBUF* = cint(7)
-  SO_SNDLOWAT* = cint(19)
-  SO_SNDTIMEO* = cint(21)
-  SO_TYPE* = cint(3)
-  SOMAXCONN* = cint(128)
-  MSG_CTRUNC* = cint(8)
-  MSG_DONTROUTE* = cint(4)
-  MSG_EOR* = cint(128)
-  MSG_OOB* = cint(1)
-  MSG_PEEK* = cint(2)
-  MSG_TRUNC* = cint(32)
-  MSG_WAITALL* = cint(256)
-  AF_INET* = cint(2)
-  AF_INET6* = cint(10)
-  AF_UNIX* = cint(1)
-  AF_UNSPEC* = cint(0)
-  SHUT_RD* = cint(0)
-  SHUT_RDWR* = cint(2)
-  SHUT_WR* = cint(1)
-  IPPROTO_IP* = cint(0)
-  IPPROTO_IPV6* = cint(41)
-  IPPROTO_ICMP* = cint(1)
-  IPPROTO_RAW* = cint(255)
-  IPPROTO_TCP* = cint(6)
-  IPPROTO_UDP* = cint(17)
-  INADDR_ANY* = cint(0)
-  INADDR_BROADCAST* = cint(-1)
-  INET_ADDRSTRLEN* = cint(16)
-  IPV6_JOIN_GROUP* = cint(20)
-  IPV6_LEAVE_GROUP* = cint(21)
-  IPV6_MULTICAST_HOPS* = cint(18)
-  IPV6_MULTICAST_IF* = cint(17)
-  IPV6_MULTICAST_LOOP* = cint(19)
-  IPV6_UNICAST_HOPS* = cint(16)
-  IPV6_V6ONLY* = cint(26)
-  IPPORT_RESERVED* = cint(1024)
-  HOST_NOT_FOUND* = cint(1)
-  NO_DATA* = cint(4)
-  NO_RECOVERY* = cint(3)
-  TRY_AGAIN* = cint(2)
-  AI_PASSIVE* = cint(1)
-  AI_CANONNAME* = cint(2)
-  AI_NUMERICHOST* = cint(4)
-  AI_NUMERICSERV* = cint(1024)
-  AI_V4MAPPED* = cint(8)
-  AI_ALL* = cint(16)
-  AI_ADDRCONFIG* = cint(32)
-  NI_NOFQDN* = cint(4)
-  NI_NUMERICHOST* = cint(1)
-  NI_NAMEREQD* = cint(8)
-  NI_NUMERICSERV* = cint(2)
-  NI_DGRAM* = cint(16)
-  EAI_AGAIN* = cint(-3)
-  EAI_BADFLAGS* = cint(-1)
-  EAI_FAIL* = cint(-4)
-  EAI_FAMILY* = cint(-6)
-  EAI_MEMORY* = cint(-10)
-  EAI_NONAME* = cint(-2)
-  EAI_SERVICE* = cint(-8)
-  EAI_SOCKTYPE* = cint(-7)
-  EAI_SYSTEM* = cint(-11)
-  EAI_OVERFLOW* = cint(-12)
-  POLLIN* = cshort(1)
-  POLLRDNORM* = cshort(64)
-  POLLRDBAND* = cshort(128)
-  POLLPRI* = cshort(2)
-  POLLOUT* = cshort(4)
-  POLLWRNORM* = cshort(256)
-  POLLWRBAND* = cshort(512)
-  POLLERR* = cshort(8)
-  POLLHUP* = cshort(16)
-  POLLNVAL* = cshort(32)
-  POSIX_SPAWN_RESETIDS* = cint(1)
-  POSIX_SPAWN_SETPGROUP* = cint(2)
-  POSIX_SPAWN_SETSCHEDPARAM* = cint(16)
-  POSIX_SPAWN_SETSCHEDULER* = cint(32)
-  POSIX_SPAWN_SETSIGDEF* = cint(4)
-  POSIX_SPAWN_SETSIGMASK* = cint(8)
-  IOFBF* = cint(0)
-  IONBF* = cint(2)