blob: 23d23bcddcc1982aa38575c71fae7e2c3ee13db5 [file] [log] [blame]
Chandler Carruth8a629072012-06-30 10:14:27 +00001# Test runner infrastructure for Clang. This configures the Clang test trees
2# for use by Lit, and delegates to LLVM's lit test handlers.
Douglas Gregor07705322009-06-05 16:00:31 +00003
NAKAMURA Takumi17645a42013-12-17 04:14:17 +00004if (CMAKE_CFG_INTDIR STREQUAL ".")
5 set(LLVM_BUILD_MODE ".")
6else ()
7 set(LLVM_BUILD_MODE "%(build_mode)s")
8endif ()
9
NAKAMURA Takumic28a9a22014-01-19 13:00:01 +000010string(REPLACE ${CMAKE_CFG_INTDIR} ${LLVM_BUILD_MODE} CLANG_TOOLS_DIR ${LLVM_RUNTIME_OUTPUT_INTDIR})
NAKAMURA Takumi17645a42013-12-17 04:14:17 +000011
Michal Gornyf77a9882016-11-01 20:31:52 +000012if(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
Michal Gorny638ac702017-01-25 13:11:45 +000021llvm_canonicalize_cmake_booleans(
22 CLANG_BUILD_EXAMPLES
23 CLANG_ENABLE_ARCMT
24 CLANG_ENABLE_STATIC_ANALYZER
Michal Gornya56833b2017-01-25 13:31:53 +000025 ENABLE_BACKTRACES
26 HAVE_LIBZ)
Michal Gorny638ac702017-01-25 13:11:45 +000027
Chandler Carruth8279aa72012-06-29 00:39:23 +000028configure_lit_site_cfg(
Daniel Dunbar06696702009-11-07 23:53:32 +000029 ${CMAKE_CURRENT_SOURCE_DIR}/lit.site.cfg.in
Chandler Carruth8279aa72012-06-29 00:39:23 +000030 ${CMAKE_CURRENT_BINARY_DIR}/lit.site.cfg
31 )
Daniel Dunbar06696702009-11-07 23:53:32 +000032
Chandler Carruth8279aa72012-06-29 00:39:23 +000033configure_lit_site_cfg(
NAKAMURA Takumi22ec6602011-02-03 09:01:12 +000034 ${CMAKE_CURRENT_SOURCE_DIR}/Unit/lit.site.cfg.in
35 ${CMAKE_CURRENT_BINARY_DIR}/Unit/lit.site.cfg
Chandler Carruth8279aa72012-06-29 00:39:23 +000036 )
NAKAMURA Takumi22ec6602011-02-03 09:01:12 +000037
Chandler Carruth8a629072012-06-30 10:14:27 +000038option(CLANG_TEST_USE_VG "Run Clang tests under Valgrind" OFF)
39if(CLANG_TEST_USE_VG)
40 set(CLANG_TEST_EXTRA_ARGS ${CLANG_TEST_EXTRA_ARGS} "--vg")
41endif ()
42
NAKAMURA Takumi5de6b432013-12-19 16:05:39 +000043list(APPEND CLANG_TEST_DEPS
Jordan Rose08bf4fd2013-02-08 07:28:25 +000044 clang clang-headers
Yaron Keren11a7285e2016-06-01 13:47:26 +000045 clang-format
Alp Tokerf55a3062014-07-14 22:17:16 +000046 c-index-test diagtool
NAKAMURA Takumi2e3166a2014-01-19 08:54:48 +000047 clang-tblgen
Samuel Antao1006ca72016-08-24 15:21:05 +000048 clang-offload-bundler
Sean Callanan7d982502016-12-22 20:03:14 +000049 clang-import-test
Jordan Rose08bf4fd2013-02-08 07:28:25 +000050 )
Yaron Keren11a7285e2016-06-01 13:47:26 +000051
52if(CLANG_ENABLE_STATIC_ANALYZER)
53 list(APPEND CLANG_TEST_DEPS
54 clang-check
55 )
56endif()
Alp Toker1a58ff22014-06-01 02:02:23 +000057
Alp Tokerf55a3062014-07-14 22:17:16 +000058if (CLANG_ENABLE_ARCMT)
59 list(APPEND CLANG_TEST_DEPS
60 arcmt-test
61 c-arcmt-test
62 )
63endif ()
64
Michal Gorny638ac702017-01-25 13:11:45 +000065if (CLANG_BUILD_EXAMPLES)
Alp Toker1a58ff22014-06-01 02:02:23 +000066 list(APPEND CLANG_TEST_DEPS
NAKAMURA Takumia4a589e2016-03-21 11:03:39 +000067 AnnotateFunctions
Alp Toker1a58ff22014-06-01 02:02:23 +000068 clang-interpreter
69 PrintFunctionNames
Alp Tokerccb9aa32014-07-14 22:17:22 +000070 )
71endif ()
72
Michal Gorny638ac702017-01-25 13:11:45 +000073if (CLANG_ENABLE_STATIC_ANALYZER AND CLANG_BUILD_EXAMPLES)
Alp Tokerccb9aa32014-07-14 22:17:22 +000074 list(APPEND CLANG_TEST_DEPS
Alp Toker1a58ff22014-06-01 02:02:23 +000075 SampleAnalyzerPlugin
76 )
77endif ()
78
Jordan Rose08bf4fd2013-02-08 07:28:25 +000079set(CLANG_TEST_PARAMS
80 clang_site_config=${CMAKE_CURRENT_BINARY_DIR}/lit.site.cfg
81 )
Chandler Carruth8a629072012-06-30 10:14:27 +000082
Jordan Rose08bf4fd2013-02-08 07:28:25 +000083if( NOT CLANG_BUILT_STANDALONE )
84 list(APPEND CLANG_TEST_DEPS
NAKAMURA Takumi67eade62013-12-04 03:40:56 +000085 llvm-config
NAKAMURA Takumi0f1cbee2015-09-14 12:41:53 +000086 FileCheck count not
NAKAMURA Takumi55bf9532015-10-16 09:38:42 +000087 llc
88 llvm-bcanalyzer
Peter Collingbournef5d17122017-01-26 21:09:48 +000089 llvm-cat
Peter Collingbourne87cdfa72017-01-19 00:04:44 +000090 llvm-dis
Peter Collingbourneb8847162017-01-26 23:51:50 +000091 llvm-modextract
Peter Collingbournee4755e52016-06-22 01:03:15 +000092 llvm-nm
NAKAMURA Takumi55bf9532015-10-16 09:38:42 +000093 llvm-objdump
94 llvm-profdata
95 llvm-readobj
96 llvm-symbolizer
97 opt
Chandler Carruth8a629072012-06-30 10:14:27 +000098 )
Pavel Labath42f97802016-06-02 16:35:24 +000099
100 if(TARGET llvm-lto)
Pavel Labath1cc17a32016-06-02 18:49:42 +0000101 list(APPEND CLANG_TEST_DEPS llvm-lto)
Pavel Labath42f97802016-06-02 16:35:24 +0000102 endif()
Daniel Dunbara3b52d72009-11-03 07:25:53 +0000103endif()
Chandler Carruth8a629072012-06-30 10:14:27 +0000104
Chris Bienemandb5294d2016-03-02 00:27:15 +0000105add_custom_target(clang-test-depends DEPENDS ${CLANG_TEST_DEPS})
Aaron Ballman2db26772016-04-12 15:09:17 +0000106set_target_properties(clang-test-depends PROPERTIES FOLDER "Clang tests")
Chris Bienemandb5294d2016-03-02 00:27:15 +0000107
NAKAMURA Takumie6d79ec2013-12-19 16:44:32 +0000108add_lit_testsuite(check-clang "Running the Clang regression tests"
109 ${CMAKE_CURRENT_BINARY_DIR}
NAKAMURA Takumief4657e2013-12-19 17:10:30 +0000110 #LIT ${LLVM_LIT}
NAKAMURA Takumie6d79ec2013-12-19 16:44:32 +0000111 PARAMS ${CLANG_TEST_PARAMS}
112 DEPENDS ${CLANG_TEST_DEPS}
113 ARGS ${CLANG_TEST_EXTRA_ARGS}
114 )
115set_target_properties(check-clang PROPERTIES FOLDER "Clang tests")
116
Justin Bogner2a15ffa2016-07-05 17:54:40 +0000117add_lit_testsuites(CLANG ${CMAKE_CURRENT_SOURCE_DIR}
118 PARAMS ${CLANG_TEST_PARAMS}
119 DEPENDS ${CLANG_TEST_DEPS}
120)
121
Chandler Carruth8a629072012-06-30 10:14:27 +0000122# Add a legacy target spelling: clang-test
Chandler Carruthdc2e4bc2012-07-02 21:46:03 +0000123add_custom_target(clang-test)
124add_dependencies(clang-test check-clang)
Chandler Carruth8a629072012-06-30 10:14:27 +0000125set_target_properties(clang-test PROPERTIES FOLDER "Clang tests")