[Openmp-commits] [openmp] fb53a70 - [OpenMP] Only enable version script if supported
Shilei Tian via Openmp-commits
openmp-commits at lists.llvm.org
Sun Apr 30 20:35:01 PDT 2023
Author: Shilei Tian
Date: 2023-04-30T23:34:56-04:00
New Revision: fb53a7044a04cc05001aaf96cf14d390ac5ec33a
URL: https://github.com/llvm/llvm-project/commit/fb53a7044a04cc05001aaf96cf14d390ac5ec33a
DIFF: https://github.com/llvm/llvm-project/commit/fb53a7044a04cc05001aaf96cf14d390ac5ec33a.diff
LOG: [OpenMP] Only enable version script if supported
The linker flag `--version-script` may not be supported by all linkers, such as
macOS's linker. `libomp` is already capable of detecting whether the linker supports
it and append the linker flag accordingly. Since currently we assume `libomptarget`
only works on Linux, we don't do the check accordingly. This patch simply adds
the check before adding it to linker flag. This will be the first patch to make
OpenMP target offloading work on macOS. Note that CMake files in `plugins` are
not touched before they are going to be removed pretty soon anyway.
Reviewed By: jhuber6
Differential Revision: https://reviews.llvm.org/D149555
Added:
Modified:
openmp/libomptarget/plugins-nextgen/CMakeLists.txt
openmp/libomptarget/plugins-nextgen/amdgpu/CMakeLists.txt
openmp/libomptarget/plugins-nextgen/cuda/CMakeLists.txt
openmp/libomptarget/src/CMakeLists.txt
Removed:
################################################################################
diff --git a/openmp/libomptarget/plugins-nextgen/CMakeLists.txt b/openmp/libomptarget/plugins-nextgen/CMakeLists.txt
index 95e359cdbf2ec..af02f050f467f 100644
--- a/openmp/libomptarget/plugins-nextgen/CMakeLists.txt
+++ b/openmp/libomptarget/plugins-nextgen/CMakeLists.txt
@@ -52,11 +52,15 @@ if(CMAKE_SYSTEM_PROCESSOR MATCHES "${tmachine}$")
PluginInterface
${LIBOMPTARGET_DEP_LIBFFI_LIBRARIES}
${OPENMP_PTHREAD_LIB}
- "-Wl,--version-script=${CMAKE_CURRENT_SOURCE_DIR}/../exports"
NO_INSTALL_RPATH
)
+ if (LIBOMP_HAVE_VERSION_SCRIPT_FLAG)
+ target_link_libraries("omptarget.rtl.${tmachine_libname}.nextgen" PRIVATE
+ "-Wl,--version-script=${CMAKE_CURRENT_SOURCE_DIR}/../exports")
+ endif()
+
# Install plugin under the lib destination folder.
install(TARGETS "omptarget.rtl.${tmachine_libname}.nextgen"
LIBRARY DESTINATION "${OPENMP_INSTALL_LIBDIR}")
diff --git a/openmp/libomptarget/plugins-nextgen/amdgpu/CMakeLists.txt b/openmp/libomptarget/plugins-nextgen/amdgpu/CMakeLists.txt
index b813497ab4d87..b689ff5a38d5f 100644
--- a/openmp/libomptarget/plugins-nextgen/amdgpu/CMakeLists.txt
+++ b/openmp/libomptarget/plugins-nextgen/amdgpu/CMakeLists.txt
@@ -85,12 +85,16 @@ add_llvm_library(omptarget.rtl.amdgpu.nextgen SHARED
PluginInterface
${LIBOMPTARGET_DEP_LIBRARIES}
${OPENMP_PTHREAD_LIB}
- "-Wl,--version-script=${CMAKE_CURRENT_SOURCE_DIR}/../exports"
${LDFLAGS_UNDEFINED}
NO_INSTALL_RPATH
)
+if (LIBOMP_HAVE_VERSION_SCRIPT_FLAG)
+ target_link_libraries(omptarget.rtl.amdgpu.nextgen PRIVATE
+ "-Wl,--version-script=${CMAKE_CURRENT_SOURCE_DIR}/../exports")
+endif()
+
target_include_directories(
omptarget.rtl.amdgpu.nextgen
PRIVATE
diff --git a/openmp/libomptarget/plugins-nextgen/cuda/CMakeLists.txt b/openmp/libomptarget/plugins-nextgen/cuda/CMakeLists.txt
index 6b7d2d743c73f..397b06b676923 100644
--- a/openmp/libomptarget/plugins-nextgen/cuda/CMakeLists.txt
+++ b/openmp/libomptarget/plugins-nextgen/cuda/CMakeLists.txt
@@ -38,11 +38,16 @@ add_llvm_library(omptarget.rtl.cuda.nextgen SHARED
MemoryManager
PluginInterface
${OPENMP_PTHREAD_LIB}
- "-Wl,--version-script=${CMAKE_CURRENT_SOURCE_DIR}/../exports,-z,defs"
NO_INSTALL_RPATH
)
+if (LIBOMP_HAVE_VERSION_SCRIPT_FLAG)
+ target_link_libraries(omptarget.rtl.cuda.nextgen PRIVATE
+ "-Wl,--version-script=${CMAKE_CURRENT_SOURCE_DIR}/../exports,-z,defs")
+endif()
+
+
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)
diff --git a/openmp/libomptarget/src/CMakeLists.txt b/openmp/libomptarget/src/CMakeLists.txt
index 2a6cd93c6ec98..ef3a6270b78a5 100644
--- a/openmp/libomptarget/src/CMakeLists.txt
+++ b/openmp/libomptarget/src/CMakeLists.txt
@@ -31,13 +31,15 @@ add_llvm_library(omptarget
Support
Object
- LINK_LIBS
- PRIVATE
- "-Wl,--version-script=${CMAKE_CURRENT_SOURCE_DIR}/exports"
NO_INSTALL_RPATH
)
target_include_directories(omptarget PRIVATE ${LIBOMPTARGET_INCLUDE_DIR})
+if (LIBOMP_HAVE_VERSION_SCRIPT_FLAG)
+ target_link_libraries(omptarget PRIVATE
+ "-Wl,--version-script=${CMAKE_CURRENT_SOURCE_DIR}/exports")
+endif()
+
# libomptarget.so needs to be aware of where the plugins live as they
# are now separated in the build directory.
set_target_properties(omptarget PROPERTIES INSTALL_RPATH "$ORIGIN" BUILD_RPATH "$ORIGIN:${CMAKE_CURRENT_BINARY_DIR}/..")
More information about the Openmp-commits
mailing list