1# Posix detect program
2# (c) 2010 Andreas Rumpf
3
4# This program generates:
5# * A c program that prints a nim file containing constant variables holding the
6#   value of many C #define's, on the platform it's currently running at
7# * A nim file that contains the same contants, but as nim var:s that fetch the
8#   value of the constant using importc/header during the C compile phase.
9#
10# The first file allows nim to know the value of the constant at nim
11# compile time, but since the values differ across platform, isn't as portable.
12# The second one is more portable, and less semantically correct. It only works
13# when there's a backing C compiler available as well, preventing standalone
14# compilation.
15import os, strutils
16
17when defined(openbsd) or defined(freebsd) or defined(netbsd):
18  const
19    cc = "cc -o $# $#.c"
20    cpp = "cc -E -o $#.i $#.c"
21    ccLinkMath = "cc -lm -o $# $#.c"
22    cppLinkMath = "cc -lm -E -o $#.i $#.c"
23else:
24  const
25    cc = "gcc -o $# $#.c"
26    cpp = "gcc -E -o $#.i $#.c"
27
28const
29  cfile = """
30/* Generated by detect.nim */
31#define _GNU_SOURCE
32#define _POSIX_C_SOURCE 200809L
33
34#include <stdlib.h>
35#include <stdio.h>
36$1
37
38int main() {
39  FILE* f;
40  f = fopen("$3_$4_consts.nim", "w+");
41  fputs("# Generated by detect.nim\n\n", f);
42  $2
43  fclose(f);
44}
45"""
46  ifile = """
47/* Generated by detect.nim */
48
49$1
50"""
51  nimfile = """
52# Generated by detect.nim
53$1
54"""
55
56var
57  cur = ""
58  found = false
59  hd = ""
60  tl = ""
61  other = ""
62
63proc myExec(cmd: string): bool =
64  echo "CMD ", cmd
65  return execShellCmd(cmd) == 0
66
67proc header(s: string) =
68  cur = s
69  const testh = "testh"
70  var f: File
71  if open(f, addFileExt(testh, "c"), fmWrite):
72    f.write("#include $1\n" % s)
73    f.write("int main() { return 0; }\n")
74    close(f)
75    found = myExec(cc % [testh.addFileExt(ExeExt), testh])
76    removeFile(addFileExt(testh, "c"))
77
78  addf(other, "\n# $1\n", cur)
79
80  if found:
81    addf(hd, "#include $1\n", cur)
82    addf(tl, "  fprintf(f, \"\\n# $1\\n\");\n", cur)
83    echo("Found: ", s)
84  else:
85    echo("Not found: ", s)
86
87proc main =
88  const gen = "genconsts"
89  const pre = "pre"
90  var f: File
91  if open(f, addFileExt(gen, "c"), fmWrite):
92    f.write(cfile % [hd, tl, system.hostOS, system.hostCPU])
93    close(f)
94  if open(f, addFileExt(pre, "c"), fmWrite):
95    f.write(cfile % [hd, tl, system.hostOS, system.hostCPU])
96    close(f)
97  if open(f, "other_consts.nim", fmWrite):
98    f.write(nimfile % [other])
99    close(f)
100
101  let cCompile = when defined(openbsd) or defined(freebsd) or defined(netbsd): ccLinkMath else: cc
102  let cppCompile = when defined(openbsd) or defined(freebsd) or defined(netbsd): cppLinkMath else: cpp
103  if not myExec(cCompile % [gen.addFileExt(ExeExt), gen]): quit(1)
104  if not myExec(cppCompile % [pre.addFileExt(ExeExt), pre]): quit(1)
105  when defined(windows):
106    if not myExec(gen.addFileExt(ExeExt)): quit(1)
107  else:
108    if not myExec("./" & gen): quit(1)
109  #removeFile(addFileExt(gen, "c"))
110  echo("Success")
111
112proc v(name: string, typ = "cint", no_other = false) =
113  var n = if name[0] == '_': substr(name, 1) else: name
114  var t = $typ
115
116  if not no_other:
117    addf(other,
118      "var $1* {.importc: \"$2\", header: \"$3\".}: $4\n", n, name, cur, t)
119
120  if not found: return
121
122  case typ
123  of "pointer":
124    addf(tl,
125      "#ifdef $3\n  fprintf(f, \"const $1* = cast[$2](%p)\\n\", $3);\n#endif\n",
126      n, t, name)
127  of "cstring":
128    addf(tl,
129      "#ifdef $3\n  fprintf(f, \"const $1* = $2(\\\"%s\\\")\\n\", $3);\n#endif\n",
130      n, t, name)
131  of "clong":
132    addf(tl,
133      "#ifdef $3\n  fprintf(f, \"const $1* = $2(%ld)\\n\", $3);\n#endif\n",
134      n, t, name)
135  of "cint", "cshort", "TSa_Family":
136    addf(tl,
137      "#ifdef $3\n  fprintf(f, \"const $1* = $2(%d)\\n\", $3);\n#endif\n",
138      n, t, name)
139  of "InAddrScalar":
140    addf(tl,
141      "#ifdef $3\n  fprintf(f, \"const $1* = $2(%u)\\n\", $3);\n#endif\n",
142      n, t, name)
143  else:
144    addf(tl,
145      "#ifdef $3\n  fprintf(f, \"const $1* = cast[$2](%d)\\n\", $3);\n#endif\n",
146      n, t, name)
147
148
149header("<aio.h>")
150v("AIO_ALLDONE")
151v("AIO_CANCELED")
152v("AIO_NOTCANCELED")
153v("LIO_NOP")
154v("LIO_NOWAIT")
155v("LIO_READ")
156v("LIO_WAIT")
157v("LIO_WRITE")
158
159header("<dlfcn.h>")
160v("RTLD_LAZY")
161v("RTLD_NOW")
162v("RTLD_GLOBAL")
163v("RTLD_LOCAL")
164
165header("<errno.h>")
166v("E2BIG")
167v("EACCES")
168v("EADDRINUSE")
169v("EADDRNOTAVAIL")
170v("EAFNOSUPPORT")
171v("EAGAIN")
172v("EALREADY")
173v("EBADF")
174v("EBADMSG")
175v("EBUSY")
176v("ECANCELED")
177v("ECHILD")
178v("ECONNABORTED")
179v("ECONNREFUSED")
180v("ECONNRESET")
181v("EDEADLK")
182v("EDESTADDRREQ")
183v("EDOM")
184v("EDQUOT")
185v("EEXIST")
186v("EFAULT")
187v("EFBIG")
188v("EHOSTUNREACH")
189v("EIDRM")
190v("EILSEQ")
191v("EINPROGRESS")
192v("EINTR")
193v("EINVAL")
194v("EIO")
195v("EISCONN")
196v("EISDIR")
197v("ELOOP")
198v("EMFILE")
199v("EMLINK")
200v("EMSGSIZE")
201v("EMULTIHOP")
202v("ENAMETOOLONG")
203v("ENETDOWN")
204v("ENETRESET")
205v("ENETUNREACH")
206v("ENFILE")
207v("ENOBUFS")
208v("ENODATA")
209v("ENODEV")
210v("ENOENT")
211v("ENOEXEC")
212v("ENOLCK")
213v("ENOLINK")
214v("ENOMEM")
215v("ENOMSG")
216v("ENOPROTOOPT")
217v("ENOSPC")
218v("ENOSR")
219v("ENOSTR")
220v("ENOSYS")
221v("ENOTCONN")
222v("ENOTDIR")
223v("ENOTEMPTY")
224v("ENOTSOCK")
225v("ENOTSUP")
226v("ENOTTY")
227v("ENXIO")
228v("EOPNOTSUPP")
229v("EOVERFLOW")
230v("EPERM")
231v("EPIPE")
232v("EPROTO")
233v("EPROTONOSUPPORT")
234v("EPROTOTYPE")
235v("ERANGE")
236v("EROFS")
237v("ESPIPE")
238v("ESRCH")
239v("ESTALE")
240v("ETIME")
241v("ETIMEDOUT")
242v("ETXTBSY")
243v("EWOULDBLOCK")
244v("EXDEV")
245
246header("<fcntl.h>")
247v("F_DUPFD")
248v("F_DUPFD_CLOEXEC")
249v("F_GETFD")
250v("F_SETFD")
251v("F_GETFL")
252v("F_SETFL")
253v("F_GETLK")
254v("F_SETLK")
255v("F_SETLKW")
256v("F_GETOWN")
257v("F_SETOWN")
258v("FD_CLOEXEC")
259v("F_RDLCK")
260v("F_UNLCK")
261v("F_WRLCK")
262v("O_CREAT")
263v("O_EXCL")
264v("O_NOCTTY")
265v("O_TRUNC")
266v("O_APPEND")
267v("O_DSYNC")
268v("O_NONBLOCK")
269v("O_RSYNC")
270v("O_SYNC")
271v("O_ACCMODE")
272v("O_RDONLY")
273v("O_RDWR")
274v("O_WRONLY")
275v("O_CLOEXEC")
276v("O_DIRECT")
277v("O_PATH")
278v("O_NOATIME")
279v("O_TMPFILE")
280v("POSIX_FADV_NORMAL")
281v("POSIX_FADV_SEQUENTIAL")
282v("POSIX_FADV_RANDOM")
283v("POSIX_FADV_WILLNEED")
284v("POSIX_FADV_DONTNEED")
285v("POSIX_FADV_NOREUSE")
286
287header("<fenv.h>")
288v("FE_DIVBYZERO")
289v("FE_INEXACT")
290v("FE_INVALID")
291v("FE_OVERFLOW")
292v("FE_UNDERFLOW")
293v("FE_ALL_EXCEPT")
294v("FE_DOWNWARD")
295v("FE_TONEAREST")
296v("FE_TOWARDZERO")
297v("FE_UPWARD")
298v("FE_DFL_ENV")
299
300header("<fmtmsg.h>")
301v("MM_HARD")
302v("MM_SOFT")
303v("MM_FIRM")
304v("MM_APPL")
305v("MM_UTIL")
306v("MM_OPSYS")
307v("MM_RECOVER")
308v("MM_NRECOV")
309v("MM_HALT")
310v("MM_ERROR")
311v("MM_WARNING")
312v("MM_INFO")
313v("MM_NOSEV")
314v("MM_PRINT")
315v("MM_CONSOLE")
316v("MM_OK")
317v("MM_NOTOK")
318v("MM_NOMSG")
319v("MM_NOCON")
320
321header("<fnmatch.h>")
322v("FNM_NOMATCH")
323v("FNM_PATHNAME")
324v("FNM_PERIOD")
325v("FNM_NOESCAPE")
326v("FNM_NOSYS")
327
328header("<ftw.h>")
329v("FTW_F")
330v("FTW_D")
331v("FTW_DNR")
332v("FTW_DP")
333v("FTW_NS")
334v("FTW_SL")
335v("FTW_SLN")
336v("FTW_PHYS")
337v("FTW_MOUNT")
338v("FTW_DEPTH")
339v("FTW_CHDIR")
340
341header("<glob.h>")
342v("GLOB_APPEND")
343v("GLOB_DOOFFS")
344v("GLOB_ERR")
345v("GLOB_MARK")
346v("GLOB_NOCHECK")
347v("GLOB_NOESCAPE")
348v("GLOB_NOSORT")
349v("GLOB_ABORTED")
350v("GLOB_NOMATCH")
351v("GLOB_NOSPACE")
352v("GLOB_NOSYS")
353
354header("<langinfo.h>")
355v("CODESET")
356v("D_T_FMT")
357v("D_FMT")
358v("T_FMT")
359v("T_FMT_AMPM")
360v("AM_STR")
361v("PM_STR")
362v("DAY_1")
363v("DAY_2")
364v("DAY_3")
365v("DAY_4")
366v("DAY_5")
367v("DAY_6")
368v("DAY_7")
369v("ABDAY_1")
370v("ABDAY_2")
371v("ABDAY_3")
372v("ABDAY_4")
373v("ABDAY_5")
374v("ABDAY_6")
375v("ABDAY_7")
376v("MON_1")
377v("MON_2")
378v("MON_3")
379v("MON_4")
380v("MON_5")
381v("MON_6")
382v("MON_7")
383v("MON_8")
384v("MON_9")
385v("MON_10")
386v("MON_11")
387v("MON_12")
388v("ABMON_1")
389v("ABMON_2")
390v("ABMON_3")
391v("ABMON_4")
392v("ABMON_5")
393v("ABMON_6")
394v("ABMON_7")
395v("ABMON_8")
396v("ABMON_9")
397v("ABMON_10")
398v("ABMON_11")
399v("ABMON_12")
400v("ERA")
401v("ERA_D_FMT")
402v("ERA_D_T_FMT")
403v("ERA_T_FMT")
404v("ALT_DIGITS")
405v("RADIXCHAR")
406v("THOUSEP")
407v("YESEXPR")
408v("NOEXPR")
409v("CRNCYSTR")
410
411header("<locale.h>")
412v("LC_ALL")
413v("LC_COLLATE")
414v("LC_CTYPE")
415v("LC_MESSAGES")
416v("LC_MONETARY")
417v("LC_NUMERIC")
418v("LC_TIME")
419
420header("<netdb.h>")
421v("IPPORT_RESERVED")
422v("HOST_NOT_FOUND")
423v("NO_DATA")
424v("NO_RECOVERY")
425v("TRY_AGAIN")
426v("AI_PASSIVE")
427v("AI_CANONNAME")
428v("AI_NUMERICHOST")
429v("AI_NUMERICSERV")
430v("AI_V4MAPPED")
431v("AI_ALL")
432v("AI_ADDRCONFIG")
433v("NI_NOFQDN")
434v("NI_NUMERICHOST")
435v("NI_NAMEREQD")
436v("NI_NUMERICSERV")
437v("NI_NUMERICSCOPE")
438v("NI_DGRAM")
439v("EAI_AGAIN")
440v("EAI_BADFLAGS")
441v("EAI_FAIL")
442v("EAI_FAMILY")
443v("EAI_MEMORY")
444v("EAI_NONAME")
445v("EAI_SERVICE")
446v("EAI_SOCKTYPE")
447v("EAI_SYSTEM")
448v("EAI_OVERFLOW")
449
450header("<net/if.h>")
451v("IF_NAMESIZE")
452
453header("<netinet/in.h>")
454v("IPPROTO_IP")
455v("IPPROTO_IPV6")
456v("IPPROTO_ICMP")
457v("IPPROTO_ICMPV6")
458v("IPPROTO_RAW")
459v("IPPROTO_TCP")
460v("IPPROTO_UDP")
461v("INADDR_ANY", "InAddrScalar")
462v("INADDR_LOOPBACK", "InAddrScalar")
463v("INADDR_BROADCAST", "InAddrScalar")
464v("INET_ADDRSTRLEN")
465v("INET6_ADDRSTRLEN")
466v("IPV6_JOIN_GROUP")
467v("IPV6_LEAVE_GROUP")
468v("IPV6_MULTICAST_HOPS")
469v("IPV6_MULTICAST_IF")
470v("IPV6_MULTICAST_LOOP")
471v("IPV6_UNICAST_HOPS")
472v("IPV6_V6ONLY")
473
474header("<netinet/tcp.h>")
475v("TCP_NODELAY")
476
477header("<nl_types.h>")
478v("NL_SETD")
479v("NL_CAT_LOCALE")
480
481header("<poll.h>")
482v("POLLIN", "cshort")
483v("POLLRDNORM", "cshort")
484v("POLLRDBAND", "cshort")
485v("POLLPRI", "cshort")
486v("POLLOUT", "cshort")
487v("POLLWRNORM", "cshort")
488v("POLLWRBAND", "cshort")
489v("POLLERR", "cshort")
490v("POLLHUP", "cshort")
491v("POLLNVAL", "cshort")
492
493header("<pthread.h>")
494v("PTHREAD_BARRIER_SERIAL_THREAD")
495v("PTHREAD_CANCEL_ASYNCHRONOUS")
496v("PTHREAD_CANCEL_ENABLE")
497v("PTHREAD_CANCEL_DEFERRED")
498v("PTHREAD_CANCEL_DISABLE")
499  #v("PTHREAD_CANCELED")
500  #v("PTHREAD_COND_INITIALIZER")
501v("PTHREAD_CREATE_DETACHED")
502v("PTHREAD_CREATE_JOINABLE")
503v("PTHREAD_EXPLICIT_SCHED")
504v("PTHREAD_INHERIT_SCHED")
505v("PTHREAD_MUTEX_DEFAULT")
506v("PTHREAD_MUTEX_ERRORCHECK")
507  #v("PTHREAD_MUTEX_INITIALIZER")
508v("PTHREAD_MUTEX_NORMAL")
509v("PTHREAD_MUTEX_RECURSIVE")
510  #v("PTHREAD_ONCE_INIT")
511v("PTHREAD_PRIO_INHERIT")
512v("PTHREAD_PRIO_NONE")
513v("PTHREAD_PRIO_PROTECT")
514v("PTHREAD_PROCESS_SHARED")
515v("PTHREAD_PROCESS_PRIVATE")
516v("PTHREAD_SCOPE_PROCESS")
517v("PTHREAD_SCOPE_SYSTEM")
518
519header("<sched.h>")
520v("SCHED_FIFO")
521v("SCHED_RR")
522v("SCHED_SPORADIC")
523v("SCHED_OTHER")
524
525header("<semaphore.h>")
526v("SEM_FAILED", "pointer")
527
528header("<signal.h>")
529v("SIGEV_NONE")
530v("SIGEV_SIGNAL")
531v("SIGEV_THREAD")
532v("SIGABRT")
533v("SIGALRM")
534v("SIGBUS")
535v("SIGCHLD")
536v("SIGCONT")
537v("SIGFPE")
538v("SIGHUP")
539v("SIGILL")
540v("SIGINT")
541v("SIGKILL")
542v("SIGPIPE")
543v("SIGQUIT")
544v("SIGSEGV")
545v("SIGSTOP")
546v("SIGTERM")
547v("SIGTSTP")
548v("SIGTTIN")
549v("SIGTTOU")
550v("SIGUSR1")
551v("SIGUSR2")
552v("SIGPOLL")
553v("SIGPROF")
554v("SIGSYS")
555v("SIGTRAP")
556v("SIGURG")
557v("SIGVTALRM")
558v("SIGXCPU")
559v("SIGXFSZ")
560v("SA_NOCLDSTOP")
561v("SIG_BLOCK")
562v("SIG_UNBLOCK")
563v("SIG_SETMASK")
564v("SA_ONSTACK")
565v("SA_RESETHAND")
566v("SA_RESTART")
567v("SA_SIGINFO")
568v("SA_NOCLDWAIT")
569v("SA_NODEFER")
570v("SS_ONSTACK")
571v("SS_DISABLE")
572v("MINSIGSTKSZ")
573v("SIGSTKSZ")
574
575v("SIG_HOLD", "Sighandler")
576v("SIG_DFL", "Sighandler")
577v("SIG_ERR", "Sighandler")
578v("SIG_IGN", "Sighandler")
579
580header("<sys/ipc.h>")
581v("IPC_CREAT")
582v("IPC_EXCL")
583v("IPC_NOWAIT")
584v("IPC_PRIVATE")
585v("IPC_RMID")
586v("IPC_SET")
587v("IPC_STAT")
588
589header("<sys/mman.h>")
590v("PROT_READ")
591v("PROT_WRITE")
592v("PROT_EXEC")
593v("PROT_NONE")
594v("MAP_ANONYMOUS")
595v("MAP_FIXED_NOREPLACE")
596v("MAP_NORESERVE")
597v("MAP_SHARED")
598v("MAP_PRIVATE")
599v("MAP_FIXED")
600v("MS_ASYNC")
601v("MS_SYNC")
602v("MS_INVALIDATE")
603v("MCL_CURRENT")
604v("MCL_FUTURE")
605v("MAP_FAILED", "pointer")
606v("POSIX_MADV_NORMAL")
607v("POSIX_MADV_SEQUENTIAL")
608v("POSIX_MADV_RANDOM")
609v("POSIX_MADV_WILLNEED")
610v("POSIX_MADV_DONTNEED")
611v("POSIX_TYPED_MEM_ALLOCATE")
612v("POSIX_TYPED_MEM_ALLOCATE_CONTIG")
613v("POSIX_TYPED_MEM_MAP_ALLOCATABLE")
614v("MAP_POPULATE", no_other = true)
615
616header("<sys/resource.h>")
617v("RLIMIT_NOFILE")
618
619header("<sys/select.h>")
620v("FD_SETSIZE")
621
622header("<sys/socket.h>")
623v("MSG_CTRUNC")
624v("MSG_DONTROUTE")
625v("MSG_EOR")
626v("MSG_OOB")
627v("SCM_RIGHTS")
628v("SO_ACCEPTCONN")
629v("SO_BROADCAST")
630v("SO_DEBUG")
631v("SO_DONTROUTE")
632v("SO_ERROR")
633v("SO_KEEPALIVE")
634v("SO_LINGER")
635v("SO_OOBINLINE")
636v("SO_RCVBUF")
637v("SO_RCVLOWAT")
638v("SO_RCVTIMEO")
639v("SO_REUSEADDR")
640v("SO_SNDBUF")
641v("SO_SNDLOWAT")
642v("SO_SNDTIMEO")
643v("SO_TYPE")
644v("SOCK_DGRAM")
645v("SOCK_RAW")
646v("SOCK_SEQPACKET")
647v("SOCK_STREAM")
648v("SOCK_CLOEXEC", no_other = true)
649v("SOL_SOCKET")
650v("SOMAXCONN")
651v("SO_REUSEPORT", no_other = true)
652v("MSG_NOSIGNAL", no_other = true)
653v("MSG_PEEK")
654v("MSG_TRUNC")
655v("MSG_WAITALL")
656v("AF_INET")
657v("AF_INET6")
658v("AF_UNIX")
659v("AF_UNSPEC")
660v("SHUT_RD")
661v("SHUT_RDWR")
662v("SHUT_WR")
663
664header("<sys/stat.h>")
665v("S_IFBLK")
666v("S_IFCHR")
667v("S_IFDIR")
668v("S_IFIFO")
669v("S_IFLNK")
670v("S_IFMT")
671v("S_IFREG")
672v("S_IFSOCK")
673v("S_IRGRP")
674v("S_IROTH")
675v("S_IRUSR")
676v("S_IRWXG")
677v("S_IRWXO")
678v("S_IRWXU")
679v("S_ISGID")
680v("S_ISUID")
681v("S_ISVTX")
682v("S_IWGRP")
683v("S_IWOTH")
684v("S_IWUSR")
685v("S_IXGRP")
686v("S_IXOTH")
687v("S_IXUSR")
688
689header("<sys/statvfs.h>")
690v("ST_RDONLY")
691v("ST_NOSUID")
692
693header("<sys/wait.h>")
694v("WNOHANG")
695v("WUNTRACED")
696  #v("WEXITSTATUS")
697  #v("WSTOPSIG")
698  #v("WTERMSIG")
699v("WEXITED")
700v("WSTOPPED")
701v("WCONTINUED")
702v("WNOWAIT")
703v("P_ALL")
704v("P_PID")
705v("P_PGID")
706
707header("<spawn.h>")
708v("POSIX_SPAWN_RESETIDS")
709v("POSIX_SPAWN_SETPGROUP")
710v("POSIX_SPAWN_SETSCHEDPARAM")
711v("POSIX_SPAWN_SETSCHEDULER")
712v("POSIX_SPAWN_SETSIGDEF")
713v("POSIX_SPAWN_SETSIGMASK")
714v("POSIX_SPAWN_USEVFORK", no_other = true)
715
716header("<stdio.h>")
717v("_IOFBF")
718v("_IONBF")
719
720header("<time.h>")
721v("CLOCKS_PER_SEC", "clong")
722v("CLOCK_PROCESS_CPUTIME_ID")
723v("CLOCK_THREAD_CPUTIME_ID")
724v("CLOCK_REALTIME")
725v("TIMER_ABSTIME")
726v("CLOCK_MONOTONIC")
727
728header("<unistd.h>")
729v("_POSIX_ASYNC_IO")
730v("_POSIX_PRIO_IO")
731v("_POSIX_SYNC_IO")
732v("F_OK")
733v("R_OK")
734v("W_OK")
735v("X_OK")
736v("_CS_PATH")
737v("_CS_POSIX_V6_ILP32_OFF32_CFLAGS")
738v("_CS_POSIX_V6_ILP32_OFF32_LDFLAGS")
739v("_CS_POSIX_V6_ILP32_OFF32_LIBS")
740v("_CS_POSIX_V6_ILP32_OFFBIG_CFLAGS")
741v("_CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS")
742v("_CS_POSIX_V6_ILP32_OFFBIG_LIBS")
743v("_CS_POSIX_V6_LP64_OFF64_CFLAGS")
744v("_CS_POSIX_V6_LP64_OFF64_LDFLAGS")
745v("_CS_POSIX_V6_LP64_OFF64_LIBS")
746v("_CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS")
747v("_CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS")
748v("_CS_POSIX_V6_LPBIG_OFFBIG_LIBS")
749v("_CS_POSIX_V6_WIDTH_RESTRICTED_ENVS")
750v("F_LOCK")
751v("F_TEST")
752v("F_TLOCK")
753v("F_ULOCK")
754v("_PC_2_SYMLINKS")
755v("_PC_ALLOC_SIZE_MIN")
756v("_PC_ASYNC_IO")
757v("_PC_CHOWN_RESTRICTED")
758v("_PC_FILESIZEBITS")
759v("_PC_LINK_MAX")
760v("_PC_MAX_CANON")
761v("_PC_MAX_INPUT")
762v("_PC_NAME_MAX")
763v("_PC_NO_TRUNC")
764v("_PC_PATH_MAX")
765v("_PC_PIPE_BUF")
766v("_PC_PRIO_IO")
767v("_PC_REC_INCR_XFER_SIZE")
768v("_PC_REC_MIN_XFER_SIZE")
769v("_PC_REC_XFER_ALIGN")
770v("_PC_SYMLINK_MAX")
771v("_PC_SYNC_IO")
772v("_PC_VDISABLE")
773v("_SC_2_C_BIND")
774v("_SC_2_C_DEV")
775v("_SC_2_CHAR_TERM")
776v("_SC_2_FORT_DEV")
777v("_SC_2_FORT_RUN")
778v("_SC_2_LOCALEDEF")
779v("_SC_2_PBS")
780v("_SC_2_PBS_ACCOUNTING")
781v("_SC_2_PBS_CHECKPOINT")
782v("_SC_2_PBS_LOCATE")
783v("_SC_2_PBS_MESSAGE")
784v("_SC_2_PBS_TRACK")
785v("_SC_2_SW_DEV")
786v("_SC_2_UPE")
787v("_SC_2_VERSION")
788v("_SC_ADVISORY_INFO")
789v("_SC_AIO_LISTIO_MAX")
790v("_SC_AIO_MAX")
791v("_SC_AIO_PRIO_DELTA_MAX")
792v("_SC_ARG_MAX")
793v("_SC_ASYNCHRONOUS_IO")
794v("_SC_ATEXIT_MAX")
795v("_SC_BARRIERS")
796v("_SC_BC_BASE_MAX")
797v("_SC_BC_DIM_MAX")
798v("_SC_BC_SCALE_MAX")
799v("_SC_BC_STRING_MAX")
800v("_SC_CHILD_MAX")
801v("_SC_CLK_TCK")
802v("_SC_CLOCK_SELECTION")
803v("_SC_COLL_WEIGHTS_MAX")
804v("_SC_CPUTIME")
805v("_SC_DELAYTIMER_MAX")
806v("_SC_EXPR_NEST_MAX")
807v("_SC_FSYNC")
808v("_SC_GETGR_R_SIZE_MAX")
809v("_SC_GETPW_R_SIZE_MAX")
810v("_SC_HOST_NAME_MAX")
811v("_SC_IOV_MAX")
812v("_SC_IPV6")
813v("_SC_JOB_CONTROL")
814v("_SC_LINE_MAX")
815v("_SC_LOGIN_NAME_MAX")
816v("_SC_MAPPED_FILES")
817v("_SC_MEMLOCK")
818v("_SC_MEMLOCK_RANGE")
819v("_SC_MEMORY_PROTECTION")
820v("_SC_MESSAGE_PASSING")
821v("_SC_MONOTONIC_CLOCK")
822v("_SC_MQ_OPEN_MAX")
823v("_SC_MQ_PRIO_MAX")
824v("_SC_NGROUPS_MAX")
825v("_SC_OPEN_MAX")
826v("_SC_PAGESIZE") # Synonym for _SC_PAGE_SIZE
827v("_SC_PRIORITIZED_IO")
828v("_SC_PRIORITY_SCHEDULING")
829v("_SC_RAW_SOCKETS")
830v("_SC_RE_DUP_MAX")
831v("_SC_READER_WRITER_LOCKS")
832v("_SC_REALTIME_SIGNALS")
833v("_SC_REGEXP")
834v("_SC_RTSIG_MAX")
835v("_SC_SAVED_IDS")
836v("_SC_SEM_NSEMS_MAX")
837v("_SC_SEM_VALUE_MAX")
838v("_SC_SEMAPHORES")
839v("_SC_SHARED_MEMORY_OBJECTS")
840v("_SC_SHELL")
841v("_SC_SIGQUEUE_MAX")
842v("_SC_SPAWN")
843v("_SC_SPIN_LOCKS")
844v("_SC_SPORADIC_SERVER")
845v("_SC_SS_REPL_MAX")
846v("_SC_STREAM_MAX")
847v("_SC_SYMLOOP_MAX")
848v("_SC_SYNCHRONIZED_IO")
849v("_SC_THREAD_ATTR_STACKADDR")
850v("_SC_THREAD_ATTR_STACKSIZE")
851v("_SC_THREAD_CPUTIME")
852v("_SC_THREAD_DESTRUCTOR_ITERATIONS")
853v("_SC_THREAD_KEYS_MAX")
854v("_SC_THREAD_PRIO_INHERIT")
855v("_SC_THREAD_PRIO_PROTECT")
856v("_SC_THREAD_PRIORITY_SCHEDULING")
857v("_SC_THREAD_PROCESS_SHARED")
858v("_SC_THREAD_SAFE_FUNCTIONS")
859v("_SC_THREAD_SPORADIC_SERVER")
860v("_SC_THREAD_STACK_MIN")
861v("_SC_THREAD_THREADS_MAX")
862v("_SC_THREADS")
863v("_SC_TIMEOUTS")
864v("_SC_TIMER_MAX")
865v("_SC_TIMERS")
866v("_SC_TRACE")
867v("_SC_TRACE_EVENT_FILTER")
868v("_SC_TRACE_EVENT_NAME_MAX")
869v("_SC_TRACE_INHERIT")
870v("_SC_TRACE_LOG")
871v("_SC_TRACE_NAME_MAX")
872v("_SC_TRACE_SYS_MAX")
873v("_SC_TRACE_USER_EVENT_MAX")
874v("_SC_TTY_NAME_MAX")
875v("_SC_TYPED_MEMORY_OBJECTS")
876v("_SC_TZNAME_MAX")
877v("_SC_V6_ILP32_OFF32")
878v("_SC_V6_ILP32_OFFBIG")
879v("_SC_V6_LP64_OFF64")
880v("_SC_V6_LPBIG_OFFBIG")
881v("_SC_VERSION")
882v("_SC_XBS5_ILP32_OFF32")
883v("_SC_XBS5_ILP32_OFFBIG")
884v("_SC_XBS5_LP64_OFF64")
885v("_SC_XBS5_LPBIG_OFFBIG")
886v("_SC_XOPEN_CRYPT")
887v("_SC_XOPEN_ENH_I18N")
888v("_SC_XOPEN_LEGACY")
889v("_SC_XOPEN_REALTIME")
890v("_SC_XOPEN_REALTIME_THREADS")
891v("_SC_XOPEN_SHM")
892v("_SC_XOPEN_STREAMS")
893v("_SC_XOPEN_UNIX")
894v("_SC_XOPEN_VERSION")
895v("_SC_NPROCESSORS_ONLN")
896v("SEEK_SET")
897v("SEEK_CUR")
898v("SEEK_END")
899
900main()
901