blob: 46bf2ae213ae6fe3a5b42921349e42936b55a636 [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
Chandler Carruth8279aa72012-06-29 00:39:23 +000021configure_lit_site_cfg(
Daniel Dunbar06696702009-11-07 23:53:32 +000022 ${CMAKE_CURRENT_SOURCE_DIR}/lit.site.cfg.in
Chandler Carruth8279aa72012-06-29 00:39:23 +000023 ${CMAKE_CURRENT_BINARY_DIR}/lit.site.cfg
24 )
Daniel Dunbar06696702009-11-07 23:53:32 +000025
Chandler Carruth8279aa72012-06-29 00:39:23 +000026configure_lit_site_cfg(
NAKAMURA Takumi22ec6602011-02-03 09:01:12 +000027 ${CMAKE_CURRENT_SOURCE_DIR}/Unit/lit.site.cfg.in
28 ${CMAKE_CURRENT_BINARY_DIR}/Unit/lit.site.cfg
Chandler Carruth8279aa72012-06-29 00:39:23 +000029 )
NAKAMURA Takumi22ec6602011-02-03 09:01:12 +000030
Chandler Carruth8a629072012-06-30 10:14:27 +000031option(CLANG_TEST_USE_VG "Run Clang tests under Valgrind" OFF)
32if(CLANG_TEST_USE_VG)
33 set(CLANG_TEST_EXTRA_ARGS ${CLANG_TEST_EXTRA_ARGS} "--vg")
34endif ()
35
NAKAMURA Takumi5de6b432013-12-19 16:05:39 +000036list(APPEND CLANG_TEST_DEPS
Jordan Rose08bf4fd2013-02-08 07:28:25 +000037 clang clang-headers
Yaron Keren11a7285e2016-06-01 13:47:26 +000038 clang-format
Alp Tokerf55a3062014-07-14 22:17:16 +000039 c-index-test diagtool
NAKAMURA Takumi2e3166a2014-01-19 08:54:48 +000040 clang-tblgen
Samuel Antao1006ca72016-08-24 15:21:05 +000041 clang-offload-bundler
Sean Callanan7d982502016-12-22 20:03:14 +000042 clang-import-test
Jordan Rose08bf4fd2013-02-08 07:28:25 +000043 )
Yaron Keren11a7285e2016-06-01 13:47:26 +000044
45if(CLANG_ENABLE_STATIC_ANALYZER)
46 list(APPEND CLANG_TEST_DEPS
47 clang-check
48 )
49endif()
Alp Toker1a58ff22014-06-01 02:02:23 +000050
Alp Tokerf55a3062014-07-14 22:17:16 +000051if (CLANG_ENABLE_ARCMT)
52 list(APPEND CLANG_TEST_DEPS
53 arcmt-test
54 c-arcmt-test
55 )
56endif ()
57
Alp Toker1a58ff22014-06-01 02:02:23 +000058if (ENABLE_CLANG_EXAMPLES)
59 list(APPEND CLANG_TEST_DEPS
NAKAMURA Takumia4a589e2016-03-21 11:03:39 +000060 AnnotateFunctions
Alp Toker1a58ff22014-06-01 02:02:23 +000061 clang-interpreter
62 PrintFunctionNames
Alp Tokerccb9aa32014-07-14 22:17:22 +000063 )
64endif ()
65
66if (ENABLE_CLANG_STATIC_ANALYZER AND ENABLE_CLANG_EXAMPLES)
67 list(APPEND CLANG_TEST_DEPS
Alp Toker1a58ff22014-06-01 02:02:23 +000068 SampleAnalyzerPlugin
69 )
70endif ()
71
Jordan Rose08bf4fd2013-02-08 07:28:25 +000072set(CLANG_TEST_PARAMS
73 clang_site_config=${CMAKE_CURRENT_BINARY_DIR}/lit.site.cfg
74 )
Chandler Carruth8a629072012-06-30 10:14:27 +000075
Jordan Rose08bf4fd2013-02-08 07:28:25 +000076if( NOT CLANG_BUILT_STANDALONE )
77 list(APPEND CLANG_TEST_DEPS
NAKAMURA Takumi67eade62013-12-04 03:40:56 +000078 llvm-config
NAKAMURA Takumi0f1cbee2015-09-14 12:41:53 +000079 FileCheck count not
NAKAMURA Takumi55bf9532015-10-16 09:38:42 +000080 llc
81 llvm-bcanalyzer
Peter Collingbournee4755e52016-06-22 01:03:15 +000082 llvm-nm
NAKAMURA Takumi55bf9532015-10-16 09:38:42 +000083 llvm-objdump
84 llvm-profdata
85 llvm-readobj
86 llvm-symbolizer
87 opt
Chandler Carruth8a629072012-06-30 10:14:27 +000088 )
Pavel Labath42f97802016-06-02 16:35:24 +000089
90 if(TARGET llvm-lto)
Pavel Labath1cc17a32016-06-02 18:49:42 +000091 list(APPEND CLANG_TEST_DEPS llvm-lto)
Pavel Labath42f97802016-06-02 16:35:24 +000092 endif()
Daniel Dunbara3b52d72009-11-03 07:25:53 +000093endif()
Chandler Carruth8a629072012-06-30 10:14:27 +000094
Chris Bienemandb5294d2016-03-02 00:27:15 +000095add_custom_target(clang-test-depends DEPENDS ${CLANG_TEST_DEPS})
Aaron Ballman2db26772016-04-12 15:09:17 +000096set_target_properties(clang-test-depends PROPERTIES FOLDER "Clang tests")
Chris Bienemandb5294d2016-03-02 00:27:15 +000097
NAKAMURA Takumie6d79ec2013-12-19 16:44:32 +000098add_lit_testsuite(check-clang "Running the Clang regression tests"
99 ${CMAKE_CURRENT_BINARY_DIR}
NAKAMURA Takumief4657e2013-12-19 17:10:30 +0000100 #LIT ${LLVM_LIT}
NAKAMURA Takumie6d79ec2013-12-19 16:44:32 +0000101 PARAMS ${CLANG_TEST_PARAMS}
102 DEPENDS ${CLANG_TEST_DEPS}
103 ARGS ${CLANG_TEST_EXTRA_ARGS}
104 )
105set_target_properties(check-clang PROPERTIES FOLDER "Clang tests")
106
Justin Bogner2a15ffa2016-07-05 17:54:40 +0000107add_lit_testsuites(CLANG ${CMAKE_CURRENT_SOURCE_DIR}
108 PARAMS ${CLANG_TEST_PARAMS}
109 DEPENDS ${CLANG_TEST_DEPS}
110)
111
Chandler Carruth8a629072012-06-30 10:14:27 +0000112# Add a legacy target spelling: clang-test
Chandler Carruthdc2e4bc2012-07-02 21:46:03 +0000113add_custom_target(clang-test)
114add_dependencies(clang-test check-clang)
Chandler Carruth8a629072012-06-30 10:14:27 +0000115set_target_properties(clang-test PROPERTIES FOLDER "Clang tests")