123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901 |
- # Posix detect program
- # (c) 2010 Andreas Rumpf
- # 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
- when defined(openbsd) or defined(freebsd) or defined(netbsd):
- const
- cc = "cc -o $# $#.c"
- cpp = "cc -E -o $#.i $#.c"
- ccLinkMath = "cc -lm -o $# $#.c"
- cppLinkMath = "cc -lm -E -o $#.i $#.c"
- else:
- const
- cc = "gcc -o $# $#.c"
- cpp = "gcc -E -o $#.i $#.c"
- const
- cfile = """
- /* Generated by detect.nim */
- #define _GNU_SOURCE
- #define _POSIX_C_SOURCE 200809L
- #include <stdlib.h>
- #include <stdio.h>
- $1
- int main() {
- FILE* f;
- f = fopen("$3_$4_consts.nim", "w+");
- fputs("# Generated by detect.nim\n\n", f);
- $2
- fclose(f);
- }
- """
- ifile = """
- /* Generated by detect.nim */
- $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) =
- cur = s
- const testh = "testh"
- 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)
- found = myExec(cc % [testh.addFileExt(ExeExt), testh])
- removeFile(addFileExt(testh, "c"))
- 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"
- 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)
- let cCompile = when defined(openbsd) or defined(freebsd) or defined(netbsd): ccLinkMath else: cc
- let cppCompile = when defined(openbsd) or defined(freebsd) or defined(netbsd): cppLinkMath else: cpp
- if not myExec(cCompile % [gen.addFileExt(ExeExt), gen]): quit(1)
- if not myExec(cppCompile % [pre.addFileExt(ExeExt), pre]): quit(1)
- when defined(windows):
- if not myExec(gen.addFileExt(ExeExt)): quit(1)
- else:
- if not myExec("./" & gen): quit(1)
- #removeFile(addFileExt(gen, "c"))
- echo("Success")
- 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":
- addf(tl,
- "#ifdef $3\n fprintf(f, \"const $1* = cast[$2](%p)\\n\", $3);\n#endif\n",
- n, t, name)
- of "cstring":
- addf(tl,
- "#ifdef $3\n fprintf(f, \"const $1* = $2(\\\"%s\\\")\\n\", $3);\n#endif\n",
- n, t, name)
- of "clong":
- addf(tl,
- "#ifdef $3\n fprintf(f, \"const $1* = $2(%ld)\\n\", $3);\n#endif\n",
- n, t, name)
- of "cint", "cshort", "TSa_Family":
- addf(tl,
- "#ifdef $3\n fprintf(f, \"const $1* = $2(%d)\\n\", $3);\n#endif\n",
- n, t, name)
- of "InAddrScalar":
- addf(tl,
- "#ifdef $3\n fprintf(f, \"const $1* = $2(%u)\\n\", $3);\n#endif\n",
- n, t, name)
- else:
- addf(tl,
- "#ifdef $3\n fprintf(f, \"const $1* = cast[$2](%d)\\n\", $3);\n#endif\n",
- n, t, name)
- 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_DUPFD_CLOEXEC")
- 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("O_CLOEXEC")
- v("O_DIRECT")
- v("O_PATH")
- v("O_NOATIME")
- v("O_TMPFILE")
- 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_ICMPV6")
- 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_MUTEX_INITIALIZER")
- 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")
- v("SIG_HOLD", "Sighandler")
- v("SIG_DFL", "Sighandler")
- v("SIG_ERR", "Sighandler")
- v("SIG_IGN", "Sighandler")
- 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_ANONYMOUS")
- v("MAP_FIXED_NOREPLACE")
- v("MAP_NORESERVE")
- 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/resource.h>")
- v("RLIMIT_NOFILE")
- 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("SOCK_CLOEXEC", no_other = true)
- 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")
- v("AF_INET6")
- v("AF_UNIX")
- v("AF_UNSPEC")
- 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("WSTOPSIG")
- #v("WTERMSIG")
- 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_PAGESIZE") # Synonym for _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()
|