1# Test target to run Python test suite from main build. 2 3# Avoid configurations including '-include' from interfering with 4# our tests by setting CLANG_NO_DEFAULT_CONFIG. 5add_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 10 DEPENDS libclang 11 WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/..) 12 13set(RUN_PYTHON_TESTS TRUE) 14set_target_properties(check-clang-python PROPERTIES FOLDER "Clang tests") 15 16# Tests require libclang.so which is only built with LLVM_ENABLE_PIC=ON 17if(NOT LLVM_ENABLE_PIC) 18 set(RUN_PYTHON_TESTS FALSE) 19endif() 20 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 26# with ASan. 27if(NOT LLVM_USE_SANITIZER STREQUAL "") 28 set(RUN_PYTHON_TESTS FALSE) 29endif() 30 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. 33if(WIN32) 34 set(RUN_PYTHON_TESTS FALSE) 35endif() 36 37# The Python FFI interface is broken on AIX: https://bugs.python.org/issue38628. 38if(${CMAKE_SYSTEM_NAME} MATCHES "AIX") 39 set(RUN_PYTHON_TESTS FALSE) 40endif() 41 42# AArch64, Hexagon, and Sparc have known test failures that need to be 43# addressed. 44# SystemZ has broken Python/FFI interface: 45# https://reviews.llvm.org/D52840#1265716 46if(${LLVM_NATIVE_ARCH} MATCHES "^(AArch64|Hexagon|Sparc|SystemZ)$") 47 set(RUN_PYTHON_TESTS FALSE) 48endif() 49 50if(RUN_PYTHON_TESTS) 51 set_property(GLOBAL APPEND PROPERTY 52 LLVM_ALL_ADDITIONAL_TEST_TARGETS check-clang-python) 53endif() 54