summaryrefslogtreecommitdiff
path: root/AK
diff options
context:
space:
mode:
authorcsb6 <cblakley15@gmail.com>2021-08-31 18:23:29 -0700
committerLinus Groh <mail@linusgroh.de>2021-11-23 18:48:59 +0000
commitd55dfe241854b9bde570edee15f2f5c5103088df (patch)
treeecd7cf77d5cbb9b82a2e2e888c0080917402db42 /AK
parent6386b54746a6962cb9f986679842015e1eaa5c77 (diff)
downloadserenity-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.
Diffstat (limited to 'AK')
-rw-r--r--AK/Platform.h8
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