mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2025-02-07 01:47:09 +00:00
[CMake] Handle in-tree libc++ for sanitizer tests
We have been relying on the logic for C++ ABI library for sanitizer tests but that's incorrect since most tests require a full C++ library and not just C++ ABI. This change tries to address this by using the dependency on libc++ if available. Differential Revision: https://reviews.llvm.org/D118163
This commit is contained in:
parent
ee72b17386
commit
0606817d0b
@ -231,6 +231,15 @@ option(SANITIZER_USE_STATIC_CXX_ABI
|
||||
"Use static libc++abi." ${DEFAULT_SANITIZER_USE_STATIC_CXX_ABI})
|
||||
pythonize_bool(SANITIZER_USE_STATIC_CXX_ABI)
|
||||
|
||||
set(DEFAULT_SANITIZER_USE_STATIC_TEST_CXX OFF)
|
||||
if (DEFINED LIBCXX_ENABLE_SHARED AND NOT LIBCXX_ENABLE_SHARED)
|
||||
set(DEFAULT_SANITIZER_USE_STATIC_TEST_CXX ON)
|
||||
endif()
|
||||
|
||||
option(SANITIZER_USE_STATIC_TEST_CXX
|
||||
"Use static libc++ for tests." ${DEFAULT_SANITIZER_USE_STATIC_TEST_CXX})
|
||||
pythonize_bool(SANITIZER_USE_STATIC_TEST_CXX)
|
||||
|
||||
set(DEFAULT_COMPILER_RT_USE_BUILTINS_LIBRARY OFF)
|
||||
if (FUCHSIA)
|
||||
set(DEFAULT_COMPILER_RT_USE_BUILTINS_LIBRARY ON)
|
||||
@ -522,7 +531,15 @@ elseif (SANITIZER_CXX_ABI_LIBNAME STREQUAL "libstdc++")
|
||||
endif()
|
||||
|
||||
if (SANITIZER_TEST_CXX_LIBNAME STREQUAL "libc++")
|
||||
append_libcxx_libs(SANITIZER_TEST_CXX)
|
||||
if (SANITIZER_TEST_CXX_INTREE)
|
||||
if (SANITIZER_USE_STATIC_TEST_CXX AND (TARGET cxx_static OR HAVE_LIBCXX))
|
||||
list(APPEND SANITIZER_TEST_CXX_LIBRARIES cxx_static)
|
||||
elseif (TARGET cxx_shared OR HAVE_LIBCXX)
|
||||
list(APPEND SANITIZER_TEST_CXX_LIBRARIES cxx_shared)
|
||||
endif()
|
||||
else()
|
||||
append_list_if(COMPILER_RT_HAS_LIBCXX c++ SANITIZER_TEST_CXX_LIBRARIES)
|
||||
endif()
|
||||
elseif (SANITIZER_TEST_CXX_LIBNAME STREQUAL "libstdc++")
|
||||
append_list_if(COMPILER_RT_HAS_LIBSTDCXX stdc++ SANITIZER_TEST_CXX_LIBRARIES)
|
||||
endif()
|
||||
|
Loading…
x
Reference in New Issue
Block a user