if (OPENMP_STANDALONE_BUILD)
# Complete LLVM package is required for building libomptarget
# in an out-of-tree mode.
- find_package(LLVM REQUIRED HINTS "${LLVM_CMAKE_DIR}")
+ find_package(LLVM REQUIRED)
message(STATUS "Found LLVM ${LLVM_PACKAGE_VERSION}")
message(STATUS "Using LLVM in: ${LLVM_DIR}")
list(APPEND LIBOMPTARGET_LLVM_INCLUDE_DIRS ${LLVM_INCLUDE_DIRS})
libomptarget_say("Building offloading runtime library libomptarget.")
-add_llvm_library(omptarget
- SHARED
-
- api.cpp
- device.cpp
- interface.cpp
- interop.cpp
- omptarget.cpp
- rtl.cpp
- LegacyAPI.cpp
-
- ADDITIONAL_HEADER_DIRS
- ${LIBOMPTARGET_INCLUDE_DIR}
-
- LINK_COMPONENTS
- Support
- Object
-
- LINK_LIBS
- ${CMAKE_DL_LIBS}
- "-Wl,--version-script=${CMAKE_CURRENT_SOURCE_DIR}/exports"
+set(LIBOMPTARGET_SRC_FILES
+ ${CMAKE_CURRENT_SOURCE_DIR}/api.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/device.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/interface.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/interop.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/omptarget.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/rtl.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/LegacyAPI.cpp
)
-target_include_directories(omptarget PRIVATE ${LIBOMPTARGET_INCLUDE_DIR})
+set(LIBOMPTARGET_SRC_FILES ${LIBOMPTARGET_SRC_FILES} PARENT_SCOPE)
+
+# Build libomptarget library with libdl dependency.
+add_library(omptarget SHARED ${LIBOMPTARGET_SRC_FILES})
+set_target_properties(omptarget PROPERTIES INSTALL_RPATH "$ORIGIN" BUILD_RPATH "$ORIGIN")
+if (OPENMP_ENABLE_LIBOMPTARGET_PROFILING)
+ # Add LLVMSupport dependency if profiling is enabled.
+ # Linking with LLVM component libraries also requires
+ # aligning the compile flags.
+ llvm_update_compile_flags(omptarget)
+ target_compile_definitions(omptarget PUBLIC OMPTARGET_PROFILE_ENABLED)
+ target_link_libraries(omptarget PRIVATE LLVMSupport)
+endif()
+target_include_directories(omptarget PRIVATE
+ ${LIBOMPTARGET_INCLUDE_DIR})
+target_link_libraries(omptarget PRIVATE
+ ${CMAKE_DL_LIBS}
+ "-Wl,--version-script=${CMAKE_CURRENT_SOURCE_DIR}/exports")
-# Also install plugin under the standard lib destination folder.
-install(TARGETS omptarget LIBRARY DESTINATION "${OPENMP_INSTALL_LIBDIR}")
+# Install libomptarget under the lib destination folder.
+install(TARGETS omptarget LIBRARY COMPONENT omptarget
+ DESTINATION "${OPENMP_INSTALL_LIBDIR}")