include(HandleLitArguments) add_subdirectory(tools) # Install the library at a fake location so we can run the test suite against it. # 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") 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) 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) 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) set(AUTO_GEN_COMMENT "## Autogenerated by libcxx configuration.\n# Do not edit!") set(SERIALIZED_LIT_PARAMS "# Lit parameters serialized here for llvm-lit to pick them up\n") serialize_lit_string_param(SERIALIZED_LIT_PARAMS compiler "${CMAKE_CXX_COMPILER}") if (LIBCXX_INCLUDE_BENCHMARKS) add_subdirectory(benchmarks) set(_libcxx_benchmark_mode "dry-run") else() serialize_lit_string_param(SERIALIZED_LIT_PARAMS enable_benchmarks "no") set(_libcxx_benchmark_mode "no") endif() if (NOT LIBCXX_ENABLE_EXCEPTIONS) serialize_lit_param(SERIALIZED_LIT_PARAMS enable_exceptions False) endif() if (NOT LIBCXX_ENABLE_RTTI) serialize_lit_param(SERIALIZED_LIT_PARAMS enable_rtti False) endif() serialize_lit_string_param(SERIALIZED_LIT_PARAMS hardening_mode "${LIBCXX_HARDENING_MODE}") if (CMAKE_CXX_COMPILER_TARGET) serialize_lit_string_param(SERIALIZED_LIT_PARAMS target_triple "${CMAKE_CXX_COMPILER_TARGET}") else() serialize_lit_string_param(SERIALIZED_LIT_PARAMS target_triple "${LLVM_DEFAULT_TARGET_TRIPLE}") endif() if (LLVM_USE_SANITIZER) serialize_lit_string_param(SERIALIZED_LIT_PARAMS use_sanitizer "${LLVM_USE_SANITIZER}") endif() serialize_lit_params_list(SERIALIZED_LIT_PARAMS LIBCXX_TEST_PARAMS) include(AddLLVM) # for configure_lit_site_cfg and add_lit_testsuite configure_file("${CMAKE_CURRENT_SOURCE_DIR}/configs/cmake-bridge.cfg.in" "${CMAKE_CURRENT_BINARY_DIR}/cmake-bridge.cfg" @ONLY) configure_lit_site_cfg( "${LIBCXX_TEST_CONFIG}" ${CMAKE_CURRENT_BINARY_DIR}/lit.site.cfg MAIN_CONFIG "${CMAKE_CURRENT_SOURCE_DIR}/lit.cfg.py") add_lit_testsuite(check-cxx "Running libcxx tests" ${CMAKE_CURRENT_BINARY_DIR} PARAMS enable_benchmarks="${_libcxx_benchmark_mode}" DEPENDS cxx-test-depends)