blob: 8d72a1853d3000481b509cdfefaab41b8cff9602 [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.
3#
4# If this is a stand-alone Clang build, we fake up our own Lit support here
5# rather than relying on LLVM's.
Douglas Gregor07705322009-06-05 16:00:31 +00006
NAKAMURA Takumi17645a42013-12-17 04:14:17 +00007if (CMAKE_CFG_INTDIR STREQUAL ".")
8 set(LLVM_BUILD_MODE ".")
9else ()
10 set(LLVM_BUILD_MODE "%(build_mode)s")
11endif ()
12
NAKAMURA Takumi462ba802013-12-18 15:08:56 +000013string(REPLACE ${CMAKE_CFG_INTDIR} ${LLVM_BUILD_MODE} CLANG_TOOLS_DIR ${CLANG_RUNTIME_OUTPUT_INTDIR})
NAKAMURA Takumi17645a42013-12-17 04:14:17 +000014string(REPLACE ${CMAKE_CFG_INTDIR} ${LLVM_BUILD_MODE} LLVM_TOOLS_DIR ${LLVM_RUNTIME_OUTPUT_INTDIR})
15string(REPLACE ${CMAKE_CFG_INTDIR} ${LLVM_BUILD_MODE} LLVM_LIBS_DIR ${LLVM_LIBRARY_OUTPUT_INTDIR})
16
Chandler Carruth8279aa72012-06-29 00:39:23 +000017configure_lit_site_cfg(
Daniel Dunbar06696702009-11-07 23:53:32 +000018 ${CMAKE_CURRENT_SOURCE_DIR}/lit.site.cfg.in
Chandler Carruth8279aa72012-06-29 00:39:23 +000019 ${CMAKE_CURRENT_BINARY_DIR}/lit.site.cfg
20 )
Daniel Dunbar06696702009-11-07 23:53:32 +000021
Chandler Carruth8279aa72012-06-29 00:39:23 +000022configure_lit_site_cfg(
NAKAMURA Takumi22ec6602011-02-03 09:01:12 +000023 ${CMAKE_CURRENT_SOURCE_DIR}/Unit/lit.site.cfg.in
24 ${CMAKE_CURRENT_BINARY_DIR}/Unit/lit.site.cfg
Chandler Carruth8279aa72012-06-29 00:39:23 +000025 )
NAKAMURA Takumi22ec6602011-02-03 09:01:12 +000026
Chandler Carruth8a629072012-06-30 10:14:27 +000027option(CLANG_TEST_USE_VG "Run Clang tests under Valgrind" OFF)
28if(CLANG_TEST_USE_VG)
29 set(CLANG_TEST_EXTRA_ARGS ${CLANG_TEST_EXTRA_ARGS} "--vg")
30endif ()
31
NAKAMURA Takumi5de6b432013-12-19 16:05:39 +000032list(APPEND CLANG_TEST_DEPS
Jordan Rose08bf4fd2013-02-08 07:28:25 +000033 clang clang-headers
34 c-index-test diagtool arcmt-test c-arcmt-test
Daniel Jasperb7fb5e62013-03-25 09:14:25 +000035 clang-check clang-format
Jordan Rose08bf4fd2013-02-08 07:28:25 +000036 )
37set(CLANG_TEST_PARAMS
38 clang_site_config=${CMAKE_CURRENT_BINARY_DIR}/lit.site.cfg
39 )
Chandler Carruth8a629072012-06-30 10:14:27 +000040
Jordan Rose08bf4fd2013-02-08 07:28:25 +000041if(CLANG_INCLUDE_TESTS)
42 list(APPEND CLANG_TEST_DEPS ClangUnitTests)
43 list(APPEND CLANG_TEST_PARAMS
44 clang_unit_site_config=${CMAKE_CURRENT_BINARY_DIR}/Unit/lit.site.cfg
45 )
46endif()
47
48if( NOT CLANG_BUILT_STANDALONE )
49 list(APPEND CLANG_TEST_DEPS
NAKAMURA Takumi67eade62013-12-04 03:40:56 +000050 llvm-config
Evgeniy Stepanoveeabe822013-03-13 09:36:02 +000051 llc opt FileCheck count not llvm-symbolizer
Chandler Carruth8a629072012-06-30 10:14:27 +000052 )
Chandler Carruth3bf1d5d2012-07-02 21:37:04 +000053
Chandler Carruth8a629072012-06-30 10:14:27 +000054 add_lit_testsuite(check-clang "Running the Clang regression tests"
55 ${CMAKE_CURRENT_BINARY_DIR}
Chandler Carruth3bf1d5d2012-07-02 21:37:04 +000056 PARAMS ${CLANG_TEST_PARAMS}
Chandler Carruth8a629072012-06-30 10:14:27 +000057 DEPENDS ${CLANG_TEST_DEPS}
58 ARGS ${CLANG_TEST_EXTRA_ARGS}
59 )
60 set_target_properties(check-clang PROPERTIES FOLDER "Clang tests")
61
62else()
63
64 include(FindPythonInterp)
65 if(PYTHONINTERP_FOUND)
66 if( LLVM_MAIN_SRC_DIR )
Chandler Carruth6b963db2012-07-02 20:14:59 +000067 set(LIT "${LLVM_MAIN_SRC_DIR}/utils/lit/lit.py")
Chandler Carruth8a629072012-06-30 10:14:27 +000068 else()
69 set(LIT "${PATH_TO_LLVM_BUILD}/bin/${CMAKE_CFG_INTDIR}/llvm-lit")
70 # Installed LLVM does not contain ${CMAKE_CFG_INTDIR} in paths.
71 if( NOT EXISTS ${LIT} )
72 set(LIT "${PATH_TO_LLVM_BUILD}/bin/llvm-lit")
73 endif()
NAKAMURA Takumiff75d8d2011-02-23 12:07:49 +000074 endif()
Oscar Fuentes84cb3942011-02-05 19:08:56 +000075
Chandler Carruth8a629072012-06-30 10:14:27 +000076 set(LIT_ARGS "${CLANG_TEST_EXTRA_ARGS} ${LLVM_LIT_ARGS}")
77 separate_arguments(LIT_ARGS)
Jordan Rose08bf4fd2013-02-08 07:28:25 +000078
79 list(APPEND CLANG_TEST_PARAMS build_mode=${CMAKE_CFG_INTDIR})
80
81 foreach(param ${CLANG_TEST_PARAMS})
82 list(APPEND LIT_ARGS --param ${param})
83 endforeach()
Douglas Gregor30018a62009-06-05 23:57:17 +000084
Chandler Carruth8a629072012-06-30 10:14:27 +000085 add_custom_target(check-clang
Jeffrey Yasskincd3858b2011-02-15 07:54:28 +000086 COMMAND ${PYTHON_EXECUTABLE}
Chandler Carruth8a629072012-06-30 10:14:27 +000087 ${LIT}
Chandler Carruth8a629072012-06-30 10:14:27 +000088 ${LIT_ARGS}
89 ${CMAKE_CURRENT_BINARY_DIR}
Jordan Rose08bf4fd2013-02-08 07:28:25 +000090 ${CLANG_TEST_EXTRA_ARGS}
Chandler Carruth8a629072012-06-30 10:14:27 +000091 COMMENT "Running Clang regression tests"
Jordan Rose08bf4fd2013-02-08 07:28:25 +000092 DEPENDS ${CLANG_TEST_DEPS}
Chandler Carruth8a629072012-06-30 10:14:27 +000093 )
94 set_target_properties(check-clang PROPERTIES FOLDER "Clang tests")
NAKAMURA Takumi6657e972011-07-20 16:35:49 +000095 endif()
NAKAMURA Takumib761ee62010-12-10 02:58:03 +000096
Daniel Dunbara3b52d72009-11-03 07:25:53 +000097endif()
Chandler Carruth8a629072012-06-30 10:14:27 +000098
99# Add a legacy target spelling: clang-test
Chandler Carruthdc2e4bc2012-07-02 21:46:03 +0000100add_custom_target(clang-test)
101add_dependencies(clang-test check-clang)
Chandler Carruth8a629072012-06-30 10:14:27 +0000102set_target_properties(clang-test PROPERTIES FOLDER "Clang tests")