diff options
author | Jacek Sieka <arnetheduck@gmail.com> | 2017-04-13 05:10:54 +0800 |
---|---|---|
committer | Andreas Rumpf <rumpf_a@web.de> | 2017-04-12 23:10:54 +0200 |
commit | ce86b4ad78aae11f62c50e4f46e8ab2a124356b4 (patch) | |
tree | 2b3dfa6ef21907689d60dbf6f74041e1ce389546 /tools/detect/detect.nim | |
parent | e512358bc96b7be58bf4f2d5a2c5de75f119138a (diff) | |
download | Nim-ce86b4ad78aae11f62c50e4f46e8ab2a124356b4.tar.gz |
Posix from detect (#5697)
* refactor posix.nim * types move to separate files for platform-specifc and generic ("other') * consts move to separate files that get autogenerated by detect.nim * proc's stay where they are for now, though in a second stage might move as well * fix missing when
Diffstat (limited to 'tools/detect/detect.nim')
-rw-r--r-- | tools/detect/detect.nim | 1539 |
1 files changed, 784 insertions, 755 deletions
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() |