
I recently came across LIBCXXABI_USE_LLVM_UNWINDER and was surprised to notice it was disabled by default. Since we build libunwind by default and ship it in the LLVM toolchain, it would seem to make sense that libc++ and libc++abi rely on libunwind for unwinding instead of using the system-provided unwinding library (if any). Most importantly, using the system unwinder implies that libc++abi is ABI compatible with that system unwinder, which is not necessarily the case. Hence, it makes a lot more sense to instead default to using the known-to-be-compatible LLVM unwinder, and let vendors manually select a different unwinder if desired. As a follow-up change, we should probably apply the same default to compiler-rt. Differential Revision: https://reviews.llvm.org/D150897 Fixes #77662 rdar://120801778
21 lines
903 B
CMake
21 lines
903 B
CMake
set(CMAKE_BUILD_TYPE MinSizeRel CACHE STRING "")
|
|
set(CMAKE_POSITION_INDEPENDENT_CODE OFF CACHE BOOL "")
|
|
|
|
set(LIBCXX_USE_COMPILER_RT ON CACHE BOOL "")
|
|
set(LIBCXX_ABI_VERSION "1" CACHE STRING "")
|
|
set(LIBCXX_ENABLE_STATIC ON CACHE BOOL "")
|
|
set(LIBCXX_ENABLE_SHARED ON CACHE BOOL "")
|
|
set(LIBCXX_CXX_ABI libcxxabi CACHE STRING "")
|
|
set(LIBCXX_ENABLE_VENDOR_AVAILABILITY_ANNOTATIONS ON CACHE BOOL "")
|
|
set(LIBCXX_PSTL_CPU_BACKEND libdispatch CACHE STRING "")
|
|
|
|
set(LIBCXX_HERMETIC_STATIC_LIBRARY ON CACHE BOOL "")
|
|
set(LIBCXXABI_HERMETIC_STATIC_LIBRARY ON CACHE BOOL "")
|
|
|
|
set(LIBCXXABI_ENABLE_ASSERTIONS OFF CACHE BOOL "")
|
|
set(LIBCXXABI_ENABLE_FORGIVING_DYNAMIC_CAST ON CACHE BOOL "")
|
|
set(LIBCXXABI_USE_LLVM_UNWINDER OFF CACHE BOOL "") # libunwind is built separately
|
|
|
|
set(LIBCXX_TEST_CONFIG "apple-libc++-shared.cfg.in" CACHE STRING "")
|
|
set(LIBCXXABI_TEST_CONFIG "apple-libc++abi-shared.cfg.in" CACHE STRING "")
|