111 lines · plain
1include(HandleLitArguments)2add_subdirectory(tools)3 4# Install the library at a fake location so we can run the test suite against it.5# This ensures that we run the test suite against a setup that matches what we ship6# in production as closely as possible (in terms of file paths, rpaths, etc).7set(LIBCXX_TESTING_INSTALL_PREFIX "${LIBCXX_BINARY_DIR}/test-suite-install")8if (LIBCXX_CXX_ABI STREQUAL "libcxxabi")9 add_custom_target(install-cxxabi-test-suite-prefix10 DEPENDS cxxabi-headers11 cxxabi12 COMMAND ${CMAKE_COMMAND} -E make_directory "${LIBCXX_TESTING_INSTALL_PREFIX}"13 COMMAND "${CMAKE_COMMAND}"14 -DCMAKE_INSTALL_COMPONENT=cxxabi-headers15 -DCMAKE_INSTALL_PREFIX="${LIBCXX_TESTING_INSTALL_PREFIX}"16 -P "${CMAKE_BINARY_DIR}/cmake_install.cmake"17 COMMAND "${CMAKE_COMMAND}"18 -DCMAKE_INSTALL_COMPONENT=cxxabi19 -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)22endif()23 24if (LIBCXXABI_USE_LLVM_UNWINDER AND TARGET unwind)25 add_custom_target(install-unwind-test-suite-prefix26 DEPENDS unwind-headers27 unwind28 COMMAND ${CMAKE_COMMAND} -E make_directory "${LIBCXX_TESTING_INSTALL_PREFIX}"29 COMMAND "${CMAKE_COMMAND}"30 -DCMAKE_INSTALL_COMPONENT=unwind-headers31 -DCMAKE_INSTALL_PREFIX="${LIBCXX_TESTING_INSTALL_PREFIX}"32 -P "${CMAKE_BINARY_DIR}/cmake_install.cmake"33 COMMAND "${CMAKE_COMMAND}"34 -DCMAKE_INSTALL_COMPONENT=unwind35 -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)38endif()39 40add_custom_target(install-cxx-test-suite-prefix41 DEPENDS cxx-headers42 cxx43 cxx_experimental44 cxx-modules45 COMMAND ${CMAKE_COMMAND} -E make_directory "${LIBCXX_TESTING_INSTALL_PREFIX}"46 COMMAND "${CMAKE_COMMAND}"47 -DCMAKE_INSTALL_COMPONENT=cxx-headers48 -DCMAKE_INSTALL_PREFIX="${LIBCXX_TESTING_INSTALL_PREFIX}"49 -P "${CMAKE_BINARY_DIR}/cmake_install.cmake"50 COMMAND "${CMAKE_COMMAND}"51 -DCMAKE_INSTALL_COMPONENT=cxx-modules52 -DCMAKE_INSTALL_PREFIX="${LIBCXX_TESTING_INSTALL_PREFIX}"53 -P "${CMAKE_BINARY_DIR}/cmake_install.cmake"54 COMMAND "${CMAKE_COMMAND}"55 -DCMAKE_INSTALL_COMPONENT=cxx56 -DCMAKE_INSTALL_PREFIX="${LIBCXX_TESTING_INSTALL_PREFIX}"57 -P "${LIBCXX_BINARY_DIR}/cmake_install.cmake")58add_dependencies(cxx-test-depends install-cxx-test-suite-prefix)59 60set(AUTO_GEN_COMMENT "## Autogenerated by libcxx configuration.\n# Do not edit!")61set(SERIALIZED_LIT_PARAMS "# Lit parameters serialized here for llvm-lit to pick them up\n")62 63serialize_lit_string_param(SERIALIZED_LIT_PARAMS compiler "${CMAKE_CXX_COMPILER}")64 65if (LIBCXX_INCLUDE_BENCHMARKS)66 add_subdirectory(benchmarks)67 set(_libcxx_benchmark_mode "dry-run")68else()69 serialize_lit_string_param(SERIALIZED_LIT_PARAMS enable_benchmarks "no")70 set(_libcxx_benchmark_mode "no")71endif()72 73if (NOT LIBCXX_ENABLE_EXCEPTIONS)74 serialize_lit_param(SERIALIZED_LIT_PARAMS enable_exceptions False)75endif()76 77if (NOT LIBCXX_ENABLE_RTTI)78 serialize_lit_param(SERIALIZED_LIT_PARAMS enable_rtti False)79endif()80 81serialize_lit_string_param(SERIALIZED_LIT_PARAMS hardening_mode "${LIBCXX_HARDENING_MODE}")82 83if (CMAKE_CXX_COMPILER_TARGET)84 serialize_lit_string_param(SERIALIZED_LIT_PARAMS target_triple "${CMAKE_CXX_COMPILER_TARGET}")85else()86 serialize_lit_string_param(SERIALIZED_LIT_PARAMS target_triple "${LLVM_DEFAULT_TARGET_TRIPLE}")87endif()88 89if (LLVM_USE_SANITIZER)90 serialize_lit_string_param(SERIALIZED_LIT_PARAMS use_sanitizer "${LLVM_USE_SANITIZER}")91endif()92 93serialize_lit_params_list(SERIALIZED_LIT_PARAMS LIBCXX_TEST_PARAMS)94 95include(AddLLVM) # for configure_lit_site_cfg and add_lit_testsuite96 97configure_file("${CMAKE_CURRENT_SOURCE_DIR}/configs/cmake-bridge.cfg.in"98 "${CMAKE_CURRENT_BINARY_DIR}/cmake-bridge.cfg"99 @ONLY)100 101configure_lit_site_cfg(102 "${LIBCXX_TEST_CONFIG}"103 ${CMAKE_CURRENT_BINARY_DIR}/lit.site.cfg104 MAIN_CONFIG "${CMAKE_CURRENT_SOURCE_DIR}/lit.cfg.py")105 106add_lit_testsuite(check-cxx107 "Running libcxx tests"108 ${CMAKE_CURRENT_BINARY_DIR}109 PARAMS enable_benchmarks="${_libcxx_benchmark_mode}"110 DEPENDS cxx-test-depends)111