Files
llvm-project/offload/libomptarget/CMakeLists.txt
estewart08 0e7262407c [offload] - Remove standalone build in favor of 'runtimes' (#170693)
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>`
2026-03-19 09:00:40 -05:00

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}")