File: CMakeLists.txt

package info (click to toggle)
llvm-toolchain-19 1%3A19.1.7-7
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 1,998,872 kB
  • sloc: cpp: 6,951,694; ansic: 1,486,157; asm: 913,598; python: 232,024; f90: 80,126; objc: 75,281; lisp: 37,276; pascal: 16,990; sh: 10,033; ml: 5,058; perl: 4,724; awk: 3,523; makefile: 3,177; javascript: 2,504; xml: 892; fortran: 664; cs: 573
file content (89 lines) | stat: -rw-r--r-- 3,268 bytes parent folder | download | duplicates (7)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
include(HandleLitArguments)
add_subdirectory(tools)

# By default, libcxx and libcxxabi share a library directory.
if (NOT LIBCXX_CXX_ABI_LIBRARY_PATH)
  set(LIBCXX_CXX_ABI_LIBRARY_PATH "${LIBCXX_LIBRARY_DIR}" CACHE PATH
      "The path to libc++abi library.")
endif()

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 (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)

if (LIBCXX_INCLUDE_TESTS)
  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}
    DEPENDS cxx-test-depends)

endif()

if (LIBCXX_GENERATE_COVERAGE)
  include(CodeCoverage)
  set(output_dir "${CMAKE_CURRENT_BINARY_DIR}/coverage")
  set(capture_dirs
      "${LIBCXX_LIB_CMAKEFILES_DIR}/cxx_objects.dir/"
      "${LIBCXX_LIB_CMAKEFILES_DIR}/cxx.dir/"
      "${LIBCXX_LIB_CMAKEFILES_DIR}/cxx_experimental.dir/"
      "${CMAKE_CURRENT_BINARY_DIR}")
  set(extract_dirs "${LIBCXX_SOURCE_DIR}/include;${LIBCXX_SOURCE_DIR}/src")
  setup_lcov_test_target_coverage("cxx" "${output_dir}" "${capture_dirs}" "${extract_dirs}")
endif()

if (LIBCXX_CONFIGURE_IDE)
  # Create dummy targets for each of the tests in the test suite, this allows
  # IDE's such as CLion to correctly highlight the tests because it knows
  # roughly what include paths/compile flags/macro definitions are needed.
  include_directories(support)
  file(GLOB_RECURSE LIBCXX_TESTS ${CMAKE_CURRENT_SOURCE_DIR}/*.pass.cpp)
  file(GLOB LIBCXX_TEST_HEADERS ${CMAKE_CURRENT_SOURCE_DIR}/support/*)
  file(GLOB_RECURSE LIBCXX_HEADERS ${CMAKE_CURRENT_SOURCE_DIR}/../include/*)
  add_executable(libcxx_test_objects EXCLUDE_FROM_ALL
          ${LIBCXX_TESTS} ${LIBCXX_TEST_HEADERS} ${LIBCXX_HEADERS})
  add_dependencies(libcxx_test_objects cxx)

  split_list(LIBCXX_COMPILE_FLAGS)
  split_list(LIBCXX_LINK_FLAGS)

  set_target_properties(libcxx_test_objects
          PROPERTIES
            COMPILE_FLAGS "${LIBCXX_COMPILE_FLAGS}"
            LINK_FLAGS "${LIBCXX_LINK_FLAGS}"
            EXCLUDE_FROM_ALL ON
  )
endif()