• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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