Summary: Certain plugins can only be built on specific platforms. Previously this didn't cause issues becaues each one was handled independently. However, now that we link these all directly they need to be in a CMake list. Furthermore we use this list to generate a config file. For this reason these checks are moved to where we normalize the support. Fixes: https://github.com/llvm/llvm-project/issues/93183
29 lines
1.4 KiB
CMake
29 lines
1.4 KiB
CMake
# Create the library and add the default arguments.
|
|
add_target_library(omptarget.rtl.cuda CUDA)
|
|
|
|
target_sources(omptarget.rtl.cuda PRIVATE src/rtl.cpp)
|
|
|
|
find_package(CUDAToolkit QUIET)
|
|
if(CUDAToolkit_FOUND AND NOT "cuda" IN_LIST LIBOMPTARGET_DLOPEN_PLUGINS)
|
|
message(STATUS "Building CUDA plugin linked against libcuda")
|
|
target_link_libraries(omptarget.rtl.cuda PRIVATE CUDA::cuda_driver)
|
|
else()
|
|
message(STATUS "Building CUDA plugin for dlopened libcuda")
|
|
target_include_directories(omptarget.rtl.cuda PRIVATE dynamic_cuda)
|
|
target_sources(omptarget.rtl.cuda PRIVATE dynamic_cuda/cuda.cpp)
|
|
endif()
|
|
|
|
# Configure testing for the CUDA plugin. We will build tests if we could a
|
|
# functional NVIDIA GPU on the system, or if manually specifies by the user.
|
|
option(LIBOMPTARGET_FORCE_NVIDIA_TESTS "Build NVIDIA libomptarget tests" OFF)
|
|
if (LIBOMPTARGET_FOUND_NVIDIA_GPU OR LIBOMPTARGET_FORCE_NVIDIA_TESTS)
|
|
message(STATUS "Enable tests using CUDA plugin")
|
|
set(LIBOMPTARGET_SYSTEM_TARGETS
|
|
"${LIBOMPTARGET_SYSTEM_TARGETS} nvptx64-nvidia-cuda nvptx64-nvidia-cuda-LTO" PARENT_SCOPE)
|
|
list(APPEND LIBOMPTARGET_TESTED_PLUGINS "omptarget.rtl.cuda")
|
|
set(LIBOMPTARGET_TESTED_PLUGINS "${LIBOMPTARGET_TESTED_PLUGINS}" PARENT_SCOPE)
|
|
else()
|
|
message(STATUS "Not generating NVIDIA tests, no supported devices detected."
|
|
" Use 'LIBOMPTARGET_FORCE_NVIDIA_TESTS' to override.")
|
|
endif()
|