xref: /llvm-project/clang/test/CMakeLists.txt (revision eeee5a44bbf24f2f30a313ecf66e6a76de365658)
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
4llvm_canonicalize_cmake_booleans(
5  CLANG_BUILD_EXAMPLES
6  CLANG_BUILT_STANDALONE
7  CLANG_DEFAULT_PIE_ON_LINUX
8  CLANG_ENABLE_ARCMT
9  CLANG_ENABLE_STATIC_ANALYZER
10  CLANG_PLUGIN_SUPPORT
11  CLANG_SPAWN_CC1
12  CLANG_ENABLE_CIR
13  ENABLE_BACKTRACES
14  LLVM_BUILD_EXAMPLES
15  LLVM_BYE_LINK_INTO_TOOLS
16  LLVM_ENABLE_PLUGINS
17  LLVM_ENABLE_ZLIB
18  LLVM_ENABLE_ZSTD
19  LLVM_ENABLE_PER_TARGET_RUNTIME_DIR
20  LLVM_ENABLE_THREADS
21  LLVM_ENABLE_REVERSE_ITERATION
22  LLVM_WITH_Z3
23  PPC_LINUX_DEFAULT_IEEELONGDOUBLE
24  LLVM_TOOL_LLVM_DRIVER_BUILD
25  )
26
27configure_lit_site_cfg(
28  ${CMAKE_CURRENT_SOURCE_DIR}/lit.site.cfg.py.in
29  ${CMAKE_CURRENT_BINARY_DIR}/lit.site.cfg.py
30  MAIN_CONFIG
31  ${CMAKE_CURRENT_SOURCE_DIR}/lit.cfg.py
32  PATHS
33  "LLVM_SOURCE_DIR"
34  "LLVM_BINARY_DIR"
35  "LLVM_TOOLS_DIR"
36  "LLVM_LIBS_DIR"
37  "SHLIBDIR"
38  "LLVM_LIT_TOOLS_DIR"
39  "LLVM_EXTERNAL_LIT"
40  "CLANG_BINARY_DIR"
41  "CLANG_SOURCE_DIR"
42  "CURRENT_TOOLS_DIR"
43  "CMAKE_LIBRARY_OUTPUT_DIRECTORY"
44  )
45
46configure_lit_site_cfg(
47  ${CMAKE_CURRENT_SOURCE_DIR}/Unit/lit.site.cfg.py.in
48  ${CMAKE_CURRENT_BINARY_DIR}/Unit/lit.site.cfg.py
49  MAIN_CONFIG
50  ${CMAKE_CURRENT_SOURCE_DIR}/Unit/lit.cfg.py
51  PATHS
52  "LLVM_SOURCE_DIR"
53  "LLVM_BINARY_DIR"
54  "LLVM_TOOLS_DIR"
55  "LLVM_LIBS_DIR"
56  "CLANG_BINARY_DIR"
57  "SHLIBDIR"
58  )
59
60option(CLANG_TEST_USE_VG "Run Clang tests under Valgrind" OFF)
61if(CLANG_TEST_USE_VG)
62  set(CLANG_TEST_EXTRA_ARGS ${CLANG_TEST_EXTRA_ARGS} "--vg")
63endif ()
64
65list(APPEND CLANG_TEST_DEPS
66  apinotes-test
67  c-index-test
68  clang
69  clang-fuzzer-dictionary
70  clang-resource-headers
71  clang-format
72  clang-tblgen
73  clang-offload-bundler
74  clang-import-test
75  clang-refactor
76  clang-diff
77  clang-installapi
78  clang-scan-deps
79  clang-linker-wrapper
80  clang-nvlink-wrapper
81  clang-offload-bundler
82  clang-offload-packager
83  clang-sycl-linker
84  diagtool
85  hmaptool
86  )
87
88if(CLANG_ENABLE_STATIC_ANALYZER)
89  list(APPEND CLANG_TEST_DEPS
90    clang-check
91    clang-extdef-mapping
92    )
93endif()
94
95if (CLANG_ENABLE_ARCMT)
96  list(APPEND CLANG_TEST_DEPS
97    arcmt-test
98    c-arcmt-test
99  )
100endif ()
101
102if(CLANG_BUILD_EXAMPLES AND CLANG_PLUGIN_SUPPORT)
103  list(APPEND CLANG_TEST_DEPS
104    Attribute
105    AnnotateFunctions
106    CallSuperAttr
107    PluginsOrder
108    PrintFunctionNames
109    LLVMPrintFunctionNames
110    )
111endif ()
112
113set(CLANG_TEST_PARAMS
114  USE_Z3_SOLVER=0
115  )
116
117if( NOT CLANG_BUILT_STANDALONE )
118  list(APPEND CLANG_TEST_DEPS
119    llvm-config
120    FileCheck count not
121    llc
122    llvm-ar
123    llvm-as
124    llvm-bcanalyzer
125    llvm-cat
126    llvm-cxxfilt
127    llvm-dis
128    llvm-dwarfdump
129    llvm-ifs
130    llvm-lto2
131    llvm-mc
132    llvm-modextract
133    llvm-nm
134    llvm-objcopy
135    llvm-objdump
136    llvm-pdbutil
137    llvm-profdata
138    llvm-rc
139    llvm-readelf
140    llvm-readobj
141    llvm-readtapi
142    llvm-strip
143    llvm-symbolizer
144    llvm-windres
145    obj2yaml
146    opt
147    split-file
148    yaml2obj
149    )
150
151  if(TARGET llvm-lto)
152    list(APPEND CLANG_TEST_DEPS llvm-lto)
153  endif()
154endif()
155
156if(CLANG_ENABLE_STATIC_ANALYZER)
157  if(CLANG_PLUGIN_SUPPORT AND LLVM_ENABLE_PLUGINS) # Determine if we built them
158    list(APPEND CLANG_TEST_DEPS
159      SampleAnalyzerPlugin
160      CheckerDependencyHandlingAnalyzerPlugin
161      CheckerOptionHandlingAnalyzerPlugin
162      )
163  endif()
164endif()
165
166if (HAVE_CLANG_REPL_SUPPORT)
167  list(APPEND CLANG_TEST_DEPS
168    clang-repl
169    )
170endif()
171
172# Copy gen_ast_dump_json_test.py to the clang build dir. This allows invoking
173# it without having to pass the --clang= argument
174configure_file(AST/gen_ast_dump_json_test.py
175  ${CLANG_BINARY_DIR}/bin/gen_ast_dump_json_test.py COPYONLY)
176
177add_custom_target(clang-test-depends DEPENDS ${CLANG_TEST_DEPS})
178set_target_properties(clang-test-depends PROPERTIES FOLDER "Clang/Tests")
179
180add_lit_testsuite(check-clang "Running the Clang regression tests"
181  ${CMAKE_CURRENT_BINARY_DIR}
182  #LIT ${LLVM_LIT}
183  PARAMS ${CLANG_TEST_PARAMS}
184  DEPENDS ${CLANG_TEST_DEPS}
185  ARGS ${CLANG_TEST_EXTRA_ARGS}
186  )
187
188add_lit_testsuites(CLANG ${CMAKE_CURRENT_SOURCE_DIR}
189  PARAMS ${CLANG_TEST_PARAMS}
190  DEPENDS ${CLANG_TEST_DEPS}
191  FOLDER "Clang tests/Suites"
192)
193
194# Add a legacy target spelling: clang-test
195add_custom_target(clang-test)
196add_dependencies(clang-test check-clang)
197set_target_properties(clang-test PROPERTIES FOLDER "Clang/Tests")
198
199# FIXME: This logic can be removed once all buildbots have moved
200# debuginfo-test from clang/test to llvm/projects or monorepo.
201if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/debuginfo-tests)
202  message(WARNING "Including debuginfo-tests in clang/test is deprecated.  Move to llvm/projects or use monorepo.")
203  if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/debuginfo-tests/CMakeLists.txt)
204    add_subdirectory(debuginfo-tests)
205  endif()
206endif()
207