diff options
author | csb6 <cblakley15@gmail.com> | 2021-08-31 18:23:29 -0700 |
---|---|---|
committer | Linus Groh <mail@linusgroh.de> | 2021-11-23 18:48:59 +0000 |
commit | d55dfe241854b9bde570edee15f2f5c5103088df (patch) | |
tree | ecd7cf77d5cbb9b82a2e2e888c0080917402db42 | |
parent | 6386b54746a6962cb9f986679842015e1eaa5c77 (diff) | |
download | serenity-d55dfe241854b9bde570edee15f2f5c5103088df.zip |
AK: On macOS host builds, wrap unistd.h with missing extern "C"
During the build process on macOS, multiple versions of <unistd.h> were
being included (Apple's version and GCC's version). It appears that
all other places #include the version from GCC, but in Platform.h the
Apple header was being used. GCC's <unistd.h> is wrapped in
`extern "C"`, while Apple's is not. This causes a conflicting
declaration, so we need to wrap the #include with extern "C".
Issue has been observed on macOS Mojave.
See https://github.com/microsoft/vcpkg/issues/11320 for a similar issue.
-rw-r--r-- | AK/Platform.h | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/AK/Platform.h b/AK/Platform.h index ee51bcc3f9..15b3165cf4 100644 --- a/AK/Platform.h +++ b/AK/Platform.h @@ -87,9 +87,17 @@ #endif #ifndef __serenity__ +// On macOS (at least Mojave), Apple's version of this header is not wrapped +// in extern "C". +# ifdef AK_OS_MACOS +extern "C" { +# endif # include <unistd.h> # undef PAGE_SIZE # define PAGE_SIZE sysconf(_SC_PAGESIZE) +# ifdef AK_OS_MACOS +}; +# endif #endif #ifdef __cplusplus |