Another attempt to get these #defines right
authorSimon Marlow <marlowsd@gmail.com>
Tue, 25 May 2010 15:43:13 +0000 (15:43 +0000)
committerSimon Marlow <marlowsd@gmail.com>
Tue, 25 May 2010 15:43:13 +0000 (15:43 +0000)
Apparently on Solaris it is an error to omit _ISOC99_SOURCE when using
_POSIX_C_SOURCE==200112L.

rts/PosixSource.h

index 23101ea..fa61b99 100644 (file)
 #define _POSIX_C_SOURCE 200112L
 #define _XOPEN_SOURCE   600
 
+#if !defined(freebsd_HOST_OS)
+// FreeBSD takes a different approach to _ISOC99_SOURCE: on FreeBSD it
+// means "I want *just* C99 things", whereas on GNU libc and Solaris
+// it means "I also want C99 things".  
+//
+// On both GNU libc and FreeBSD, _ISOC99_SOURCE is implied by
+// _XOPEN_SOURCE==600, but on Solaris it is an error to omit it.
+//
+#define _ISOC99_SOURCE
+#endif
+
 #if defined(darwin_HOST_OS)
 /* If we don't define this the including sysctl breaks with things like
     /usr/include/bsm/audit.h:224:0: