@@ -58,6 +58,25 @@ function( get_cblas cblas_libs cblas_inc )
5858 set ( ${cblas_libs} ${libs} PARENT_SCOPE )
5959endfunction ( )
6060
61+ function ( apply_omp_settings lib_target_ )
62+ if (CMAKE_CXX_COMPILER_ID MATCHES "Clang" AND TARGET OpenMP::OpenMP_CXX)
63+ set_target_properties ( ${lib_target_} PROPERTIES
64+ BUILD_RPATH "${HIP_CLANG_ROOT} /lib"
65+ )
66+ set_target_properties ( ${lib_target_} PROPERTIES
67+ INSTALL_RPATH "$ORIGIN/../llvm/lib"
68+ )
69+ elseif (CMAKE_CXX_COMPILER_ID MATCHES "Clang" AND TARGET OpenMP::omp)
70+ set_target_properties ( ${lib_target_} PROPERTIES
71+ BUILD_RPATH "${HIP_CLANG_ROOT} /${openmp_LIB_DIR} "
72+ )
73+ set_target_properties ( ${lib_target_} PROPERTIES
74+ INSTALL_RPATH "$ORIGIN/../llvm/${openmp_LIB_DIR} "
75+ )
76+ endif ()
77+ endfunction ()
78+
79+
6180# Consider removing this in the future
6281# This should appear before the project command, because it does not use FORCE
6382if ( WIN32 )
@@ -114,19 +133,20 @@ if( BUILD_CLIENTS_BENCHMARKS OR BUILD_CLIENTS_TESTS)
114133 set (THREADS_PREFER_PTHREAD_FLAG ON )
115134 find_package (Threads REQUIRED)
116135
117- # if it fails to find OpenMP compile and link flags in strange configurations it can just use non-parallel reference computation
118- # if there is no omp.h to find the client compilation will fail and this should be obvious, used to be REQUIRED
119- find_package (OpenMP)
136+ if (CMAKE_CXX_COMPILER_ID MATCHES "Clang" )
137+ # Look for openmp config in ROCm install to populate openmp_LIB_DIR and openmp_LIB_INSTALL_DIR
138+ find_package (OpenMP CONFIG PATHS "${HIP_CLANG_ROOT} /lib/cmake" )
139+ endif ()
120140
121- if (TARGET OpenMP::OpenMP_CXX )
122- set ( COMMON_LINK_LIBS "OpenMP::OpenMP_CXX " )
123- if (HIP_PLATFORM STREQUAL amd )
124- list ( APPEND COMMON_LINK_LIBS "-L \" ${HIP_CLANG_ROOT} /lib \" " )
125- if ( NOT WIN32 )
126- list ( APPEND COMMON_LINK_LIBS "-Wl,-rpath= ${HIP_CLANG_ROOT} /lib -lomp" )
127- else ( )
128- list ( APPEND COMMON_LINK_LIBS "libomp" )
129- endif ( )
141+ if (CMAKE_CXX_COMPILER_ID MATCHES "Clang" AND TARGET OpenMP::omp )
142+ set ( COMMON_LINK_LIBS "OpenMP::omp " )
143+ message ( STATUS "Found openmp-config.cmake at ${OpenMP_DIR} " )
144+ else ( )
145+ # if it fails to find OpenMP compile and link flags in strange configurations it can just use non-parallel reference computation
146+ # if there is no omp.h to find the client compilation will fail and this should be obvious, used to be REQUIRED
147+ find_package (OpenMP )
148+ if ( TARGET OpenMP::OpenMP_CXX )
149+ set ( COMMON_LINK_LIBS "OpenMP::OpenMP_CXX" )
130150 endif ()
131151 endif ()
132152
0 commit comments