Skip to content

Commit f582fc6

Browse files
authored
[libc++] Simplify how we install test-suite dependencies (#171504)
Based on comments in #171474, it was brought to my attention that we can modernize and simplify how we perform the test suite installation in libc++ and libc++abi.
1 parent e0387b7 commit f582fc6

File tree

2 files changed

+28
-94
lines changed

2 files changed

+28
-94
lines changed

libcxx/test/CMakeLists.txt

Lines changed: 13 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -5,57 +5,23 @@ add_subdirectory(tools)
55
# This ensures that we run the test suite against a setup that matches what we ship
66
# in production as closely as possible (in terms of file paths, rpaths, etc).
77
set(LIBCXX_TESTING_INSTALL_PREFIX "${LIBCXX_BINARY_DIR}/test-suite-install")
8+
set(libcxx_test_suite_install_targets cxx-headers cxx cxx-modules)
89
if (LIBCXX_CXX_ABI STREQUAL "libcxxabi")
9-
add_custom_target(install-cxxabi-test-suite-prefix
10-
DEPENDS cxxabi-headers
11-
cxxabi
12-
COMMAND ${CMAKE_COMMAND} -E make_directory "${LIBCXX_TESTING_INSTALL_PREFIX}"
13-
COMMAND "${CMAKE_COMMAND}"
14-
-DCMAKE_INSTALL_COMPONENT=cxxabi-headers
15-
-DCMAKE_INSTALL_PREFIX="${LIBCXX_TESTING_INSTALL_PREFIX}"
16-
-P "${CMAKE_BINARY_DIR}/cmake_install.cmake"
17-
COMMAND "${CMAKE_COMMAND}"
18-
-DCMAKE_INSTALL_COMPONENT=cxxabi
19-
-DCMAKE_INSTALL_PREFIX="${LIBCXX_TESTING_INSTALL_PREFIX}"
20-
-P "${CMAKE_BINARY_DIR}/cmake_install.cmake")
21-
add_dependencies(cxx-test-depends install-cxxabi-test-suite-prefix)
10+
list(APPEND libcxx_test_suite_install_targets cxxabi-headers cxxabi)
2211
endif()
23-
2412
if (LIBCXXABI_USE_LLVM_UNWINDER AND TARGET unwind)
25-
add_custom_target(install-unwind-test-suite-prefix
26-
DEPENDS unwind-headers
27-
unwind
28-
COMMAND ${CMAKE_COMMAND} -E make_directory "${LIBCXX_TESTING_INSTALL_PREFIX}"
29-
COMMAND "${CMAKE_COMMAND}"
30-
-DCMAKE_INSTALL_COMPONENT=unwind-headers
31-
-DCMAKE_INSTALL_PREFIX="${LIBCXX_TESTING_INSTALL_PREFIX}"
32-
-P "${CMAKE_BINARY_DIR}/cmake_install.cmake"
33-
COMMAND "${CMAKE_COMMAND}"
34-
-DCMAKE_INSTALL_COMPONENT=unwind
35-
-DCMAKE_INSTALL_PREFIX="${LIBCXX_TESTING_INSTALL_PREFIX}"
36-
-P "${CMAKE_BINARY_DIR}/cmake_install.cmake")
37-
add_dependencies(cxx-test-depends install-unwind-test-suite-prefix)
13+
list(APPEND libcxx_test_suite_install_targets unwind-headers unwind)
14+
endif()
15+
foreach(target IN LISTS libcxx_test_suite_install_targets)
16+
add_custom_target(libcxx-test-suite-install-${target} DEPENDS "${target}"
17+
COMMAND "${CMAKE_COMMAND}" --install "${CMAKE_BINARY_DIR}"
18+
--prefix "${LIBCXX_TESTING_INSTALL_PREFIX}"
19+
--component "${target}")
20+
add_dependencies(cxx-test-depends libcxx-test-suite-install-${target})
21+
endforeach()
22+
if (TARGET cxx_experimental)
23+
add_dependencies(libcxx-test-suite-install-cxx cxx_experimental)
3824
endif()
39-
40-
add_custom_target(install-cxx-test-suite-prefix
41-
DEPENDS cxx-headers
42-
cxx
43-
cxx_experimental
44-
cxx-modules
45-
COMMAND ${CMAKE_COMMAND} -E make_directory "${LIBCXX_TESTING_INSTALL_PREFIX}"
46-
COMMAND "${CMAKE_COMMAND}"
47-
-DCMAKE_INSTALL_COMPONENT=cxx-headers
48-
-DCMAKE_INSTALL_PREFIX="${LIBCXX_TESTING_INSTALL_PREFIX}"
49-
-P "${CMAKE_BINARY_DIR}/cmake_install.cmake"
50-
COMMAND "${CMAKE_COMMAND}"
51-
-DCMAKE_INSTALL_COMPONENT=cxx-modules
52-
-DCMAKE_INSTALL_PREFIX="${LIBCXX_TESTING_INSTALL_PREFIX}"
53-
-P "${CMAKE_BINARY_DIR}/cmake_install.cmake"
54-
COMMAND "${CMAKE_COMMAND}"
55-
-DCMAKE_INSTALL_COMPONENT=cxx
56-
-DCMAKE_INSTALL_PREFIX="${LIBCXX_TESTING_INSTALL_PREFIX}"
57-
-P "${LIBCXX_BINARY_DIR}/cmake_install.cmake")
58-
add_dependencies(cxx-test-depends install-cxx-test-suite-prefix)
5925

6026
set(AUTO_GEN_COMMENT "## Autogenerated by libcxx configuration.\n# Do not edit!")
6127
set(SERIALIZED_LIT_PARAMS "# Lit parameters serialized here for llvm-lit to pick them up\n")

libcxxabi/test/CMakeLists.txt

Lines changed: 15 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -8,55 +8,23 @@ macro(pythonize_bool var)
88
endif()
99
endmacro()
1010

11+
# Install the library and its dependencies at a fake location so we can run the test
12+
# suite against it. This ensures that we run the test suite against a setup that matches
13+
# what we ship in production as closely as possible (in terms of file paths, rpaths, etc).
1114
set(LIBCXXABI_TESTING_INSTALL_PREFIX "${LIBCXXABI_BINARY_DIR}/test-suite-install")
12-
add_custom_target(libcxxabi-install-cxx-for-testing
13-
DEPENDS cxx-headers
14-
cxx
15-
cxx_experimental
16-
cxx-modules
17-
COMMAND ${CMAKE_COMMAND} -E make_directory "${LIBCXXABI_TESTING_INSTALL_PREFIX}"
18-
COMMAND "${CMAKE_COMMAND}"
19-
-DCMAKE_INSTALL_COMPONENT=cxx-headers
20-
-DCMAKE_INSTALL_PREFIX="${LIBCXXABI_TESTING_INSTALL_PREFIX}"
21-
-P "${CMAKE_BINARY_DIR}/cmake_install.cmake"
22-
COMMAND "${CMAKE_COMMAND}"
23-
-DCMAKE_INSTALL_COMPONENT=cxx-modules
24-
-DCMAKE_INSTALL_PREFIX="${LIBCXXABI_TESTING_INSTALL_PREFIX}"
25-
-P "${CMAKE_BINARY_DIR}/cmake_install.cmake"
26-
COMMAND "${CMAKE_COMMAND}"
27-
-DCMAKE_INSTALL_COMPONENT=cxx
28-
-DCMAKE_INSTALL_PREFIX="${LIBCXXABI_TESTING_INSTALL_PREFIX}"
29-
-P "${CMAKE_BINARY_DIR}/cmake_install.cmake")
30-
add_dependencies(cxxabi-test-depends libcxxabi-install-cxx-for-testing)
31-
32-
add_custom_target(libcxxabi-install-cxxabi-for-testing
33-
DEPENDS cxxabi-headers
34-
cxxabi
35-
COMMAND ${CMAKE_COMMAND} -E make_directory "${LIBCXXABI_TESTING_INSTALL_PREFIX}"
36-
COMMAND "${CMAKE_COMMAND}"
37-
-DCMAKE_INSTALL_COMPONENT=cxxabi-headers
38-
-DCMAKE_INSTALL_PREFIX="${LIBCXXABI_TESTING_INSTALL_PREFIX}"
39-
-P "${CMAKE_BINARY_DIR}/cmake_install.cmake"
40-
COMMAND "${CMAKE_COMMAND}"
41-
-DCMAKE_INSTALL_COMPONENT=cxxabi
42-
-DCMAKE_INSTALL_PREFIX="${LIBCXXABI_TESTING_INSTALL_PREFIX}"
43-
-P "${CMAKE_BINARY_DIR}/cmake_install.cmake")
44-
add_dependencies(cxxabi-test-depends libcxxabi-install-cxxabi-for-testing)
45-
15+
set(libcxxabi_test_suite_install_targets cxx-headers cxx cxx-modules cxxabi-headers cxxabi)
4616
if (LIBCXXABI_USE_LLVM_UNWINDER AND TARGET unwind)
47-
add_custom_target(libcxxabi-install-unwind-for-testing
48-
DEPENDS unwind-headers
49-
unwind
50-
COMMAND ${CMAKE_COMMAND} -E make_directory "${LIBCXXABI_TESTING_INSTALL_PREFIX}"
51-
COMMAND "${CMAKE_COMMAND}"
52-
-DCMAKE_INSTALL_COMPONENT=unwind-headers
53-
-DCMAKE_INSTALL_PREFIX="${LIBCXXABI_TESTING_INSTALL_PREFIX}"
54-
-P "${CMAKE_BINARY_DIR}/cmake_install.cmake"
55-
COMMAND "${CMAKE_COMMAND}"
56-
-DCMAKE_INSTALL_COMPONENT=unwind
57-
-DCMAKE_INSTALL_PREFIX="${LIBCXXABI_TESTING_INSTALL_PREFIX}"
58-
-P "${CMAKE_BINARY_DIR}/cmake_install.cmake")
59-
add_dependencies(cxxabi-test-depends libcxxabi-install-unwind-for-testing)
17+
list(APPEND libcxxabi_test_suite_install_targets unwind-headers unwind)
18+
endif()
19+
foreach(target IN LISTS libcxxabi_test_suite_install_targets)
20+
add_custom_target(libcxxabi-test-suite-install-${target} DEPENDS "${target}"
21+
COMMAND "${CMAKE_COMMAND}" --install "${CMAKE_BINARY_DIR}"
22+
--prefix "${LIBCXXABI_TESTING_INSTALL_PREFIX}"
23+
--component "${target}")
24+
add_dependencies(cxxabi-test-depends libcxxabi-test-suite-install-${target})
25+
endforeach()
26+
if (TARGET cxx_experimental)
27+
add_dependencies(libcxxabi-test-suite-install-cxx cxx_experimental)
6028
endif()
6129

6230
pythonize_bool(LIBCXXABI_USE_LLVM_UNWINDER)

0 commit comments

Comments
 (0)