This adds a OPENMP_TEST_ENABLE_TSAN option that allows to override whether tests using tsan will be enabled. The option defaults to the existing auto-detection. The background here is https://github.com/llvm/llvm-project/issues/111492, where we have some systems where tsan doesn't work, but we do still want to build it and run tests that don't use tsan.
44 lines
1.4 KiB
CMake
44 lines
1.4 KiB
CMake
# CMakeLists.txt file for unit testing Archer runtime library.
|
|
include(CheckFunctionExists)
|
|
include(CheckLibraryExists)
|
|
|
|
# When using libgcc, -latomic may be needed for atomics
|
|
# (but when using compiler-rt, the atomics will be built-in)
|
|
# Note: we can not check for __atomic_load because clang treats it
|
|
# as special built-in and that breaks CMake checks
|
|
check_function_exists(__atomic_load_1 LIBARCHER_HAVE_BUILTIN_ATOMIC)
|
|
if(NOT LIBARCHER_HAVE_BUILTIN_ATOMIC)
|
|
check_library_exists(atomic __atomic_load_1 "" LIBARCHER_HAVE_LIBATOMIC)
|
|
else()
|
|
# not needed
|
|
set(LIBARCHER_HAVE_LIBATOMIC 0)
|
|
endif()
|
|
|
|
set(LIBARCHER_TEST_PATH ${CMAKE_CURRENT_SOURCE_DIR})
|
|
|
|
set(LIBARCHER_TEST_FLAGS "" CACHE STRING
|
|
"Extra compiler flags to send to the test compiler.")
|
|
|
|
macro(pythonize_bool var)
|
|
if (${var})
|
|
set(${var} True)
|
|
else()
|
|
set(${var} False)
|
|
endif()
|
|
endmacro()
|
|
|
|
pythonize_bool(LIBARCHER_HAVE_LIBATOMIC)
|
|
pythonize_bool(OPENMP_TEST_ENABLE_TSAN)
|
|
|
|
set(ARCHER_TSAN_TEST_DEPENDENCE "")
|
|
if(TARGET tsan)
|
|
set(ARCHER_TSAN_TEST_DEPENDENCE tsan)
|
|
endif()
|
|
|
|
add_openmp_testsuite(check-libarcher "Running libarcher tests" ${CMAKE_CURRENT_BINARY_DIR}
|
|
DEPENDS archer omp ${ARCHER_TSAN_TEST_DEPENDENCE})
|
|
|
|
# Configure the lit.site.cfg.in file
|
|
set(AUTO_GEN_COMMENT "## Autogenerated by libarcher configuration.\n# Do not edit!")
|
|
configure_file(lit.site.cfg.in lit.site.cfg @ONLY)
|