[OpenMP] Make libomptarget link against libomp

In `libomptarget` we use a couple of functions from `libomp`, but we didn't link
`libomptarget` against `libomp`. That will not work on some platforms such
as macOS. A linker error will be encountered because those symbols are not resolved
at link time when building `libomptarget`. This patch simply makes `libomptarget`
link agains `libomp`, makes it a "user" of `libomp`. I think this will not break
the policies between `libomp` and `libomptarget`.

Reviewed By: jdoerfert

Differential Revision: https://reviews.llvm.org/D149617
This commit is contained in:
Shilei Tian
2023-05-06 23:26:43 -04:00
parent 67a98528d3
commit e87e4cfc12
2 changed files with 13 additions and 2 deletions

View File

@@ -31,6 +31,10 @@ add_llvm_library(omptarget
Support
Object
LINK_LIBS
PUBLIC
omp
NO_INSTALL_RPATH
)
target_include_directories(omptarget PRIVATE ${LIBOMPTARGET_INCLUDE_DIR})

View File

@@ -354,11 +354,18 @@ if(${MIC})
endif()
add_dependencies(libomp-micro-tests libomp-test-deps)
# `omp` needs to be exported if in-tree build.
set(export_to_llvmexports)
if (NOT OPENMP_STANDALONE_BUILD)
get_target_export_arg(omp LLVM export_to_llvmexports)
set_property(GLOBAL APPEND PROPERTY LLVM_EXPORTS omp)
endif()
# Install rules
# We want to install libomp in ${DESTDIR}/${CMAKE_INSTALL_FULL_LIBDIR}
# We want to install headers in ${DESTDIR}/${CMAKE_INSTALL_FULL_INCLUDEDIR}
if(WIN32)
install(TARGETS omp RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}")
install(TARGETS omp ${export_to_llvmexports} RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}")
install(TARGETS ${LIBOMP_IMP_LIB_TARGET} ARCHIVE DESTINATION "${OPENMP_INSTALL_LIBDIR}")
# Create aliases (regular copies) of the library for backwards compatibility
set(LIBOMP_ALIASES "libiomp5md")
@@ -371,7 +378,7 @@ if(WIN32)
endforeach()
else()
install(TARGETS omp ${LIBOMP_INSTALL_KIND} DESTINATION "${OPENMP_INSTALL_LIBDIR}")
install(TARGETS omp ${export_to_llvmexports} ${LIBOMP_INSTALL_KIND} DESTINATION "${OPENMP_INSTALL_LIBDIR}")
if(${LIBOMP_INSTALL_ALIASES})
# Create aliases (symlinks) of the library for backwards compatibility