diff options
| author | Martin Storsjo <martin@martin.st> | 2018-01-05 20:48:29 +0000 |
|---|---|---|
| committer | Martin Storsjo <martin@martin.st> | 2018-01-05 20:48:29 +0000 |
| commit | bf02a09103347f7b56309864aaf5a5c294b1af9f (patch) | |
| tree | 5a694c15515fa4dbfa191e188ceac666cfd4464f /libcxx | |
| parent | f9d01a12d182dbc35ee96c48deb9512d2f2cd49e (diff) | |
| download | bcm5719-llvm-bf02a09103347f7b56309864aaf5a5c294b1af9f.tar.gz bcm5719-llvm-bf02a09103347f7b56309864aaf5a5c294b1af9f.zip | |
[cmake] Add a config option LIBCXX_HAS_WIN32_THREAD_API for enforcing win32 threads
This allows keeping libcxx using win32 threads even if a
version of pthread.h is installed.
This matches the existing cmake option LIBCXX_HAS_PTHREAD_API.
Also add missing documentation about the internal define
_LIBCPP_HAS_THREAD_API_WIN32.
Differential Revision: https://reviews.llvm.org/D41764
llvm-svn: 321896
Diffstat (limited to 'libcxx')
| -rw-r--r-- | libcxx/CMakeLists.txt | 19 | ||||
| -rw-r--r-- | libcxx/docs/DesignDocs/ThreadingSupportAPI.rst | 4 | ||||
| -rw-r--r-- | libcxx/include/__config_site.in | 1 |
3 files changed, 24 insertions, 0 deletions
diff --git a/libcxx/CMakeLists.txt b/libcxx/CMakeLists.txt index 0965ee73b4e..8b568709e8f 100644 --- a/libcxx/CMakeLists.txt +++ b/libcxx/CMakeLists.txt @@ -202,6 +202,7 @@ option(LIBCXX_ENABLE_MONOTONIC_CLOCK This option may only be set to OFF when LIBCXX_ENABLE_THREADS=OFF." ON) option(LIBCXX_HAS_MUSL_LIBC "Build libc++ with support for the Musl C library" OFF) option(LIBCXX_HAS_PTHREAD_API "Ignore auto-detection and force use of pthread API" OFF) +option(LIBCXX_HAS_WIN32_THREAD_API "Ignore auto-detection and force use of win32 thread API" OFF) option(LIBCXX_HAS_EXTERNAL_THREAD_API "Build libc++ with an externalized threading API. This option may only be set to ON when LIBCXX_ENABLE_THREADS=ON." OFF) @@ -273,6 +274,10 @@ if(NOT LIBCXX_ENABLE_THREADS) message(FATAL_ERROR "LIBCXX_BUILD_EXTERNAL_THREAD_LIBRARY can only be set " "to ON when LIBCXX_ENABLE_THREADS is also set to ON.") endif() + if (LIBCXX_HAS_WIN32_THREAD_API) + message(FATAL_ERROR "LIBCXX_HAS_WIN32_THREAD_API can only be set to ON" + " when LIBCXX_ENABLE_THREADS is also set to ON.") + endif() endif() @@ -287,6 +292,19 @@ if (LIBCXX_HAS_EXTERNAL_THREAD_API) "and LIBCXX_HAS_PTHREAD_API cannot be both" "set to ON at the same time.") endif() + if (LIBCXX_HAS_WIN32_THREAD_API) + message(FATAL_ERROR "The options LIBCXX_HAS_EXTERNAL_THREAD_API" + "and LIBCXX_HAS_WIN32_THREAD_API cannot be both" + "set to ON at the same time.") + endif() +endif() + +if (LIBCXX_HAS_PTHREAD_API) + if (LIBCXX_HAS_WIN32_THREAD_API) + message(FATAL_ERROR "The options LIBCXX_HAS_PTHREAD_API" + "and LIBCXX_HAS_WIN32_THREAD_API cannot be both" + "set to ON at the same time.") + endif() endif() # Ensure LLVM_USE_SANITIZER is not specified when LIBCXX_GENERATE_COVERAGE @@ -613,6 +631,7 @@ config_define_if_not(LIBCXX_ENABLE_THREAD_UNSAFE_C_FUNCTIONS _LIBCPP_HAS_NO_THRE config_define_if(LIBCXX_HAS_PTHREAD_API _LIBCPP_HAS_THREAD_API_PTHREAD) config_define_if(LIBCXX_HAS_EXTERNAL_THREAD_API _LIBCPP_HAS_THREAD_API_EXTERNAL) +config_define_if(LIBCXX_HAS_WIN32_THREAD_API _LIBCPP_HAS_THREAD_API_WIN32) config_define_if(LIBCXX_BUILD_EXTERNAL_THREAD_LIBRARY _LIBCPP_HAS_THREAD_LIBRARY_EXTERNAL) config_define_if(LIBCXX_HAS_MUSL_LIBC _LIBCPP_HAS_MUSL_LIBC) config_define_if(LIBCXX_NO_VCRUNTIME _LIBCPP_NO_VCRUNTIME) diff --git a/libcxx/docs/DesignDocs/ThreadingSupportAPI.rst b/libcxx/docs/DesignDocs/ThreadingSupportAPI.rst index 556c45b7e1f..330ce74cf77 100644 --- a/libcxx/docs/DesignDocs/ThreadingSupportAPI.rst +++ b/libcxx/docs/DesignDocs/ThreadingSupportAPI.rst @@ -66,6 +66,10 @@ Threading Configuration Macros This macro is defined when libc++ should use POSIX threads to implement the internal threading API. +**_LIBCPP_HAS_THREAD_API_WIN32** + This macro is defined when libc++ should use Win32 threads to implement the + internal threading API. + **_LIBCPP_HAS_THREAD_LIBRARY_EXTERNAL** This macro is defined when libc++ expects the definitions of the internal threading API to be provided by an external library. When defined diff --git a/libcxx/include/__config_site.in b/libcxx/include/__config_site.in index 86418a3e17b..8d980ff57cc 100644 --- a/libcxx/include/__config_site.in +++ b/libcxx/include/__config_site.in @@ -23,6 +23,7 @@ #cmakedefine _LIBCPP_HAS_MUSL_LIBC #cmakedefine _LIBCPP_HAS_THREAD_API_PTHREAD #cmakedefine _LIBCPP_HAS_THREAD_API_EXTERNAL +#cmakedefine _LIBCPP_HAS_THREAD_API_WIN32 #cmakedefine _LIBCPP_HAS_THREAD_LIBRARY_EXTERNAL #cmakedefine _LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS #cmakedefine _LIBCPP_NO_VCRUNTIME |

