blob: be2704cd6dee1ac1b8e71d673563fde1a5accc56 [file]
# CMakeLists.txt file for unit testing OpenMP offloading runtime library.
if(NOT OPENMP_TEST_COMPILER_ID STREQUAL "Clang" OR
OPENMP_TEST_COMPILER_VERSION VERSION_LESS 6.0.0)
message(STATUS "Can only test with Clang compiler in version 6.0.0 or later.")
message(WARNING "The check-offload target will not be available!")
return()
endif()
if(LIBOMPTARGET_ENABLE_DEBUG)
set(LIBOMPTARGET_DEBUG True)
else()
set(LIBOMPTARGET_DEBUG False)
endif()
# Replace the space from user's input with ";" in case that CMake add escape
# char into the lit command.
string(REPLACE " " ";" LIBOMPTARGET_LIT_ARG_LIST "${LIBOMPTARGET_LIT_ARGS}")
find_package(CUDAToolkit QUIET ${OFFLOAD_MIN_CUDA_VERSION})
if(CUDAToolkit_FOUND)
get_filename_component(CUDA_ROOT "${CUDAToolkit_BIN_DIR}" DIRECTORY ABSOLUTE)
get_filename_component(CUDA_LIBDIR "${CUDA_cudart_static_LIBRARY}" DIRECTORY)
endif()
set(OMP_DEPEND)
if(TARGET omp)
set(OMP_DEPEND omp)
endif()
if(TARGET omptarget)
string(REGEX MATCHALL "([^\\ ]+\\ |[^\\ ]+$)" SYSTEM_TARGETS "${LIBOMPTARGET_SYSTEM_TARGETS}")
foreach(CURRENT_TARGET IN LISTS SYSTEM_TARGETS)
string(STRIP "${CURRENT_TARGET}" CURRENT_TARGET)
add_offload_testsuite(check-libomptarget-${CURRENT_TARGET}
"Running libomptarget tests"
${CMAKE_CURRENT_BINARY_DIR}/${CURRENT_TARGET}
DEPENDS omptarget ${OMP_DEPEND} ${LIBOMPTARGET_TESTED_PLUGINS}
ARGS ${LIBOMPTARGET_LIT_ARG_LIST})
list(APPEND LIBOMPTARGET_LIT_TESTSUITES ${CMAKE_CURRENT_BINARY_DIR}/${CURRENT_TARGET})
# Configure the lit.site.cfg.in file
set(AUTO_GEN_COMMENT "## Autogenerated by libomptarget configuration.\n# Do not edit!")
configure_file(lit.site.cfg.in ${CURRENT_TARGET}/lit.site.cfg @ONLY)
endforeach()
# The tools that are needed or used by tests.
set(OFFLOAD_TOOLS llvm-offload-device-info llvm-omp-kernel-replay)
add_offload_testsuite(check-libomptarget
"Running libomptarget tests"
${LIBOMPTARGET_LIT_TESTSUITES}
EXCLUDE_FROM_CHECK_ALL
DEPENDS ${OFFLOAD_TOOLS} omptarget ${OMP_DEPEND} ${LIBOMPTARGET_TESTED_PLUGINS}
ARGS ${LIBOMPTARGET_LIT_ARG_LIST})
else()
message(STATUS "Skipping libomptarget lit suites because libomptarget was not built.")
endif()
# Add liboffload unit tests - the test binary will run on all available devices
set(OFFLOAD_UNITTEST_DIR ${CMAKE_CURRENT_BINARY_DIR}/../unittests)
configure_lit_site_cfg(
${CMAKE_CURRENT_SOURCE_DIR}/unit/lit.site.cfg.in
${CMAKE_CURRENT_BINARY_DIR}/unit/lit.site.cfg
MAIN_CONFIG
${CMAKE_CURRENT_SOURCE_DIR}/unit/lit.cfg.py)
set(CHECK_OFFLOAD_SUITES ${CMAKE_CURRENT_BINARY_DIR}/unit)
set(CHECK_OFFLOAD_DEPS ${OFFLOAD_TOOLS} LLVMOffload OffloadUnitTests ${LIBOMPTARGET_TESTED_PLUGINS})
set(CHECK_OFFLOAD_ARGS "")
if(TARGET omptarget)
list(APPEND CHECK_OFFLOAD_SUITES ${LIBOMPTARGET_LIT_TESTSUITES})
list(APPEND CHECK_OFFLOAD_DEPS omptarget ${OMP_DEPEND})
list(APPEND CHECK_OFFLOAD_ARGS ${LIBOMPTARGET_LIT_ARG_LIST})
endif()
add_offload_testsuite(check-offload
"Running offload tests"
${CHECK_OFFLOAD_SUITES}
EXCLUDE_FROM_CHECK_ALL
DEPENDS ${CHECK_OFFLOAD_DEPS}
ARGS ${CHECK_OFFLOAD_ARGS})
add_lit_testsuite(check-offload-unit "Running offload unittest suites"
${CMAKE_CURRENT_BINARY_DIR}/unit
DEPENDS LLVMOffload OffloadUnitTests)