blob: 3d02b939ca77ae488133378b3afbba4216396f07 [file] [log] [blame]
diff --git a/CMakeLists.txt b/CMakeLists.txt
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -89,6 +89,7 @@
option(LIBCXXABI_USE_COMPILER_RT "Use compiler-rt instead of libgcc" OFF)
option(LIBCXXABI_ENABLE_THREADS "Build with threads enabled" ON)
option(LIBCXXABI_HAS_PTHREAD_API "Ignore auto-detection and force use of pthread API" OFF)
+option(LIBCXXABI_HAS_WIN32_THREAD_API "Ignore auto-detection and force use of win32 thread API" OFF)
option(LIBCXXABI_HAS_EXTERNAL_THREAD_API
"Build libc++abi with an externalized threading API.
This option may only be set to ON when LIBCXXABI_ENABLE_THREADS=ON." OFF)
@@ -374,6 +375,11 @@
" be set to ON when LIBCXXABI_ENABLE_THREADS"
" is also set to ON.")
endif()
+ if (LIBCXXABI_HAS_WIN32_THREAD_API)
+ message(FATAL_ERROR "LIBCXXABI_HAS_WIN32_THREAD_API can only"
+ " be set to ON when LIBCXXABI_ENABLE_THREADS"
+ " is also set to ON.")
+ endif()
if (LIBCXXABI_HAS_EXTERNAL_THREAD_API)
message(FATAL_ERROR "LIBCXXABI_HAS_EXTERNAL_THREAD_API can only"
" be set to ON when LIBCXXABI_ENABLE_THREADS"
@@ -394,6 +400,11 @@
" and LIBCXXABI_HAS_PTHREAD_API cannot be both"
" set to ON at the same time.")
endif()
+ if (LIBCXXABI_HAS_WIN32_THREAD_API)
+ message(FATAL_ERROR "The options LIBCXXABI_HAS_EXTERNAL_THREAD_API"
+ " and LIBCXXABI_HAS_WIN32_THREAD_API cannot be both"
+ " set to ON at the same time.")
+ endif()
if (LIBCXXABI_BUILD_EXTERNAL_THREAD_LIBRARY)
message(FATAL_ERROR "The options LIBCXXABI_BUILD_EXTERNAL_THREAD_LIBRARY"
" and LIBCXXABI_HAS_EXTERNAL_THREAD_API cannot be both"
@@ -401,6 +412,14 @@
endif()
endif()
+if (LIBCXXABI_HAS_PTHREAD_API)
+ if (LIBCXXABI_HAS_WIN32_THREAD_API)
+ message(FATAL_ERROR "The options LIBCXXABI_HAS_PTHREAD_API"
+ "and LIBCXXABI_HAS_WIN32_THREAD_API cannot be both"
+ "set to ON at the same time.")
+ endif()
+endif()
+
if (LLVM_ENABLE_MODULES)
# Ignore that the rest of the modules flags are now unused.
add_compile_flags_if_supported(-Wno-unused-command-line-argument)
@@ -428,6 +447,10 @@
add_definitions(-D_LIBCPP_HAS_THREAD_API_PTHREAD)
endif()
+if (LIBCXXABI_HAS_WIN32_THREAD_API)
+ add_definitions(-D_LIBCPP_HAS_THREAD_API_WIN32)
+endif()
+
if (LIBCXXABI_HAS_EXTERNAL_THREAD_API)
add_definitions(-D_LIBCPP_HAS_THREAD_API_EXTERNAL)
endif()