1# Test target to run Python test suite from main build.
2
3add_custom_target(check-clang-python
4    COMMAND ${CMAKE_COMMAND} -E env
5            CLANG_LIBRARY_PATH=$<TARGET_FILE_DIR:libclang>
6            ${PYTHON_EXECUTABLE} -m unittest discover
7    DEPENDS libclang
8    WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/..)
9
10set(RUN_PYTHON_TESTS TRUE)
11set_target_properties(check-clang-python PROPERTIES FOLDER "Clang tests")
12
13# Do not try to run if libclang was built with ASan because
14# the sanitizer library will likely be loaded too late to perform
15# interception and will then fail.
16# We could use LD_PRELOAD/DYLD_INSERT_LIBRARIES but this isn't
17# portable so its easier just to not run the tests when building
18# with ASan.
19list(FIND LLVM_USE_SANITIZER "Address" LLVM_USE_ASAN_INDEX)
20if(NOT LLVM_USE_ASAN_INDEX EQUAL -1)
21  set(RUN_PYTHON_TESTS FALSE)
22endif()
23
24# Tests fail on Windows, and need someone knowledgeable to fix.
25# It's not clear whether it's a test or a valid binding problem.
26if(WIN32)
27  set(RUN_PYTHON_TESTS FALSE)
28endif()
29
30# AArch64 and Hexagon have known test failures that need to be
31# addressed.
32# SystemZ has broken Python/FFI interface:
33# https://reviews.llvm.org/D52840#1265716
34if(${LLVM_NATIVE_ARCH} MATCHES "^(AArch64|Hexagon|SystemZ)$")
35  set(RUN_PYTHON_TESTS FALSE)
36endif()
37
38if(RUN_PYTHON_TESTS)
39    set_property(GLOBAL APPEND PROPERTY
40                 LLVM_ADDITIONAL_TEST_TARGETS check-clang-python)
41endif()
42