blob: 0d0f0a43fb74569f032eebf5b9134d4e016b8cab [file] [log] [blame]
# SOLLVE OpenMP Offloading Validation & Verification Suite
# https://crpl.cis.udel.edu/ompvvsollve/
if (TEST_SUITE_BENCHMARKING_ONLY)
message(STATUS "Skipping OpenMP Validiation & Verification because benchmarking-only mode")
return ()
endif ()
include(External)
llvm_externals_find(TEST_SUITE_SOLLVEVV_ROOT "sollve_vv" "OpenMP Offloading Validation & Verification Suite")
if (NOT TEST_SUITE_SOLLVEVV_ROOT)
message(STATUS "Skipping OpenMP Validiation & Verification because external sources not specified")
return ()
endif ()
include(../OpenMPOffloading.cmake)
if (NOT TARGET OpenMP_Offloading)
message(STATUS "Skipping OpenMP Validiation & Verification because OpenMP Offloading not available")
return ()
endif ()
message(STATUS "Adding OpenMP Offloading Validiation & Verification tests")
if (TEST_SUITE_EFFECTIVE_SYSTEM_GPU STREQUAL "all")
file(GLOB_RECURSE _tests_sources RELATIVE "${TEST_SUITE_SOLLVEVV_ROOT}/tests"
"${TEST_SUITE_SOLLVEVV_ROOT}/tests/*.c"
"${TEST_SUITE_SOLLVEVV_ROOT}/tests/*.cpp"
"${TEST_SUITE_SOLLVEVV_ROOT}/tests/*.F90"
)
set(TEST_SUITE_SOLLVEVV_TESTS ${_tests_sources})
message(STATUS "Using all SOLLVE V&V tests")
else ()
include(sollvevv_${TEST_SUITE_EFFECTIVE_SYSTEM_GPU}_tests.cmake)
endif ()
function (add_sollvevv lang)
set(_includedir "${TEST_SUITE_SOLLVEVV_ROOT}/ompvv" )
if (lang STREQUAL "Fortran" AND NOT TEST_SUITE_FORTRAN)
message(STATUS "Skipping SOLLVE V&V Fortran tests in because Fortran tests are disabled")
return ()
endif ()
if (NOT OpenMP_${lang}_FOUND)
message(STATUS "Skipping SOLLVE V&V ${lang} tests in because no OpenMP for ${lang} found")
return ()
endif ()
if (lang STREQUAL "C")
set(_langext ".c")
elseif (lang STREQUAL "CXX")
set(_langext ".cpp")
elseif (lang STREQUAL "Fortran")
set(_langext ".F90")
else ()
return ()
endif ()
foreach (_file IN LISTS TEST_SUITE_SOLLVEVV_TESTS)
get_filename_component(_ext "${_file}" EXT)
get_filename_component(_basename "${_file}" NAME_WE)
get_filename_component(_directory "${_file}" DIRECTORY)
if (NOT (_ext STREQUAL _langext))
continue ()
endif ()
string(REPLACE "." "" _ext "${_ext}")
string(REPLACE "/" "_" _directory "${_directory}")
string(REPLACE "." "" _directory "${_directory}")
set(_name "omptargetvv-${_basename}-${_directory}-${_ext}")
# Create a directory for the test
set(_module_dir "${CMAKE_CURRENT_BINARY_DIR}/modules/${_name}")
file(MAKE_DIRECTORY ${_module_dir})
llvm_test_run()
llvm_test_executable(${_name} "${TEST_SUITE_SOLLVEVV_ROOT}/tests/${_file}")
target_include_directories(${_name} PRIVATE "${_includedir}")
target_link_libraries(${_name} PUBLIC OpenMP_Offloading m)
set_target_properties(${_name} PROPERTIES Fortran_MODULE_DIRECTORY ${_module_dir})
endforeach ()
endfunction ()
get_property(_enabled_languages GLOBAL PROPERTY ENABLED_LANGUAGES)
foreach (_lang IN LISTS _enabled_languages)
add_sollvevv(${_lang})
endforeach ()