summarylogtreecommitdiffstats
path: root/rvslib-explicit-linking.patch
blob: db6a96cd19977ffa2982d0240c875c6e602a64c8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
Add explicit link_directories and target_link_libraries for rvslib so the
shared library resolves all its symbols at link time. Also avoid linking rvs
against OpenMP::OpenMP_CXX because upstream calls find_package(OpenMP) before
switching CMAKE_CXX_COMPILER to hipcc, so clean builds may not create the CXX
imported target.

--- a/rvslib/CMakeLists.txt
+++ b/rvslib/CMakeLists.txt
@@ -120,6 +120,6 @@ include_directories(./ ../ ../rvs
   ${AMD_SMI_INC_DIR} ${ROCR_INC_DIR} ${ROCBLAS_INC_DIR} ${HIP_INC_DIR} ${HIPBLASLT_INC_DIR} ${YAML_CPP_INCLUDE_DIR} ${HIPRAND_INC_DIR} ${ROCRAND_INC_DIR} ${HIPBLAS-COMMON_INCLUDE_DIR} ${MXDATAGENERATOR_INC_DIR})

-link_directories(${ASAN_LIB_PATH} ${AMD_SMI_LIB_DIR})
+link_directories(${ASAN_LIB_PATH} ${AMD_SMI_LIB_DIR} ${ROCBLAS_LIB_DIR} ${ROCR_LIB_DIR} ${HIPBLASLT_LIB_DIR} ${HIPRAND_LIB_DIR})

 ## define common source files
 set(SOURCES
@@ -173,6 +173,7 @@ set_target_properties(${RVS_TARGET}
  PROPERTIES SUFFIX .so.${LIB_VERSION_STRING}
  LIBRARY_OUTPUT_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY})
-target_link_libraries(${RVS_TARGET} ${AMD_SMI_LIB})
+target_link_libraries(${RVS_TARGET} ${AMD_SMI_LIB} rocblas hsa-runtime64::hsa-runtime64 pci ${YAML_CPP_TARGET} hipblaslt hiprand omp)
+target_link_options(${RVS_TARGET} PRIVATE "LINKER:--no-as-needed" "LINKER:-z,defs")
 ## Install shared library librvslib.so
 add_custom_command(TARGET ${RVS_TARGET} POST_BUILD
 COMMAND ln -fs ./lib${RVS}.so.${LIB_VERSION_STRING} lib${RVS}.so.${VERSION_MAJOR} WORKING_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}
--- a/rvs/CMakeLists.txt
+++ b/rvs/CMakeLists.txt
@@ -131,1 +131,1 @@
-target_link_libraries(${RVS_TARGET} rvslib OpenMP::OpenMP_CXX
+target_link_libraries(${RVS_TARGET} rvslib omp