mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2024-12-01 09:41:08 +00:00
[libcxxabi] Cleanup and adapt for r291275. NFC.
+ Now that libcxxabi shares the same threading API as libcxx, a whole chunk of code in src/config.h is made redundant (I missed this earlier). + r291275 split off the externalized-thread-api libcxx configuration from the external-thread-library libcxx configuration. libcxxabi should follow the same approach. llvm-svn: 291440
This commit is contained in:
parent
20f0cf9767
commit
a573fe25e6
@ -125,6 +125,9 @@ option(LIBCXXABI_HAS_PTHREAD_API "Ignore auto-detection and force use of pthread
|
||||
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)
|
||||
option(LIBCXXABI_BUILD_EXTERNAL_THREAD_LIBRARY
|
||||
"Build libc++abi with an externalized threading library.
|
||||
This option may only be set to ON when LIBCXXABI_ENABLE_THREADS=ON" OFF)
|
||||
option(LIBCXXABI_BUILD_32_BITS "Build 32 bit libc++abi." ${LLVM_BUILD_32_BITS})
|
||||
option(LIBCXXABI_INCLUDE_TESTS "Generate build targets for the libc++abi unit tests." ${LLVM_INCLUDE_TESTS})
|
||||
set(LIBCXXABI_TARGET_TRIPLE "" CACHE STRING "Target triple for cross compiling.")
|
||||
@ -367,16 +370,28 @@ if (NOT LIBCXXABI_ENABLE_THREADS)
|
||||
" be set to ON when LIBCXXABI_ENABLE_THREADS"
|
||||
" is also set to ON.")
|
||||
endif()
|
||||
if (LIBCXXABI_BUILD_EXTERNAL_THREAD_LIBRARY)
|
||||
message(FATAL_ERROR "LIBCXXABI_BUILD_EXTERNAL_THREAD_LIBRARY can only"
|
||||
" be set to ON when LIBCXXABI_ENABLE_THREADS"
|
||||
" is also set to ON.")
|
||||
endif()
|
||||
add_definitions(-D_LIBCXXABI_HAS_NO_THREADS)
|
||||
endif()
|
||||
|
||||
if (LIBCXXABI_HAS_PTHREAD_API AND LIBCXXABI_HAS_EXTERNAL_THREAD_API)
|
||||
message(FATAL_ERROR "The options LIBCXXABI_HAS_EXTERNAL_THREAD_API"
|
||||
"and LIBCXXABI_HAS_PTHREAD_API cannot be both"
|
||||
"set to ON at the same time.")
|
||||
if (LIBCXXABI_HAS_EXTERNAL_THREAD_API)
|
||||
if (LIBCXXABI_HAS_PTHREAD_API)
|
||||
message(FATAL_ERROR "The options LIBCXXABI_HAS_EXTERNAL_THREAD_API"
|
||||
" and LIBCXXABI_HAS_PTHREAD_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"
|
||||
" set to ON at the same time.")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if (LIBCXXABI_HAS_EXTERNAL_THREAD_API AND LIBCXXABI_ENABLE_SHARED)
|
||||
if (LIBCXXABI_BUILD_EXTERNAL_THREAD_LIBRARY AND LIBCXXABI_ENABLE_SHARED)
|
||||
# Need to allow unresolved symbols if this is to work with shared library builds
|
||||
if (APPLE)
|
||||
add_link_flags("-undefined dynamic_lookup")
|
||||
@ -388,11 +403,14 @@ endif()
|
||||
|
||||
if (LIBCXXABI_HAS_PTHREAD_API)
|
||||
add_definitions(-D_LIBCPP_HAS_THREAD_API_PTHREAD)
|
||||
add_definitions(-D_LIBCXXABI_USE_THREAD_API_PTHREAD)
|
||||
endif()
|
||||
|
||||
if (LIBCXXABI_HAS_EXTERNAL_THREAD_API)
|
||||
add_definitions(-D_LIBCXXABI_HAS_THREAD_API_EXTERNAL)
|
||||
add_definitions(-D_LIBCPP_HAS_THREAD_API_EXTERNAL)
|
||||
endif()
|
||||
|
||||
if (LIBCXXABI_BUILD_EXTERNAL_THREAD_LIBRARY)
|
||||
add_definitions(-D_LIBCPP_HAS_THREAD_LIBRARY_EXTERNAL)
|
||||
endif()
|
||||
|
||||
if (MSVC)
|
||||
|
@ -16,41 +16,6 @@
|
||||
|
||||
#include <unistd.h>
|
||||
|
||||
#ifndef __has_attribute
|
||||
#define __has_attribute(x) 0
|
||||
#endif
|
||||
|
||||
// Configure inline visibility attributes
|
||||
#if defined(_WIN32)
|
||||
#if defined(_MSC_VER) && !defined(__clang__)
|
||||
// Using Microsoft Visual C++ compiler
|
||||
#define _LIBCXXABI_INLINE_VISIBILITY __forceinline
|
||||
#else
|
||||
#if __has_attribute(__internal_linkage__)
|
||||
#define _LIBCXXABI_INLINE_VISIBILITY __attribute__ ((__internal_linkage__, __always_inline__))
|
||||
#else
|
||||
#define _LIBCXXABI_INLINE_VISIBILITY __attribute__ ((__always_inline__))
|
||||
#endif
|
||||
#endif
|
||||
#else
|
||||
#if __has_attribute(__internal_linkage__)
|
||||
#define _LIBCXXABI_INLINE_VISIBILITY __attribute__ ((__internal_linkage__, __always_inline__))
|
||||
#else
|
||||
#define _LIBCXXABI_INLINE_VISIBILITY __attribute__ ((__visibility__("hidden"), __always_inline__))
|
||||
#endif
|
||||
#endif
|
||||
|
||||
// Try and deduce a threading api if one has not been explicitly set.
|
||||
#if !defined(_LIBCXXABI_HAS_NO_THREADS) && \
|
||||
!defined(_LIBCXXABI_HAS_THREAD_API_EXTERNAL) && \
|
||||
!defined(_LIBCXXABI_USE_THREAD_API_PTHREAD)
|
||||
#if defined(_POSIX_THREADS) && _POSIX_THREADS >= 0
|
||||
#define _LIBCXXABI_USE_THREAD_API_PTHREAD
|
||||
#else
|
||||
#error "No thread API"
|
||||
#endif
|
||||
#endif
|
||||
|
||||
// Set this in the CXXFLAGS when you need it, because otherwise we'd have to
|
||||
// #if !defined(__linux__) && !defined(__APPLE__) && ...
|
||||
// and so-on for *every* platform.
|
||||
|
@ -17,7 +17,7 @@ pythonize_bool(LIBCXXABI_ENABLE_SHARED)
|
||||
pythonize_bool(LIBCXXABI_ENABLE_THREADS)
|
||||
pythonize_bool(LIBCXXABI_ENABLE_EXCEPTIONS)
|
||||
pythonize_bool(LIBCXXABI_USE_LLVM_UNWINDER)
|
||||
pythonize_bool(LIBCXXABI_HAS_EXTERNAL_THREAD_API)
|
||||
pythonize_bool(LIBCXXABI_BUILD_EXTERNAL_THREAD_LIBRARY)
|
||||
set(LIBCXXABI_TARGET_INFO "libcxx.test.target_info.LocalTI" CACHE STRING
|
||||
"TargetInfo to use when setting up test environment.")
|
||||
set(LIBCXXABI_EXECUTOR "None" CACHE STRING
|
||||
@ -35,7 +35,7 @@ else()
|
||||
set(LIBCXXABI_TEST_DEPS cxxabi_static)
|
||||
endif()
|
||||
|
||||
if (LIBCXXABI_HAS_EXTERNAL_THREAD_API)
|
||||
if (LIBCXXABI_BUILD_EXTERNAL_THREAD_LIBRARY)
|
||||
list(APPEND LIBCXXABI_TEST_DEPS cxx_external_threads)
|
||||
endif()
|
||||
|
||||
|
@ -19,7 +19,7 @@ config.enable_exceptions = "@LIBCXXABI_ENABLE_EXCEPTIONS@"
|
||||
config.host_triple = "@LLVM_HOST_TRIPLE@"
|
||||
config.target_triple = "@TARGET_TRIPLE@"
|
||||
config.use_target = len("@LIBCXXABI_TARGET_TRIPLE@") > 0
|
||||
config.cxx_ext_threads = "@LIBCXXABI_HAS_EXTERNAL_THREAD_API@"
|
||||
config.cxx_ext_threads = "@LIBCXXABI_BUILD_EXTERNAL_THREAD_LIBRARY@"
|
||||
|
||||
# Let the main config do the real work.
|
||||
lit_config.load_config(config, "@LIBCXXABI_SOURCE_DIR@/test/lit.cfg")
|
||||
|
Loading…
Reference in New Issue
Block a user