| # Cross project tests, for tests that require access to multiple projects across |
| # LLVM (e.g. clang, lld and lldb). |
| # The subset inside debuginfo-tests invoke clang to generate programs with |
| # various types of debug info, and then run those programs under a debugger |
| # such as GDB or LLDB to verify the results. |
| |
| find_package(Python3 COMPONENTS Interpreter) |
| |
| add_llvm_executable(check-gdb-llvm-support |
| debuginfo-tests/llvm-prettyprinters/gdb/llvm-support.cpp |
| ) |
| target_link_libraries(check-gdb-llvm-support PRIVATE LLVMSupport) |
| |
| set(CROSS_PROJECT_TESTS_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}) |
| set(CROSS_PROJECT_TESTS_BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}) |
| |
| set(CROSS_PROJECT_TEST_DEPS |
| FileCheck |
| count |
| llvm-dwarfdump |
| llvm-config |
| llvm-objdump |
| check-gdb-llvm-support |
| not |
| ) |
| |
| if ("clang" IN_LIST LLVM_ENABLE_PROJECTS) |
| list(APPEND CROSS_PROJECT_TEST_DEPS clang) |
| endif() |
| |
| if ("mlir" IN_LIST LLVM_ENABLE_PROJECTS) |
| add_llvm_executable(check-gdb-mlir-support |
| debuginfo-tests/llvm-prettyprinters/gdb/mlir-support.cpp |
| ) |
| target_include_directories(check-gdb-mlir-support PRIVATE |
| ${LLVM_EXTERNAL_MLIR_SOURCE_DIR}/include |
| ${LLVM_BINARY_DIR}/tools/mlir/include) |
| target_link_libraries(check-gdb-mlir-support PRIVATE MLIRIR) |
| list(APPEND CROSS_PROJECT_TEST_DEPS check-gdb-mlir-support) |
| set(MLIR_SOURCE_DIR ${LLVM_EXTERNAL_MLIR_SOURCE_DIR}) |
| endif() |
| |
| if("compiler-rt" IN_LIST LLVM_ENABLE_PROJECTS) |
| # llgdb-tests/asan.c and other asan* files. |
| if(TARGET asan) |
| list(APPEND CROSS_PROJECT_TEST_DEPS asan) |
| endif() |
| # llgdb-tests/safestack.c |
| if(TARGET safestack) |
| list(APPEND CROSS_PROJECT_TEST_DEPS safestack) |
| endif() |
| endif() |
| # Many dexter tests depend on lldb. |
| if("lldb" IN_LIST LLVM_ENABLE_PROJECTS) |
| list(APPEND CROSS_PROJECT_TEST_DEPS lldb lldb-server) |
| endif() |
| |
| # The Windows builder scripts pass -fuse-ld=lld. |
| if (WIN32 OR "lld" IN_LIST LLVM_ENABLE_PROJECTS) |
| list(APPEND CROSS_PROJECT_TEST_DEPS lld) |
| endif() |
| |
| configure_lit_site_cfg( |
| ${CMAKE_CURRENT_SOURCE_DIR}/lit.site.cfg.py.in |
| ${CMAKE_CURRENT_BINARY_DIR}/lit.site.cfg.py |
| MAIN_CONFIG |
| ${CMAKE_CURRENT_SOURCE_DIR}/lit.cfg.py |
| ) |
| |
| add_lit_testsuite(check-cross-project "Running cross-project tests" |
| ${CMAKE_CURRENT_BINARY_DIR} |
| DEPENDS ${CROSS_PROJECT_TEST_DEPS} |
| ) |
| |
| # Add alias for debuginfo test subset. |
| add_lit_testsuite(check-debuginfo "Running debuginfo tests" |
| ${CMAKE_CURRENT_BINARY_DIR}/debuginfo-tests |
| EXCLUDE_FROM_CHECK_ALL |
| DEPENDS ${CROSS_PROJECT_TEST_DEPS} |
| ) |
| |
| # Add check-cross-project-* targets. |
| add_lit_testsuites(CROSS_PROJECT ${CMAKE_CURRENT_SOURCE_DIR} |
| DEPENDS ${CROSS_PROJECT_TEST_DEPS} |
| ) |
| |
| set_target_properties(check-cross-project PROPERTIES FOLDER "Tests") |
| set_target_properties(check-debuginfo PROPERTIES FOLDER "Tests") |