[libcxx-commits] [libcxx] [libcxxabi] [libc++] Simplify how we install test-suite dependencies (PR #171504)

Alexander Richardson via libcxx-commits libcxx-commits at lists.llvm.org
Tue Dec 9 21:18:33 PST 2025


================
@@ -5,57 +5,26 @@ add_subdirectory(tools)
 # This ensures that we run the test suite against a setup that matches what we ship
 # in production as closely as possible (in terms of file paths, rpaths, etc).
 set(LIBCXX_TESTING_INSTALL_PREFIX "${LIBCXX_BINARY_DIR}/test-suite-install")
+set(libcxx_test_suite_install_targets cxx-headers cxx cxx-modules)
+if (TARGET cxx_experimental)
+  list(APPEND libcxx_test_suite_install_targets cxx_experimental)
+endif()
 if (LIBCXX_CXX_ABI STREQUAL "libcxxabi")
-  add_custom_target(install-cxxabi-test-suite-prefix
-                        DEPENDS cxxabi-headers
-                                cxxabi
-                        COMMAND ${CMAKE_COMMAND} -E make_directory "${LIBCXX_TESTING_INSTALL_PREFIX}"
-                        COMMAND "${CMAKE_COMMAND}"
-                                -DCMAKE_INSTALL_COMPONENT=cxxabi-headers
-                                -DCMAKE_INSTALL_PREFIX="${LIBCXX_TESTING_INSTALL_PREFIX}"
-                                -P "${CMAKE_BINARY_DIR}/cmake_install.cmake"
-                        COMMAND "${CMAKE_COMMAND}"
-                                -DCMAKE_INSTALL_COMPONENT=cxxabi
-                                -DCMAKE_INSTALL_PREFIX="${LIBCXX_TESTING_INSTALL_PREFIX}"
-                                -P "${CMAKE_BINARY_DIR}/cmake_install.cmake")
-  add_dependencies(cxx-test-depends install-cxxabi-test-suite-prefix)
+  list(APPEND libcxx_test_suite_install_targets cxxabi-headers cxxabi)
 endif()
-
 if (LIBCXXABI_USE_LLVM_UNWINDER AND TARGET unwind)
-  add_custom_target(install-unwind-test-suite-prefix
-  DEPENDS unwind-headers
-          unwind
-  COMMAND ${CMAKE_COMMAND} -E make_directory "${LIBCXX_TESTING_INSTALL_PREFIX}"
-  COMMAND "${CMAKE_COMMAND}"
-          -DCMAKE_INSTALL_COMPONENT=unwind-headers
-          -DCMAKE_INSTALL_PREFIX="${LIBCXX_TESTING_INSTALL_PREFIX}"
-          -P "${CMAKE_BINARY_DIR}/cmake_install.cmake"
-  COMMAND "${CMAKE_COMMAND}"
-          -DCMAKE_INSTALL_COMPONENT=unwind
-          -DCMAKE_INSTALL_PREFIX="${LIBCXX_TESTING_INSTALL_PREFIX}"
-          -P "${CMAKE_BINARY_DIR}/cmake_install.cmake")
-  add_dependencies(cxx-test-depends install-unwind-test-suite-prefix)
+  list(APPEND libcxx_test_suite_install_targets unwind-headers unwind)
 endif()
-
-add_custom_target(install-cxx-test-suite-prefix
-                      DEPENDS cxx-headers
-                              cxx
-                              cxx_experimental
-                              cxx-modules
-                      COMMAND ${CMAKE_COMMAND} -E make_directory "${LIBCXX_TESTING_INSTALL_PREFIX}"
-                      COMMAND "${CMAKE_COMMAND}"
-                              -DCMAKE_INSTALL_COMPONENT=cxx-headers
-                              -DCMAKE_INSTALL_PREFIX="${LIBCXX_TESTING_INSTALL_PREFIX}"
-                              -P "${CMAKE_BINARY_DIR}/cmake_install.cmake"
-                      COMMAND "${CMAKE_COMMAND}"
-                              -DCMAKE_INSTALL_COMPONENT=cxx-modules
-                              -DCMAKE_INSTALL_PREFIX="${LIBCXX_TESTING_INSTALL_PREFIX}"
-                              -P "${CMAKE_BINARY_DIR}/cmake_install.cmake"
-                      COMMAND "${CMAKE_COMMAND}"
-                              -DCMAKE_INSTALL_COMPONENT=cxx
-                              -DCMAKE_INSTALL_PREFIX="${LIBCXX_TESTING_INSTALL_PREFIX}"
-                              -P "${LIBCXX_BINARY_DIR}/cmake_install.cmake")
-add_dependencies(cxx-test-depends install-cxx-test-suite-prefix)
+# Run installation targets serially to avoid race conditions between install targets
+set_property(GLOBAL PROPERTY JOB_POOLS libcxx-test-install-pool=1 APPEND)
+foreach(target IN LISTS libcxx_test_suite_install_targets)
+  add_custom_target(libcxx-test-suite-install-${target} DEPENDS "${target}"
----------------
arichardson wrote:

Maybe the problem is that we no longer depend on cxx_experimental?

https://github.com/llvm/llvm-project/pull/171504


More information about the libcxx-commits mailing list