Clang Project

clang_source_code/test/CMakeLists.txt
1# Test runner infrastructure for Clang. This configures the Clang test trees
2# for use by Lit, and delegates to LLVM's lit test handlers.
3
4if (CMAKE_CFG_INTDIR STREQUAL ".")
5  set(LLVM_BUILD_MODE ".")
6else ()
7  set(LLVM_BUILD_MODE "%(build_mode)s")
8endif ()
9
10string(REPLACE ${CMAKE_CFG_INTDIR} ${LLVM_BUILD_MODE} CLANG_TOOLS_DIR ${LLVM_RUNTIME_OUTPUT_INTDIR})
11
12if(CLANG_BUILT_STANDALONE)
13  # Set HAVE_LIBZ according to recorded LLVM_ENABLE_ZLIB value. This
14  # value is forced to 0 if zlib was not found, so it is fine to use it
15  # instead of HAVE_LIBZ (not recorded).
16  if(LLVM_ENABLE_ZLIB)
17    set(HAVE_LIBZ 1)
18  endif()
19endif()
20
21llvm_canonicalize_cmake_booleans(
22  CLANG_BUILD_EXAMPLES
23  CLANG_ENABLE_ARCMT
24  CLANG_ENABLE_STATIC_ANALYZER
25  ENABLE_BACKTRACES
26  HAVE_LIBZ
27  LLVM_ENABLE_PER_TARGET_RUNTIME_DIR)
28
29configure_lit_site_cfg(
30  ${CMAKE_CURRENT_SOURCE_DIR}/lit.site.cfg.py.in
31  ${CMAKE_CURRENT_BINARY_DIR}/lit.site.cfg.py
32  MAIN_CONFIG
33  ${CMAKE_CURRENT_SOURCE_DIR}/lit.cfg.py
34  )
35
36configure_lit_site_cfg(
37  ${CMAKE_CURRENT_SOURCE_DIR}/Unit/lit.site.cfg.py.in
38  ${CMAKE_CURRENT_BINARY_DIR}/Unit/lit.site.cfg.py
39  MAIN_CONFIG
40  ${CMAKE_CURRENT_SOURCE_DIR}/Unit/lit.cfg.py
41  )
42
43option(CLANG_TEST_USE_VG "Run Clang tests under Valgrind" OFF)
44if(CLANG_TEST_USE_VG)
45  set(CLANG_TEST_EXTRA_ARGS ${CLANG_TEST_EXTRA_ARGS} "--vg")
46endif ()
47
48list(APPEND CLANG_TEST_DEPS
49  clang clang-resource-headers
50  clang-format
51  c-index-test diagtool
52  clang-tblgen
53  clang-offload-bundler
54  clang-import-test
55  clang-rename
56  clang-refactor
57  clang-diff
58  hmaptool
59  )
60  
61if(CLANG_ENABLE_STATIC_ANALYZER)
62  list(APPEND CLANG_TEST_DEPS
63    clang-check
64    clang-extdef-mapping
65    )
66endif()
67
68if (CLANG_ENABLE_ARCMT)
69  list(APPEND CLANG_TEST_DEPS
70    arcmt-test
71    c-arcmt-test
72  )
73endif ()
74
75if (CLANG_BUILD_EXAMPLES)
76  list(APPEND CLANG_TEST_DEPS
77    AnnotateFunctions
78    clang-interpreter
79    PrintFunctionNames
80    )
81endif ()
82
83if (CLANG_ENABLE_STATIC_ANALYZER AND CLANG_BUILD_EXAMPLES)
84  list(APPEND CLANG_TEST_DEPS
85    SampleAnalyzerPlugin
86    )
87endif ()
88
89set(CLANG_TEST_PARAMS
90  clang_site_config=${CMAKE_CURRENT_BINARY_DIR}/lit.site.cfg
91  USE_Z3_SOLVER=0
92  )
93
94set(ANALYZER_TEST_PARAMS
95  USE_Z3_SOLVER=0)
96
97set(ANALYZER_TEST_PARAMS_Z3
98  USE_Z3_SOLVER=1)
99
100if( NOT CLANG_BUILT_STANDALONE )
101  list(APPEND CLANG_TEST_DEPS
102    llvm-config
103    FileCheck count not
104    llc
105    llvm-as
106    llvm-bcanalyzer
107    llvm-cat
108    llvm-dis
109    llvm-lto2
110    llvm-modextract
111    llvm-nm
112    llvm-objdump
113    llvm-profdata
114    llvm-readobj
115    llvm-symbolizer
116    opt
117    )
118
119  if(TARGET llvm-lto)
120    list(APPEND CLANG_TEST_DEPS llvm-lto)
121  endif()
122endif()
123
124add_custom_target(clang-test-depends DEPENDS ${CLANG_TEST_DEPS})
125set_target_properties(clang-test-depends PROPERTIES FOLDER "Clang tests")
126
127add_lit_testsuite(check-clang "Running the Clang regression tests"
128  ${CMAKE_CURRENT_BINARY_DIR}
129  #LIT ${LLVM_LIT}
130  PARAMS ${CLANG_TEST_PARAMS}
131  DEPENDS ${CLANG_TEST_DEPS}
132  ARGS ${CLANG_TEST_EXTRA_ARGS}
133  )
134set_target_properties(check-clang PROPERTIES FOLDER "Clang tests")
135
136if (CLANG_ENABLE_STATIC_ANALYZER)
137  # check-all would launch those tests via check-clang.
138  set(EXCLUDE_FROM_ALL ON)
139
140  add_lit_testsuite(check-clang-analyzer "Running the Clang analyzer tests"
141    ${CMAKE_CURRENT_BINARY_DIR}/Analysis
142    PARAMS ${ANALYZER_TEST_PARAMS}
143    DEPENDS ${CLANG_TEST_DEPS})
144  set_target_properties(check-clang-analyzer PROPERTIES FOLDER "Clang tests")
145
146
147  if (LLVM_WITH_Z3)
148    add_lit_testsuite(check-clang-analyzer-z3 "Running the Clang analyzer tests, using Z3 as a solver"
149      ${CMAKE_CURRENT_BINARY_DIR}/Analysis
150      PARAMS ${ANALYZER_TEST_PARAMS_Z3}
151      DEPENDS ${CLANG_TEST_DEPS})
152    set_target_properties(check-clang-analyzer-z3 PROPERTIES FOLDER "Clang tests")
153  endif()
154
155  set(EXCLUDE_FROM_ALL OFF)
156endif()
157
158add_lit_testsuites(CLANG ${CMAKE_CURRENT_SOURCE_DIR}
159  PARAMS ${CLANG_TEST_PARAMS}
160  DEPENDS ${CLANG_TEST_DEPS}
161)
162
163# Add a legacy target spelling: clang-test
164add_custom_target(clang-test)
165add_dependencies(clang-test check-clang)
166set_target_properties(clang-test PROPERTIES FOLDER "Clang tests")
167
168# FIXME: This logic can be removed once all buildbots have moved
169# debuginfo-test from clang/test to llvm/projects or monorepo.
170if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/debuginfo-tests)
171  message(WARNING "Including debuginfo-tests in clang/test is deprecated.  Move to llvm/projects or use monorepo.")
172  if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/debuginfo-tests/CMakeLists.txt)
173    add_subdirectory(debuginfo-tests)
174  endif()
175endif()
176