The mechanism behind "check-all" is recording params of add_lit_testsuite()
calls in global variables LLVM_LIT_*, and then creating an extra suite with
their union at the end.
This avoids composing the check-* targets directly, which doesn't work well.
We generalize this by allowing multiple families of variables LLVM_{name}_LIT_*:
umbrella_lit_testsuite_begin(check-foo)
... test suites here will be added to LLVM_FOO_LIT_* variables ...
umbrella_lit_testsuite_end(check-foo)
(This also moves some implementation muck out of {llvm,clang}/CMakeLists.txt
This patch also changes check-clang-tools to use be an umbrella test target,
which means the clangd and clang-pseudo tests are included in it, along with the
the other testsuites that already are (like check-clang-extra-clang-tidy).
Differential Revision: https://reviews.llvm.org/D121838
51 lines
1.7 KiB
CMake
51 lines
1.7 KiB
CMake
# Test target to run Python test suite from main build.
|
|
|
|
add_custom_target(check-clang-python
|
|
COMMAND ${CMAKE_COMMAND} -E env
|
|
CLANG_LIBRARY_PATH=$<TARGET_FILE_DIR:libclang>
|
|
"${Python3_EXECUTABLE}" -m unittest discover
|
|
DEPENDS libclang
|
|
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/..)
|
|
|
|
set(RUN_PYTHON_TESTS TRUE)
|
|
set_target_properties(check-clang-python PROPERTIES FOLDER "Clang tests")
|
|
|
|
# Tests require libclang.so which is only built with LLVM_ENABLE_PIC=ON
|
|
if(NOT LLVM_ENABLE_PIC)
|
|
set(RUN_PYTHON_TESTS FALSE)
|
|
endif()
|
|
|
|
# Do not try to run if libclang was built with sanitizers because
|
|
# the sanitizer library will likely be loaded too late to perform
|
|
# interception and will then fail.
|
|
# We could use LD_PRELOAD/DYLD_INSERT_LIBRARIES but this isn't
|
|
# portable so its easier just to not run the tests when building
|
|
# with ASan.
|
|
if(NOT LLVM_USE_SANITIZER STREQUAL "")
|
|
set(RUN_PYTHON_TESTS FALSE)
|
|
endif()
|
|
|
|
# Tests fail on Windows, and need someone knowledgeable to fix.
|
|
# It's not clear whether it's a test or a valid binding problem.
|
|
if(WIN32)
|
|
set(RUN_PYTHON_TESTS FALSE)
|
|
endif()
|
|
|
|
# The Python FFI interface is broken on AIX: https://bugs.python.org/issue38628.
|
|
if(${CMAKE_SYSTEM_NAME} MATCHES "AIX")
|
|
set(RUN_PYTHON_TESTS FALSE)
|
|
endif()
|
|
|
|
# AArch64, Hexagon, and Sparc have known test failures that need to be
|
|
# addressed.
|
|
# SystemZ has broken Python/FFI interface:
|
|
# https://reviews.llvm.org/D52840#1265716
|
|
if(${LLVM_NATIVE_ARCH} MATCHES "^(AArch64|Hexagon|Sparc|SystemZ)$")
|
|
set(RUN_PYTHON_TESTS FALSE)
|
|
endif()
|
|
|
|
if(RUN_PYTHON_TESTS)
|
|
set_property(GLOBAL APPEND PROPERTY
|
|
LLVM_ALL_ADDITIONAL_TEST_TARGETS check-clang-python)
|
|
endif()
|