message(STATUS "Building offloading runtime library libomptarget.") if(LIBOMP_STANDALONE) set(LIBOMP ${LIBOMP_STANDALONE}) else() set(LIBOMP omp) 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 ${LIBOMP} NO_INSTALL_RPATH BUILDTREE_ONLY ) target_include_directories(omptarget PRIVATE ${LIBOMPTARGET_INCLUDE_DIR} ${LIBOMPTARGET_BINARY_INCLUDE_DIR} ) if (LIBOMP_HAVE_VERSION_SCRIPT_FLAG) 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}")