1include(AddLLVM) # for configure_lit_site_cfg and add_lit_testsuite 2include(HandleLitArguments) 3macro(pythonize_bool var) 4 if (${var}) 5 set(${var} True) 6 else() 7 set(${var} False) 8 endif() 9endmacro() 10 11set(LIBCXXABI_TESTING_INSTALL_PREFIX "${LIBCXXABI_BINARY_DIR}/test-suite-install") 12add_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") 30add_dependencies(cxxabi-test-depends libcxxabi-install-cxx-for-testing) 31 32add_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") 44add_dependencies(cxxabi-test-depends libcxxabi-install-cxxabi-for-testing) 45 46if (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) 60endif() 61 62pythonize_bool(LIBCXXABI_USE_LLVM_UNWINDER) 63 64set(AUTO_GEN_COMMENT "## Autogenerated by libcxxabi configuration.\n# Do not edit!") 65set(SERIALIZED_LIT_PARAMS "# Lit parameters serialized here for llvm-lit to pick them up\n") 66 67serialize_lit_string_param(SERIALIZED_LIT_PARAMS compiler "${CMAKE_CXX_COMPILER}") 68 69if (NOT LIBCXXABI_ENABLE_EXCEPTIONS) 70 serialize_lit_param(SERIALIZED_LIT_PARAMS enable_exceptions False) 71endif() 72 73if (LIBCXXABI_ENABLE_ASSERTIONS) 74 serialize_lit_param(SERIALIZED_LIT_PARAMS enable_assertions True) 75endif() 76 77serialize_lit_param(SERIALIZED_LIT_PARAMS enable_experimental False) 78 79if (LLVM_USE_SANITIZER) 80 serialize_lit_string_param(SERIALIZED_LIT_PARAMS use_sanitizer "${LLVM_USE_SANITIZER}") 81endif() 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 89serialize_lit_params_list(SERIALIZED_LIT_PARAMS LIBCXXABI_TEST_PARAMS) 90 91configure_file("${CMAKE_CURRENT_SOURCE_DIR}/configs/cmake-bridge.cfg.in" 92 "${CMAKE_CURRENT_BINARY_DIR}/cmake-bridge.cfg" 93 @ONLY) 94 95configure_lit_site_cfg( 96 "${LIBCXXABI_TEST_CONFIG}" 97 ${CMAKE_CURRENT_BINARY_DIR}/lit.site.cfg 98 MAIN_CONFIG "${CMAKE_CURRENT_SOURCE_DIR}/lit.cfg.py") 99 100add_lit_testsuite(check-cxxabi "Running libcxxabi tests" 101 ${CMAKE_CURRENT_BINARY_DIR} 102 DEPENDS cxxabi-test-depends) 103