1 # Test target to run Python test suite from main build.
3 # Avoid configurations including '-include' from interfering with
4 # our tests by setting CLANG_NO_DEFAULT_CONFIG.
5 add_custom_target(check-clang-python
6 COMMAND ${CMAKE_COMMAND} -E env
7 CLANG_NO_DEFAULT_CONFIG=1
8 CLANG_LIBRARY_PATH=$<TARGET_FILE_DIR:libclang>
9 "${Python3_EXECUTABLE}" -m unittest discover
11 WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/..)
13 set(RUN_PYTHON_TESTS TRUE)
14 set_target_properties(check-clang-python PROPERTIES FOLDER "Clang/Tests")
16 # Tests require libclang.so which is only built with LLVM_ENABLE_PIC=ON
17 if(NOT LLVM_ENABLE_PIC)
18 set(RUN_PYTHON_TESTS FALSE)
21 # Do not try to run if libclang was built with sanitizers because
22 # the sanitizer library will likely be loaded too late to perform
23 # interception and will then fail.
24 # We could use LD_PRELOAD/DYLD_INSERT_LIBRARIES but this isn't
25 # portable so its easier just to not run the tests when building
27 if(NOT LLVM_USE_SANITIZER STREQUAL "")
28 set(RUN_PYTHON_TESTS FALSE)
31 # Tests fail on Windows, and need someone knowledgeable to fix.
32 # It's not clear whether it's a test or a valid binding problem.
34 set(RUN_PYTHON_TESTS FALSE)
37 # The Python FFI interface is broken on AIX: https://bugs.python.org/issue38628.
38 if(${CMAKE_SYSTEM_NAME} MATCHES "AIX")
39 set(RUN_PYTHON_TESTS FALSE)
42 # AArch64, Hexagon, and Sparc have known test failures that need to be
44 # SystemZ has broken Python/FFI interface:
45 # https://reviews.llvm.org/D52840#1265716
46 if(${LLVM_NATIVE_ARCH} MATCHES "^(AArch64|Hexagon|Sparc|SystemZ)$")
47 set(RUN_PYTHON_TESTS FALSE)
50 # Tests will fail if cross-compiling for a different target, as tests will try
51 # to use the host Python3_EXECUTABLE and make FFI calls to functions in target
53 if(CMAKE_CROSSCOMPILING)
54 # FIXME: Consider a solution that allows better control over these tests in
55 # a crosscompiling scenario. e.g. registering them with lit to allow them to
56 # be explicitly skipped via appropriate LIT_ARGS, or adding a mechanism to
57 # allow specifying a python interpreter compiled for the target that could
58 # be executed using qemu-user.
59 message(WARNING "check-clang-python not added to check-all as these tests fail in a cross-build setup")
60 set(RUN_PYTHON_TESTS FALSE)
64 set_property(GLOBAL APPEND PROPERTY
65 LLVM_ALL_ADDITIONAL_TEST_TARGETS check-clang-python)