]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - test/CMakeLists.txt
Vendor import of libc++ trunk r291012:
[FreeBSD/FreeBSD.git] / test / CMakeLists.txt
1 include(AddLLVM) # for add_lit_testsuite
2
3 macro(pythonize_bool var)
4   if (${var})
5     set(${var} True)
6   else()
7     set(${var} False)
8   endif()
9 endmacro()
10
11 set(LIBCXX_LIT_VARIANT "libcxx" CACHE STRING
12     "Configuration variant to use for LIT.")
13
14 # The tests shouldn't link to any ABI library when it has been linked into
15 # libc++ statically or via a linker script.
16 if (LIBCXX_ENABLE_STATIC_ABI_LIBRARY OR LIBCXX_ENABLE_ABI_LINKER_SCRIPT)
17   set(LIBCXX_CXX_ABI_LIBNAME "none")
18 endif()
19
20 # The tests shouldn't link to libunwind if we have a linker script which
21 # already does so.
22 if (LIBCXX_ENABLE_ABI_LINKER_SCRIPT)
23   set(LIBCXXABI_USE_LLVM_UNWINDER OFF)
24 endif()
25
26 pythonize_bool(LIBCXX_ENABLE_EXCEPTIONS)
27 pythonize_bool(LIBCXX_ENABLE_EXPERIMENTAL_LIBRARY)
28 pythonize_bool(LIBCXX_ENABLE_FILESYSTEM)
29 pythonize_bool(LIBCXX_ENABLE_RTTI)
30 pythonize_bool(LIBCXX_ENABLE_SHARED)
31 pythonize_bool(LIBCXX_BUILD_32_BITS)
32 pythonize_bool(LIBCXX_GENERATE_COVERAGE)
33 pythonize_bool(LIBCXXABI_ENABLE_SHARED)
34 pythonize_bool(LIBCXXABI_USE_LLVM_UNWINDER)
35 pythonize_bool(LIBCXX_HAS_ATOMIC_LIB)
36 pythonize_bool(LIBCXX_HAVE_CXX_ATOMICS_WITH_LIB)
37 pythonize_bool(LIBCXX_HAS_EXTERNAL_THREAD_API)
38
39 # By default, for non-standalone builds, libcxx and libcxxabi share a library
40 # directory.
41 if (NOT LIBCXX_CXX_ABI_LIBRARY_PATH)
42   set(LIBCXX_CXX_ABI_LIBRARY_PATH "${LIBCXX_LIBRARY_DIR}" CACHE PATH
43       "The path to libc++abi library.")
44 endif()
45
46 set(LIBCXX_TARGET_INFO "libcxx.test.target_info.LocalTI" CACHE STRING
47     "TargetInfo to use when setting up test environment.")
48 set(LIBCXX_EXECUTOR "None" CACHE STRING
49     "Executor to use when running tests.")
50
51 set(AUTO_GEN_COMMENT "## Autogenerated by libcxx configuration.\n# Do not edit!")
52
53 configure_file(
54   ${CMAKE_CURRENT_SOURCE_DIR}/lit.site.cfg.in
55   ${CMAKE_CURRENT_BINARY_DIR}/lit.site.cfg
56   @ONLY)
57
58 set(LIBCXX_TEST_DEPS "")
59
60 if (LIBCXX_ENABLE_EXPERIMENTAL_LIBRARY)
61   set(LIBCXX_TEST_DEPS cxx_experimental)
62 endif()
63
64 if (LIBCXX_HAS_EXTERNAL_THREAD_API)
65   list(APPEND LIBCXX_TEST_DEPS cxx_external_threads)
66 endif()
67
68 add_lit_testsuite(check-cxx
69   "Running libcxx tests"
70   ${CMAKE_CURRENT_BINARY_DIR}
71   DEPENDS cxx ${LIBCXX_TEST_DEPS})
72
73 add_custom_target(check-libcxx DEPENDS check-cxx)
74
75 if (LIBCXX_GENERATE_COVERAGE)
76   include(CodeCoverage)
77   set(output_dir "${CMAKE_CURRENT_BINARY_DIR}/coverage")
78   set(capture_dirs "${LIBCXX_LIB_CMAKEFILES_DIR}/cxx.dir/;${LIBCXX_LIB_CMAKEFILES_DIR}/cxx_experimental.dir/;${CMAKE_CURRENT_BINARY_DIR}")
79   set(extract_dirs "${LIBCXX_SOURCE_DIR}/include;${LIBCXX_SOURCE_DIR}/src")
80   setup_lcov_test_target_coverage("cxx" "${output_dir}" "${capture_dirs}" "${extract_dirs}")
81 endif()