##===----------------------------------------------------------------------===## # # The LLVM Compiler Infrastructure # # This file is dual licensed under the MIT and the University of Illinois Open # Source Licenses. See LICENSE.txt for details. # ##===----------------------------------------------------------------------===## # # Build a plugin for a CUDA machine if available. # ##===----------------------------------------------------------------------===## if(LIBOMPTARGET_DEP_LIBELF_FOUND) if(LIBOMPTARGET_DEP_CUDA_FOUND) if(CMAKE_SYSTEM_PROCESSOR MATCHES "(x86_64)|(ppc64le)$" AND CMAKE_SYSTEM_NAME MATCHES "Linux") libomptarget_say("Building CUDA offloading plugin.") # Define the suffix for the runtime messaging dumps. add_definitions(-DTARGET_NAME=CUDA) if(LIBOMPTARGET_CMAKE_BUILD_TYPE MATCHES debug) add_definitions(-DCUDA_ERROR_REPORT) endif() include_directories(${LIBOMPTARGET_DEP_CUDA_INCLUDE_DIRS}) include_directories(${LIBOMPTARGET_DEP_LIBELF_INCLUDE_DIRS}) add_library(omptarget.rtl.cuda SHARED src/rtl.cpp) # Install plugin under the lib destination folder. install(TARGETS omptarget.rtl.cuda LIBRARY DESTINATION lib${OPENMP_LIBDIR_SUFFIX}) target_link_libraries(omptarget.rtl.cuda ${LIBOMPTARGET_DEP_CUDA_LIBRARIES} cuda ${LIBOMPTARGET_DEP_LIBELF_LIBRARIES} "-Wl,--version-script=${CMAKE_CURRENT_SOURCE_DIR}/../exports") # Report to the parent scope that we are building a plugin for CUDA. set(LIBOMPTARGET_SYSTEM_TARGETS "${LIBOMPTARGET_SYSTEM_TARGETS} nvptx64-nvidia-cuda" PARENT_SCOPE) else() libomptarget_say("Not building CUDA offloading plugin: only support CUDA in Linux x86_64 or ppc64le hosts.") endif() else() libomptarget_say("Not building CUDA offloading plugin: CUDA not found in system.") endif() else(LIBOMPTARGET_DEP_LIBELF_FOUND) libomptarget_say("Not building CUDA offloading plugin: libelf dependency not found.") endif(LIBOMPTARGET_DEP_LIBELF_FOUND)