Skip to content

Commit eed57dd

Browse files
committed
[libcxx] Allow tests to link with static libc++abi/libc++ even if the shared version is present
Summary: This is essentially D71894, but for libc++. This is needed for running libc++ tests over SSH. Reviewers: EricWF, ldionne, phosek, mehdi_amini, mclow.lists, jroelofs, bcraig, #libc Reviewed By: ldionne, phosek, #libc Subscribers: mgorny, christof, dexonsmith, libcxx-commits Tags: #libc Differential Revision: https://reviews.llvm.org/D72687
1 parent 0560632 commit eed57dd

File tree

2 files changed

+32
-2
lines changed

2 files changed

+32
-2
lines changed

libcxx/test/CMakeLists.txt

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,40 @@ if (LIBCXX_ENABLE_ABI_LINKER_SCRIPT)
2626
set(LIBCXXABI_USE_LLVM_UNWINDER OFF)
2727
endif()
2828

29+
option(LIBCXX_LINK_TESTS_WITH_SHARED_LIBCXXABI
30+
"Whether the libc++ tests should link with the shared libc++abi library"
31+
${LIBCXXABI_ENABLE_SHARED})
32+
33+
option(LIBCXX_LINK_TESTS_WITH_SHARED_LIBCXX
34+
"Whether the libc++ tests should link with the shared libc++ library"
35+
${LIBCXX_ENABLE_SHARED})
36+
37+
if(DEFINED LIBCXXABI_ENABLE_SHARED
38+
AND LIBCXX_LINK_TESTS_WITH_SHARED_LIBCXXABI
39+
AND NOT LIBCXXABI_ENABLE_SHARED)
40+
message(FATAL_ERROR "LIBCXX_LINK_TESTS_WITH_SHARED_LIBCXXABI being ON requires LIBCXXABI_ENABLE_SHARED to be ON")
41+
endif()
42+
43+
if(DEFINED LIBCXXABI_ENABLE_STATIC
44+
AND NOT LIBCXX_LINK_TESTS_WITH_SHARED_LIBCXXABI
45+
AND NOT LIBCXXABI_ENABLE_STATIC)
46+
message(FATAL_ERROR "LIBCXX_LINK_TESTS_WITH_SHARED_LIBCXXABI being OFF requires LIBCXXABI_ENABLE_STATIC to be ON")
47+
endif()
48+
49+
if(LIBCXX_LINK_TESTS_WITH_SHARED_LIBCXX AND NOT LIBCXX_ENABLE_SHARED)
50+
message(FATAL_ERROR "LIBCXX_LINK_TESTS_WITH_SHARED_LIBCXX being ON requires LIBCXX_ENABLE_SHARED to be ON")
51+
endif()
52+
53+
if(NOT LIBCXX_LINK_TESTS_WITH_SHARED_LIBCXX AND NOT LIBCXX_ENABLE_STATIC)
54+
message(FATAL_ERROR "LIBCXX_LINK_TESTS_WITH_SHARED_LIBCXX being OFF requires LIBCXX_ENABLE_STATIC to be ON")
55+
endif()
56+
2957
pythonize_bool(LIBCXX_ENABLE_EXCEPTIONS)
3058
pythonize_bool(LIBCXX_ENABLE_EXPERIMENTAL_LIBRARY)
3159
pythonize_bool(LIBCXX_ENABLE_RTTI)
3260
pythonize_bool(LIBCXX_ENABLE_SHARED)
61+
pythonize_bool(LIBCXX_LINK_TESTS_WITH_SHARED_LIBCXX)
62+
pythonize_bool(LIBCXX_LINK_TESTS_WITH_SHARED_LIBCXXABI)
3363
pythonize_bool(LIBCXX_ENABLE_FILESYSTEM)
3464
pythonize_bool(LIBCXX_BUILD_32_BITS)
3565
pythonize_bool(LIBCXX_GENERATE_COVERAGE)

libcxx/test/lit.site.cfg.in

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ config.enable_exceptions = @LIBCXX_ENABLE_EXCEPTIONS@
88
config.enable_experimental = @LIBCXX_ENABLE_EXPERIMENTAL_LIBRARY@
99
config.enable_filesystem = @LIBCXX_ENABLE_FILESYSTEM@
1010
config.enable_rtti = @LIBCXX_ENABLE_RTTI@
11-
config.enable_shared = @LIBCXX_ENABLE_SHARED@
11+
config.enable_shared = @LIBCXX_LINK_TESTS_WITH_SHARED_LIBCXX@
1212
config.enable_32bit = @LIBCXX_BUILD_32_BITS@
1313
config.cxx_abi = "@LIBCXX_CXX_ABI_LIBNAME@"
1414
config.use_sanitizer = "@LLVM_USE_SANITIZER@"
@@ -31,7 +31,7 @@ config.builtins_library = "@LIBCXX_BUILTINS_LIBRARY@"
3131
config.has_libatomic = @LIBCXX_HAS_ATOMIC_LIB@
3232
config.use_libatomic = @LIBCXX_HAVE_CXX_ATOMICS_WITH_LIB@
3333
config.debug_build = @LIBCXX_DEBUG_BUILD@
34-
config.libcxxabi_shared = @LIBCXXABI_ENABLE_SHARED@
34+
config.libcxxabi_shared = @LIBCXX_LINK_TESTS_WITH_SHARED_LIBCXXABI@
3535
config.cxx_ext_threads = @LIBCXX_BUILD_EXTERNAL_THREAD_LIBRARY@
3636
config.pstl_src_root = "@ParallelSTL_SOURCE_DIR@" if @LIBCXX_ENABLE_PARALLEL_ALGORITHMS@ else None
3737
config.pstl_obj_root = "@ParallelSTL_BINARY_DIR@" if @LIBCXX_ENABLE_PARALLEL_ALGORITHMS@ else None

0 commit comments

Comments
 (0)