Summary: Follow up on removal of OPENMP_STANDALONE_BUILD in openmp (#149878). This build method is redundant and can be accomplished via runtimes. Removes support for: `cmake -S <llvm-project>/offload ...` Switches over to: `make -S <llvm-project>/runtimes -DLLVM_ENABLE_RUNTIMES=openmp;offload ...` Libomptarget has a dependency on libomp.so and requires the omp cmake target to exist at build time, which is why both runtimes are listed. Updates cmake compiler logic in offload/CMakeLists.txt to mirror openmp changes: [openmp] Allow testing OpenMP without a full clang build tree (#182470) User will still need to have a separate invocation to build openmp DeviceRTL via: `-DLLVM_ENABLE_RUNTIMES=openmp` `-DLLVM_DEFAULT_TARGET_TRIPLE=<amdgcn-amd-amdhsa|nvptx64-nvidia-cuda>`
69 lines
1.8 KiB
CMake
69 lines
1.8 KiB
CMake
message(STATUS "Building offloading runtime library libomptarget.")
|
|
|
|
if(NOT TARGET "omp")
|
|
message(FATAL_ERROR "Error: omp target dependency of libomptarget not found. Please ensure 'openmp' is on LLVM_ENABLE_RUNTIMES list.")
|
|
endif()
|
|
|
|
add_llvm_library(omptarget
|
|
SHARED
|
|
|
|
device.cpp
|
|
interface.cpp
|
|
omptarget.cpp
|
|
OffloadRTL.cpp
|
|
LegacyAPI.cpp
|
|
PluginManager.cpp
|
|
DeviceImage.cpp
|
|
|
|
OpenMP/API.cpp
|
|
OpenMP/Mapping.cpp
|
|
OpenMP/InteropAPI.cpp
|
|
OpenMP/OMPT/Callback.cpp
|
|
|
|
KernelLanguage/API.cpp
|
|
|
|
ADDITIONAL_HEADER_DIRS
|
|
${LIBOMPTARGET_INCLUDE_DIR}
|
|
${LIBOMPTARGET_BINARY_INCLUDE_DIR}
|
|
|
|
LINK_COMPONENTS
|
|
FrontendOpenMP
|
|
Support
|
|
Object
|
|
|
|
LINK_LIBS
|
|
PUBLIC
|
|
omp
|
|
|
|
NO_INSTALL_RPATH
|
|
BUILDTREE_ONLY
|
|
)
|
|
target_include_directories(omptarget PRIVATE
|
|
${LIBOMPTARGET_INCLUDE_DIR} ${LIBOMPTARGET_BINARY_INCLUDE_DIR}
|
|
)
|
|
|
|
if(LLVM_HAVE_LINK_VERSION_SCRIPT)
|
|
target_link_libraries(omptarget PRIVATE "-Wl,--version-script=${CMAKE_CURRENT_SOURCE_DIR}/exports")
|
|
endif()
|
|
|
|
# Define the TARGET_NAME and DEBUG_PREFIX.
|
|
target_compile_definitions(omptarget PRIVATE
|
|
TARGET_NAME=omptarget
|
|
DEBUG_PREFIX="omptarget"
|
|
)
|
|
|
|
foreach(plugin IN LISTS LIBOMPTARGET_PLUGINS_TO_BUILD)
|
|
target_link_libraries(omptarget PRIVATE omptarget.rtl.${plugin})
|
|
endforeach()
|
|
|
|
target_compile_options(omptarget PRIVATE ${offload_compile_flags})
|
|
target_link_options(omptarget PRIVATE ${offload_link_flags})
|
|
|
|
# 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
|
|
POSITION_INDEPENDENT_CODE ON
|
|
INSTALL_RPATH "$ORIGIN"
|
|
BUILD_RPATH "$ORIGIN:${CMAKE_CURRENT_BINARY_DIR}/..")
|
|
install(TARGETS omptarget LIBRARY COMPONENT omptarget DESTINATION "${OFFLOAD_INSTALL_LIBDIR}")
|