[OptTable] Fix typo VALUE => VALUES (NFCI) (#121523)
[llvm-project.git] / clang / bindings / python / tests / CMakeLists.txt
bloba0ddabc21bb411b392b7c846308fbf9b3eaaf411
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
10     DEPENDS libclang
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)
19 endif()
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.
27 if(NOT LLVM_USE_SANITIZER STREQUAL "")
28   set(RUN_PYTHON_TESTS FALSE)
29 endif()
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.
33 if(WIN32)
34   set(RUN_PYTHON_TESTS FALSE)
35 endif()
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)
40 endif()
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
46 if(${LLVM_NATIVE_ARCH} MATCHES "^(AArch64|Hexagon|Sparc|SystemZ)$")
47   set(RUN_PYTHON_TESTS FALSE)
48 endif()
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
52 # libraries.
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)
61 endif()
63 if(RUN_PYTHON_TESTS)
64     set_property(GLOBAL APPEND PROPERTY
65                  LLVM_ALL_ADDITIONAL_TEST_TARGETS check-clang-python)
66 endif()