Make check-clang depend on the LLVM split-file utility
[lldb.git] / clang / 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
4 if (CMAKE_CFG_INTDIR STREQUAL ".")
5   set(LLVM_BUILD_MODE ".")
6 else ()
7   set(LLVM_BUILD_MODE "%(build_mode)s")
8 endif ()
9
10 string(REPLACE ${CMAKE_CFG_INTDIR} ${LLVM_BUILD_MODE} CLANG_TOOLS_DIR ${LLVM_RUNTIME_OUTPUT_INTDIR})
11
12 llvm_canonicalize_cmake_booleans(
13   CLANG_BUILD_EXAMPLES
14   CLANG_ENABLE_ARCMT
15   CLANG_ENABLE_STATIC_ANALYZER
16   CLANG_SPAWN_CC1
17   ENABLE_BACKTRACES
18   ENABLE_EXPERIMENTAL_NEW_PASS_MANAGER
19   LLVM_ENABLE_ZLIB
20   LLVM_ENABLE_PER_TARGET_RUNTIME_DIR
21   LLVM_ENABLE_PLUGINS
22   LLVM_ENABLE_THREADS)
23
24 configure_lit_site_cfg(
25   ${CMAKE_CURRENT_SOURCE_DIR}/lit.site.cfg.py.in
26   ${CMAKE_CURRENT_BINARY_DIR}/lit.site.cfg.py
27   MAIN_CONFIG
28   ${CMAKE_CURRENT_SOURCE_DIR}/lit.cfg.py
29   PATHS
30   "LLVM_SOURCE_DIR"
31   "LLVM_BINARY_DIR"
32   "LLVM_TOOLS_DIR"
33   "LLVM_LIBS_DIR"
34   "SHLIBDIR"
35   "LLVM_LIT_TOOLS_DIR"
36   "CLANG_BINARY_DIR"
37   "CLANG_SOURCE_DIR"
38   "CLANG_TOOLS_DIR"
39   )
40
41 configure_lit_site_cfg(
42   ${CMAKE_CURRENT_SOURCE_DIR}/Unit/lit.site.cfg.py.in
43   ${CMAKE_CURRENT_BINARY_DIR}/Unit/lit.site.cfg.py
44   MAIN_CONFIG
45   ${CMAKE_CURRENT_SOURCE_DIR}/Unit/lit.cfg.py
46   PATHS
47   "LLVM_SOURCE_DIR"
48   "LLVM_BINARY_DIR"
49   "LLVM_TOOLS_DIR"
50   "LLVM_LIBS_DIR"
51   "CLANG_BINARY_DIR"
52   "SHLIBDIR"
53   )
54
55 option(CLANG_TEST_USE_VG "Run Clang tests under Valgrind" OFF)
56 if(CLANG_TEST_USE_VG)
57   set(CLANG_TEST_EXTRA_ARGS ${CLANG_TEST_EXTRA_ARGS} "--vg")
58 endif ()
59
60 list(APPEND CLANG_TEST_DEPS
61   apinotes-test
62   c-index-test
63   clang
64   clang-resource-headers
65   clang-format
66   clang-tblgen
67   clang-offload-bundler
68   clang-import-test
69   clang-rename
70   clang-refactor
71   clang-diff
72   clang-scan-deps
73   diagtool
74   hmaptool
75   )
76   
77 if(CLANG_ENABLE_STATIC_ANALYZER)
78   list(APPEND CLANG_TEST_DEPS
79     clang-check
80     clang-extdef-mapping
81     )
82 endif()
83
84 if (CLANG_ENABLE_ARCMT)
85   list(APPEND CLANG_TEST_DEPS
86     arcmt-test
87     c-arcmt-test
88   )
89 endif ()
90
91 if (CLANG_BUILD_EXAMPLES)
92   list(APPEND CLANG_TEST_DEPS
93     Attribute
94     AnnotateFunctions
95     CallSuperAttr
96     clang-interpreter
97     PrintFunctionNames
98     )
99 endif ()
100
101 set(CLANG_TEST_PARAMS
102   USE_Z3_SOLVER=0
103   )
104
105 if( NOT CLANG_BUILT_STANDALONE )
106   list(APPEND CLANG_TEST_DEPS
107     llvm-config
108     FileCheck count not
109     llc
110     llvm-as
111     llvm-bcanalyzer
112     llvm-cat
113     llvm-cxxfilt
114     llvm-dis
115     llvm-dwarfdump
116     llvm-ifs
117     llvm-lto2
118     llvm-modextract
119     llvm-nm
120     llvm-objcopy
121     llvm-objdump
122     llvm-profdata
123     llvm-readelf
124     llvm-readobj
125     llvm-symbolizer
126     opt
127     split-file
128     yaml2obj
129     )
130
131   if(TARGET llvm-lto)
132     list(APPEND CLANG_TEST_DEPS llvm-lto)
133   endif()
134 endif()
135
136 if (CLANG_ENABLE_STATIC_ANALYZER)
137   if (LLVM_ENABLE_PLUGINS)
138     list(APPEND CLANG_TEST_DEPS
139       SampleAnalyzerPlugin
140       CheckerDependencyHandlingAnalyzerPlugin
141       CheckerOptionHandlingAnalyzerPlugin
142       )
143   endif()
144 endif()
145
146 # Copy gen_ast_dump_json_test.py to the clang build dir. This allows invoking
147 # it without having to pass the --clang= argument
148 configure_file(AST/gen_ast_dump_json_test.py
149   ${CLANG_BINARY_DIR}/bin/gen_ast_dump_json_test.py COPYONLY)
150
151 add_custom_target(clang-test-depends DEPENDS ${CLANG_TEST_DEPS})
152 set_target_properties(clang-test-depends PROPERTIES FOLDER "Clang tests")
153
154 add_lit_testsuite(check-clang "Running the Clang regression tests"
155   ${CMAKE_CURRENT_BINARY_DIR}
156   #LIT ${LLVM_LIT}
157   PARAMS ${CLANG_TEST_PARAMS}
158   DEPENDS ${CLANG_TEST_DEPS}
159   ARGS ${CLANG_TEST_EXTRA_ARGS}
160   )
161 set_target_properties(check-clang PROPERTIES FOLDER "Clang tests")
162
163 add_lit_testsuites(CLANG ${CMAKE_CURRENT_SOURCE_DIR}
164   PARAMS ${CLANG_TEST_PARAMS}
165   DEPENDS ${CLANG_TEST_DEPS}
166 )
167
168 # Add a legacy target spelling: clang-test
169 add_custom_target(clang-test)
170 add_dependencies(clang-test check-clang)
171 set_target_properties(clang-test PROPERTIES FOLDER "Clang tests")
172
173 # FIXME: This logic can be removed once all buildbots have moved
174 # debuginfo-test from clang/test to llvm/projects or monorepo.
175 if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/debuginfo-tests)
176   message(WARNING "Including debuginfo-tests in clang/test is deprecated.  Move to llvm/projects or use monorepo.")
177   if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/debuginfo-tests/CMakeLists.txt)
178     add_subdirectory(debuginfo-tests)
179   endif()
180 endif()