libomptarget_say("Building CUDA NextGen offloading plugin.")
-# Define the suffix for the runtime messaging dumps.
-add_definitions("-DTARGET_NAME=CUDA")
-
-# Define debug prefix. TODO: This should be automatized in the Debug.h but it
-# requires changing the original plugins.
-add_definitions(-DDEBUG_PREFIX="TARGET CUDA RTL")
-
set(LIBOMPTARGET_DLOPEN_LIBCUDA OFF)
option(LIBOMPTARGET_FORCE_DLOPEN_LIBCUDA "Build with dlopened libcuda" ${LIBOMPTARGET_DLOPEN_LIBCUDA})
-set(LIBOMPTARGET_CAN_LINK_LIBCUDA FALSE)
-if (LIBOMPTARGET_DEP_CUDA_FOUND)
- set(LIBOMPTARGET_CAN_LINK_LIBCUDA TRUE)
-endif()
+add_llvm_library(omptarget.rtl.cuda.nextgen SHARED
+ src/rtl.cpp
-if (LIBOMPTARGET_CAN_LINK_LIBCUDA AND NOT LIBOMPTARGET_FORCE_DLOPEN_LIBCUDA)
- libomptarget_say("Building CUDA NextGen plugin linked against libcuda")
- include_directories(${LIBOMPTARGET_DEP_CUDA_INCLUDE_DIRS})
- add_llvm_library(omptarget.rtl.cuda.nextgen SHARED
+ LINK_COMPONENTS
+ Support
+ Object
- src/rtl.cpp
+ LINK_LIBS PRIVATE
+ elf_common
+ MemoryManager
+ PluginInterface
+ ${OPENMP_PTHREAD_LIB}
+ "-Wl,--version-script=${CMAKE_CURRENT_SOURCE_DIR}/../exports,-z,defs"
- ADDITIONAL_HEADER_DIRS
- ${LIBOMPTARGET_INCLUDE_DIR}
-
- LINK_LIBS
- PRIVATE
- elf_common
- MemoryManager
- PluginInterface
- CUDA::cuda_driver
- ${OPENMP_PTHREAD_LIB}
- "-Wl,--version-script=${CMAKE_CURRENT_SOURCE_DIR}/../exports"
- "-Wl,-z,defs"
+ NO_INSTALL_RPATH
+)
- NO_INSTALL_RPATH
- )
+if(LIBOMPTARGET_DEP_CUDA_FOUND AND NOT LIBOMPTARGET_FORCE_DLOPEN_LIBCUDA)
+ libomptarget_say("Building CUDA plugin linked against libcuda")
+ target_link_libraries(omptarget.rtl.cuda.nextgen PRIVATE CUDA::cuda_driver)
else()
- libomptarget_say("Building CUDA NextGen plugin for dlopened libcuda")
- include_directories(../../plugins/cuda/dynamic_cuda)
- add_llvm_library(omptarget.rtl.cuda.nextgen
- SHARED
-
- src/rtl.cpp
- ../../plugins/cuda/dynamic_cuda/cuda.cpp
-
- ADDITIONAL_HEADER_DIRS
- ${LIBOMPTARGET_INCLUDE_DIR}
-
- LINK_LIBS
- PRIVATE
- elf_common
- MemoryManager
- PluginInterface
- ${CMAKE_DL_LIBS}
- ${OPENMP_PTHREAD_LIB}
- "-Wl,--version-script=${CMAKE_CURRENT_SOURCE_DIR}/../exports"
- "-Wl,-z,defs"
-
- NO_INSTALL_RPATH
- )
+ libomptarget_say("Building CUDA plugin for dlopened libcuda")
+ target_include_directories(omptarget.rtl.cuda.nextgen PRIVATE dynamic_cuda)
+ target_sources(omptarget.rtl.cuda.nextgen PRIVATE dynamic_cuda/cuda.cpp)
endif()
add_dependencies(omptarget.rtl.cuda.nextgen omptarget.devicertl.nvptx)
+# Define debug prefix. TODO: This should be automatized in the Debug.h but it
+# requires changing the original plugins.
+target_compile_definitions(omptarget.rtl.cuda.nextgen PRIVATE TARGET_NAME="CUDA")
+target_compile_definitions(omptarget.rtl.cuda.nextgen PRIVATE DEBUG_PREFIX="TARGET CUDA RTL")
+
+target_include_directories(omptarget.rtl.cuda.nextgen PRIVATE ${LIBOMPTARGET_INCLUDE_DIR})
+
# Install plugin under the lib destination folder.
install(TARGETS omptarget.rtl.cuda.nextgen LIBRARY DESTINATION "${OPENMP_INSTALL_LIBDIR}")
set_target_properties(omptarget.rtl.cuda.nextgen PROPERTIES
INSTALL_RPATH "$ORIGIN" BUILD_RPATH "$ORIGIN:${CMAKE_CURRENT_BINARY_DIR}/.."
CXX_VISIBILITY_PRESET protected)
-
-target_include_directories(omptarget.rtl.cuda.nextgen PRIVATE
- ${LIBOMPTARGET_INCLUDE_DIR}
-)
libomptarget_say("Building CUDA offloading plugin.")
-# Define the suffix for the runtime messaging dumps.
-add_definitions(-DTARGET_NAME=CUDA)
-
set(LIBOMPTARGET_DLOPEN_LIBCUDA OFF)
option(LIBOMPTARGET_FORCE_DLOPEN_LIBCUDA "Build with dlopened libcuda" ${LIBOMPTARGET_DLOPEN_LIBCUDA})
-set(LIBOMPTARGET_CAN_LINK_LIBCUDA FALSE)
-if (LIBOMPTARGET_DEP_CUDA_FOUND)
- set(LIBOMPTARGET_CAN_LINK_LIBCUDA TRUE)
-endif()
-
-if (LIBOMPTARGET_CAN_LINK_LIBCUDA AND NOT LIBOMPTARGET_FORCE_DLOPEN_LIBCUDA)
- libomptarget_say("Building CUDA plugin linked against libcuda")
- add_llvm_library(omptarget.rtl.cuda SHARED
-
- src/rtl.cpp
+add_llvm_library(omptarget.rtl.cuda SHARED
+ src/rtl.cpp
- ADDITIONAL_HEADER_DIRS
- ${LIBOMPTARGET_INCLUDE_DIR}
+ LINK_COMPONENTS
+ Support
+ Object
- LINK_COMPONENTS
- Support
- Object
+ LINK_LIBS PRIVATE
+ elf_common
+ MemoryManager
+ ${OPENMP_PTHREAD_LIB}
+ "-Wl,--version-script=${CMAKE_CURRENT_SOURCE_DIR}/../exports,-z,defs"
- LINK_LIBS
- PRIVATE
- elf_common
- MemoryManager
- CUDA::cuda_driver
- ${OPENMP_PTHREAD_LIB}
- "-Wl,--version-script=${CMAKE_CURRENT_SOURCE_DIR}/../exports"
- "-Wl,-z,defs"
+ NO_INSTALL_RPATH
+)
- NO_INSTALL_RPATH
- )
+if(LIBOMPTARGET_DEP_CUDA_FOUND AND NOT LIBOMPTARGET_FORCE_DLOPEN_LIBCUDA)
+ libomptarget_say("Building CUDA plugin linked against libcuda")
+ target_link_libraries(omptarget.rtl.cuda PRIVATE CUDA::cuda_driver)
else()
libomptarget_say("Building CUDA plugin for dlopened libcuda")
- include_directories(dynamic_cuda)
- add_llvm_library(omptarget.rtl.cuda
- SHARED
-
- src/rtl.cpp
- dynamic_cuda/cuda.cpp
-
- ADDITIONAL_HEADER_DIRS
- ${LIBOMPTARGET_INCLUDE_DIR}
-
- LINK_LIBS
- PRIVATE
- elf_common
- MemoryManager
- ${OPENMP_PTHREAD_LIB}
- "-Wl,--version-script=${CMAKE_CURRENT_SOURCE_DIR}/../exports"
- "-Wl,-z,defs"
-
- NO_INSTALL_RPATH
- )
+ target_include_directories(omptarget.rtl.cuda PRIVATE dynamic_cuda)
+ target_sources(omptarget.rtl.cuda PRIVATE dynamic_cuda/cuda.cpp)
endif()
add_dependencies(omptarget.rtl.cuda omptarget.devicertl.nvptx)
+# Define the suffix for the runtime messaging dumps.
+target_compile_definitions(omptarget.rtl.cuda PRIVATE TARGET_NAME="CUDA")
+target_include_directories(omptarget.rtl.cuda PRIVATE ${LIBOMPTARGET_INCLUDE_DIR})
+
# Install plugin under the lib destination folder.
install(TARGETS omptarget.rtl.cuda LIBRARY DESTINATION "${OPENMP_INSTALL_LIBDIR}")
set_target_properties(omptarget.rtl.cuda PROPERTIES
INSTALL_RPATH "$ORIGIN" BUILD_RPATH "$ORIGIN:${CMAKE_CURRENT_BINARY_DIR}/.."
CXX_VISIBILITY_PRESET protected)
-target_include_directories(omptarget.rtl.cuda PRIVATE
- ${LIBOMPTARGET_INCLUDE_DIR}
-)
-
# Report to the parent scope that we are building a plugin for CUDA.
# This controls whether tests are run for the nvptx offloading target
# Run them if libcuda is available, or if the user explicitly asked for dlopen
option(LIBOMPTARGET_FORCE_NVIDIA_TESTS "Build NVIDIA libomptarget tests" OFF)
if (LIBOMPTARGET_FOUND_NVIDIA_GPU OR LIBOMPTARGET_FORCE_NVIDIA_TESTS)
libomptarget_say("Enable tests using CUDA plugin")
- set(LIBOMPTARGET_SYSTEM_TARGETS "${LIBOMPTARGET_SYSTEM_TARGETS} nvptx64-nvidia-cuda nvptx64-nvidia-cuda-oldDriver" PARENT_SCOPE)
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)