
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
13 lines
489 B
CMake
13 lines
489 B
CMake
set(LIBCXX_CXX_ABI libcxxabi CACHE STRING "")
|
|
|
|
set(LIBCXXABI_ENABLE_SHARED OFF CACHE BOOL "")
|
|
set(LIBCXX_ENABLE_STATIC_ABI_LIBRARY ON CACHE BOOL "")
|
|
|
|
set(LIBCXX_USE_COMPILER_RT ON CACHE BOOL "")
|
|
set(LIBCXXABI_USE_COMPILER_RT ON CACHE BOOL "")
|
|
set(LIBUNWIND_USE_COMPILER_RT ON CACHE BOOL "")
|
|
|
|
# Without this flag, 'long double' (which is 80 bit on x86 mingw, but
|
|
# 64 bit in MSVC) isn't handled correctly in printf.
|
|
set(LIBCXX_EXTRA_SITE_DEFINES "__USE_MINGW_ANSI_STDIO=1" CACHE STRING "")
|