mirror-llvm-project/cross-project-tests/CMakeLists.txt
Ben Dunbobbin c012610ab9
[DTLTO] Add remote compiler option forwarding coverage (#208589)
Add a cross-project DTLTO test that checks the existing LTO
configuration state serialized into the remote Clang command line. The
test uses the validate.py distributor to inspect the generated DTLTO
JSON.

Cover all the existing forwarded options.

Add paired negative checks for optional flags so the test also verifies
they are not emitted when the corresponding configuration state is not
set.
2026-07-16 09:56:40 +01:00

122 lines
3.6 KiB
CMake

# 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.
set(LLVM_SUBPROJECT_TITLE "Cross-Project")
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)
add_subdirectory(debuginfo-tests/llvm-prettyprinters/lldb)
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
check-gdb-llvm-support
${LLDB_FORMATTER_TESTS}
count
llvm-ar
llvm-config
llvm-dis
llvm-dwarfdump
llvm-lto2
llvm-modextract
llvm-objdump
not
obj2yaml
split-file
)
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 lldb-dap)
endif()
if ("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 alias for intrinsic header test subset.
add_lit_testsuite(check-intrinsic-headers "Running intrinsic header tests"
${CMAKE_CURRENT_BINARY_DIR}/intrinsic-header-tests
EXCLUDE_FROM_CHECK_ALL
DEPENDS ${CROSS_PROJECT_TEST_DEPS}
)
# AMDGPU tests.
add_lit_testsuite(check-cross-amdgpu "Running AMDGPU cross-project tests"
${CMAKE_CURRENT_BINARY_DIR}/amdgpu
EXCLUDE_FROM_CHECK_ALL
DEPENDS clang
)
# DTLTO tests.
add_lit_testsuite(check-cross-dtlto "Running DTLTO cross-project tests"
${CMAKE_CURRENT_BINARY_DIR}/dtlto
EXCLUDE_FROM_CHECK_ALL
DEPENDS ${CROSS_PROJECT_TEST_DEPS}
)
# veclib tests.
add_lit_testsuite(check-cross-veclib "Running veclib cross-project tests"
${CMAKE_CURRENT_BINARY_DIR}/veclib
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}
)