diff options
author | Moritz Angermann <moritz.angermann@gmail.com> | 2016-10-09 18:19:26 -0400 |
---|---|---|
committer | Ben Gamari <ben@smart-cactus.org> | 2016-10-09 18:19:32 -0400 |
commit | 8dc72f3c33b0e724ddb690c9d494969980c10afd (patch) | |
tree | e3f886800e6eec8fd68a9470373b6743db673966 /rts/PosixSource.h | |
parent | bcd34451382e0d1b52ef82cb9d762e9d68bc0887 (diff) | |
download | haskell-8dc72f3c33b0e724ddb690c9d494969980c10afd.tar.gz |
Cleanup PosixSource.h
When trying to build arm64-apple-iso, the build fell over `strdup`, as
the arm64-apple-ios build did not fall into `darwin_HOST_OS`, and would
need `ios_HOST_OS`.
This diff tries to clean up PosixSource.h, instead of layering another
define on top.
As we use `strnlen` in sources that include PosixSource.h, and `strnlen`
is defined in POSIX.1-2008, the `_POSIX_C_SOURCE` and `_XOPEN_SOURCE`
are increased accordingly.
Furthermore the `_DARWIN_C_SOURCE` (required for `u_char`, etc. used in
sysctl.h) define is moved into `OSThreads.h` alongside a similar ifdef
for freebsd.
Test Plan: Build on all supported platforms.
Reviewers: austin, simonmar, erikd, kgardas, bgamari
Reviewed By: simonmar, erikd, kgardas, bgamari
Subscribers: Phyx, hvr, thomie
Differential Revision: https://phabricator.haskell.org/D2579
GHC Trac Issues: #12624
Diffstat (limited to 'rts/PosixSource.h')
-rw-r--r-- | rts/PosixSource.h | 23 |
1 files changed, 13 insertions, 10 deletions
diff --git a/rts/PosixSource.h b/rts/PosixSource.h index f4b880e525..0ba74dfa69 100644 --- a/rts/PosixSource.h +++ b/rts/PosixSource.h @@ -21,18 +21,21 @@ 9945:2002 or UNIX 03 and SUSv3. Please also see trac ticket #11757 for more information about switch to C99/C11. -*/ -#define _POSIX_C_SOURCE 200112L -#define _XOPEN_SOURCE 600 -#define __USE_MINGW_ANSI_STDIO 1 + However, the use of `strnlen`, which is strictly speaking only available in + IEEE Std 1003.1-2008 (XPG7), requires lifting the bounds, to be able to + compile ghc on systems that are strict about enforcing the standard, e.g. + Apples mobile platforms. + + Oracle's Solaris 11 supports only up to XPG6, hence the ifdef. + */ -#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: - error: syntax error before 'u_char' -*/ -#define _DARWIN_C_SOURCE 1 +#if defined(solaris2_HOST_OS) +#define _POSIX_C_SOURCE 200112L +#define _XOPEN_SOURCE 600 +#else +#define _POSIX_C_SOURCE 200809L +#define _XOPEN_SOURCE 700 #endif #endif /* POSIXSOURCE_H */ |