diff --git a/include/__config b/include/__config index c65f23abc..cdbfef37f 100644 --- a/include/__config +++ b/include/__config @@ -307,7 +307,7 @@ // random data even when using sandboxing mechanisms such as chroots, // Capsicum, etc. # define _LIBCPP_USING_ARC4_RANDOM -#elif defined(__Fuchsia__) +#elif defined(__Fuchsia__) || defined(__wasi__) # define _LIBCPP_USING_GETENTROPY #elif defined(__native_client__) // NaCl's sandbox (which PNaCl also runs in) doesn't allow filesystem access, @@ -341,7 +341,7 @@ # if defined(__FreeBSD__) # define _LIBCPP_HAS_QUICK_EXIT # define _LIBCPP_HAS_C11_FEATURES -# elif defined(__Fuchsia__) +# elif defined(__Fuchsia__) || defined(__wasi__) # define _LIBCPP_HAS_QUICK_EXIT # define _LIBCPP_HAS_TIMESPEC_GET # define _LIBCPP_HAS_C11_FEATURES @@ -1133,6 +1133,7 @@ _LIBCPP_FUNC_VIS extern "C" void __sanitizer_annotate_contiguous_container( !defined(_LIBCPP_HAS_THREAD_API_EXTERNAL) # if defined(__FreeBSD__) || \ defined(__Fuchsia__) || \ + defined(__wasi__) || \ defined(__NetBSD__) || \ defined(__linux__) || \ defined(__GNU__) || \ @@ -1179,7 +1180,7 @@ _LIBCPP_FUNC_VIS extern "C" void __sanitizer_annotate_contiguous_container( #endif #if defined(__BIONIC__) || defined(__CloudABI__) || \ - defined(__Fuchsia__) || defined(_LIBCPP_HAS_MUSL_LIBC) + defined(__Fuchsia__) || defined(__wasi__) || defined(_LIBCPP_HAS_MUSL_LIBC) #define _LIBCPP_PROVIDES_DEFAULT_RUNE_TABLE #endif diff --git a/include/__locale b/include/__locale index d9d2682c4..1cafca74f 100644 --- a/include/__locale +++ b/include/__locale @@ -35,6 +35,9 @@ # include #elif defined(__Fuchsia__) # include +#elif defined(__wasi__) +// WASI libc uses musl's locales support. +# include #elif defined(_LIBCPP_HAS_MUSL_LIBC) # include #endif diff --git a/src/include/config_elast.h b/src/include/config_elast.h index 18391afa0..501cbc4ff 100644 --- a/src/include/config_elast.h +++ b/src/include/config_elast.h @@ -23,6 +23,8 @@ #define _LIBCPP_ELAST __ELASTERROR #elif defined(__Fuchsia__) // No _LIBCPP_ELAST needed on Fuchsia +#elif defined(__wasi__) +// No _LIBCPP_ELAST needed on WASI #elif defined(__linux__) || defined(_LIBCPP_HAS_MUSL_LIBC) #define _LIBCPP_ELAST 4095 #elif defined(__APPLE__) diff --git a/src/thread.cpp b/src/thread.cpp index bc5dfb243..29b06fdf6 100644 --- a/src/thread.cpp +++ b/src/thread.cpp @@ -23,9 +23,9 @@ # endif #endif // defined(__unix__) || (defined(__APPLE__) && defined(__MACH__)) -#if defined(__unix__) || (defined(__APPLE__) && defined(__MACH__)) || defined(__CloudABI__) || defined(__Fuchsia__) +#if defined(__unix__) || (defined(__APPLE__) && defined(__MACH__)) || defined(__CloudABI__) || defined(__Fuchsia__) || defined(__wasi__) # include -#endif // defined(__unix__) || (defined(__APPLE__) && defined(__MACH__)) || defined(__CloudABI__) || defined(__Fuchsia__) +#endif // defined(__unix__) || (defined(__APPLE__) && defined(__MACH__)) || defined(__CloudABI__) || defined(__Fuchsia__) || defined(__wasi__) #if defined(__NetBSD__) #pragma weak pthread_create // Do not create libpthread dependency diff --git a/test/support/test_macros.h b/test/support/test_macros.h index 8e809bfc3..330d684e3 100644 --- a/test/support/test_macros.h +++ b/test/support/test_macros.h @@ -148,7 +148,7 @@ // Specifically, FreeBSD does NOT have timespec_get, even though they have all // the rest of C11 - this is PR#38495 # define TEST_HAS_C11_FEATURES -# elif defined(__Fuchsia__) +# elif defined(__Fuchsia__) || defined(__wasi__) # define TEST_HAS_C11_FEATURES # define TEST_HAS_TIMESPEC_GET # elif defined(__linux__)