238 lines · plain
1# Test runner infrastructure for Clang. This configures the Clang test trees2# for use by Lit, and delegates to LLVM's lit test handlers.3 4llvm_canonicalize_cmake_booleans(5 BUILD_SHARED_LIBS6 CLANG_BUILD_EXAMPLES7 CLANG_BUILT_STANDALONE8 CLANG_DEFAULT_PIE_ON_LINUX9 CLANG_ENABLE_STATIC_ANALYZER10 CLANG_PLUGIN_SUPPORT11 CLANG_SPAWN_CC112 CLANG_ENABLE_CIR13 CLANG_ENABLE_OBJC_REWRITER14 CLANG_LINK_CLANG_DYLIB15 ENABLE_BACKTRACES16 LLVM_BUILD_EXAMPLES17 LLVM_BYE_LINK_INTO_TOOLS18 LLVM_ENABLE_PLUGINS19 LLVM_ENABLE_ZLIB20 LLVM_ENABLE_ZSTD21 LLVM_ENABLE_PER_TARGET_RUNTIME_DIR22 LLVM_ENABLE_THREADS23 LLVM_ENABLE_REVERSE_ITERATION24 LLVM_LINK_LLVM_DYLIB25 LLVM_WITH_Z326 PPC_LINUX_DEFAULT_IEEELONGDOUBLE27 LLVM_TOOL_LLVM_DRIVER_BUILD28 LLVM_INCLUDE_SPIRV_TOOLS_TESTS29 )30 31# Run tests requiring Z3 headers only if LLVM was built with Z332# and the headers are available while building Clang -- the latter may33# not be the case when building standalone against installed LLVM.34set(TEST_WITH_Z3_MOCK 0)35if(LLVM_WITH_Z3 AND Z3_FOUND AND CMAKE_SYSTEM_NAME MATCHES "Linux")36 llvm_add_library(37 MockZ3SolverCheck38 MODULE Analysis/z3/Inputs/MockZ3_solver_check.cpp39 DISABLE_LLVM_LINK_LLVM_DYLIB)40 41 if(TARGET MockZ3SolverCheck)42 list(APPEND CLANG_TEST_DEPS43 MockZ3SolverCheck)44 target_include_directories(45 MockZ3SolverCheck46 PRIVATE ${Z3_INCLUDE_DIR})47 set(TEST_WITH_Z3_MOCK 1)48 endif()49endif()50 51configure_lit_site_cfg(52 ${CMAKE_CURRENT_SOURCE_DIR}/lit.site.cfg.py.in53 ${CMAKE_CURRENT_BINARY_DIR}/lit.site.cfg.py54 MAIN_CONFIG55 ${CMAKE_CURRENT_SOURCE_DIR}/lit.cfg.py56 PATHS57 "LLVM_SOURCE_DIR"58 "LLVM_BINARY_DIR"59 "LLVM_TOOLS_DIR"60 "LLVM_LIBS_DIR"61 "SHLIBDIR"62 "LLVM_LIT_TOOLS_DIR"63 "LLVM_EXTERNAL_LIT"64 "CLANG_BINARY_DIR"65 "CLANG_SOURCE_DIR"66 "CURRENT_TOOLS_DIR"67 "CMAKE_LIBRARY_OUTPUT_DIRECTORY"68 )69 70configure_lit_site_cfg(71 ${CMAKE_CURRENT_SOURCE_DIR}/Unit/lit.site.cfg.py.in72 ${CMAKE_CURRENT_BINARY_DIR}/Unit/lit.site.cfg.py73 MAIN_CONFIG74 ${CMAKE_CURRENT_SOURCE_DIR}/Unit/lit.cfg.py75 PATHS76 "LLVM_SOURCE_DIR"77 "LLVM_BINARY_DIR"78 "LLVM_TOOLS_DIR"79 "LLVM_LIBS_DIR"80 "CLANG_BINARY_DIR"81 "SHLIBDIR"82 )83 84option(CLANG_TEST_USE_VG "Run Clang tests under Valgrind" OFF)85if(CLANG_TEST_USE_VG)86 set(CLANG_TEST_EXTRA_ARGS ${CLANG_TEST_EXTRA_ARGS} "--vg")87endif ()88 89list(APPEND CLANG_TEST_DEPS90 apinotes-test91 c-index-test92 clang93 clang-fuzzer-dictionary94 clang-resource-headers95 clang-format96 clang-tblgen97 clang-offload-bundler98 clang-import-test99 clang-refactor100 clang-diff101 clang-installapi102 clang-scan-deps103 clang-linker-wrapper104 clang-nvlink-wrapper105 clang-offload-bundler106 clang-sycl-linker107 diagtool108 hmaptool109 )110 111if(CLANG_ENABLE_CIR)112 list(APPEND CLANG_TEST_DEPS113 cir-opt114 cir-translate115 mlir-translate116 )117endif()118 119if(CLANG_ENABLE_STATIC_ANALYZER)120 list(APPEND CLANG_TEST_DEPS121 clang-check122 clang-extdef-mapping123 )124endif()125 126if(CLANG_BUILD_EXAMPLES AND CLANG_PLUGIN_SUPPORT)127 list(APPEND CLANG_TEST_DEPS128 Attribute129 AnnotateFunctions130 CallSuperAttr131 PluginsOrder132 PrintFunctionNames133 LLVMPrintFunctionNames134 )135endif ()136 137if(LLVM_INCLUDE_SPIRV_TOOLS_TESTS)138 list(APPEND CLANG_TEST_DEPS139 spirv-dis140 spirv-val141 spirv-as142 spirv-link143 )144endif() 145 146if( NOT CLANG_BUILT_STANDALONE )147 list(APPEND CLANG_TEST_DEPS148 llvm-config149 FileCheck count not150 llc151 llvm-ar152 llvm-as153 llvm-bcanalyzer154 llvm-cat155 llvm-cxxfilt156 llvm-dis157 llvm-dwarfdump158 llvm-ifs159 llvm-link160 llvm-lto2161 llvm-mc162 llvm-modextract163 llvm-nm164 llvm-objcopy165 llvm-objdump166 llvm-pdbutil167 llvm-profdata168 llvm-rc169 llvm-readelf170 llvm-readobj171 llvm-readtapi172 llvm-strip173 llvm-symbolizer174 llvm-windres175 llvm-offload-binary176 obj2yaml177 opt178 split-file179 yaml2obj180 )181 182 if(TARGET llvm-lto)183 list(APPEND CLANG_TEST_DEPS llvm-lto)184 endif()185endif()186 187if(CLANG_ENABLE_STATIC_ANALYZER)188 if(CLANG_PLUGIN_SUPPORT AND LLVM_ENABLE_PLUGINS) # Determine if we built them189 list(APPEND CLANG_TEST_DEPS190 SampleAnalyzerPlugin191 CheckerDependencyHandlingAnalyzerPlugin192 CheckerOptionHandlingAnalyzerPlugin193 )194 endif()195endif()196 197if (HAVE_CLANG_REPL_SUPPORT)198 list(APPEND CLANG_TEST_DEPS199 clang-repl200 )201endif()202 203# Copy gen_ast_dump_json_test.py to the clang build dir. This allows invoking204# it without having to pass the --clang= argument205configure_file(AST/gen_ast_dump_json_test.py206 ${CLANG_BINARY_DIR}/bin/gen_ast_dump_json_test.py COPYONLY)207 208add_custom_target(clang-test-depends DEPENDS ${CLANG_TEST_DEPS})209set_target_properties(clang-test-depends PROPERTIES FOLDER "Clang/Tests")210 211add_lit_testsuite(check-clang "Running the Clang regression tests"212 ${CMAKE_CURRENT_BINARY_DIR}213 #LIT ${LLVM_LIT}214 DEPENDS ${CLANG_TEST_DEPS}215 ARGS ${CLANG_TEST_EXTRA_ARGS}216 )217 218add_lit_testsuites(CLANG ${CMAKE_CURRENT_SOURCE_DIR}219 DEPENDS ${CLANG_TEST_DEPS}220 FOLDER "Clang tests/Suites"221)222 223# Add a legacy target spelling: clang-test224add_custom_target(clang-test)225add_dependencies(clang-test check-clang)226set_target_properties(clang-test PROPERTIES FOLDER "Clang/Tests")227 228# FIXME: This logic can be removed once all buildbots have moved229# debuginfo-test from clang/test to llvm/projects or monorepo.230if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/debuginfo-tests)231 message(WARNING "Including debuginfo-tests in clang/test is deprecated. Move to llvm/projects or use monorepo.")232 if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/debuginfo-tests/CMakeLists.txt)233 add_subdirectory(debuginfo-tests)234 endif()235endif()236 237add_subdirectory(Analysis/LifetimeSafety)238