From 37f1fac4dd58b24db47b65aad72aa135a253d218 Mon Sep 17 00:00:00 2001 From: amdkila <47991923+amdkila@users.noreply.github.com> Date: Thu, 5 Mar 2020 12:23:03 -0700 Subject: [PATCH 1/2] Fix hip targets to work with hip-clang (#111) --- benchmark/CMakeLists.txt | 2 +- library/CMakeLists.txt | 13 ++++++------- test/CMakeLists.txt | 4 ++-- test/crush/CMakeLists.txt | 2 +- test/linkage/CMakeLists.txt | 4 ++-- 5 files changed, 12 insertions(+), 13 deletions(-) diff --git a/benchmark/CMakeLists.txt b/benchmark/CMakeLists.txt index 954983e5d..3bc18ef32 100644 --- a/benchmark/CMakeLists.txt +++ b/benchmark/CMakeLists.txt @@ -49,7 +49,7 @@ foreach(benchmark_src ${rocRAND_BENCHMARK_SRCS}) else() target_link_libraries(${benchmark_name} rocrand - hip::hip_hcc hip::hip_device + hip::device ) endif() foreach(amdgpu_target ${AMDGPU_TARGETS}) diff --git a/library/CMakeLists.txt b/library/CMakeLists.txt index bd089928f..504d532b5 100644 --- a/library/CMakeLists.txt +++ b/library/CMakeLists.txt @@ -56,16 +56,15 @@ else() add_library(rocrand ${rocRAND_SRCS}) # Remove this check when we no longer build with older rocm stack(ie < 1.8.2) - if(TARGET hip::device) + if(CXX_VERSION_STRING MATCHES "clang") target_link_libraries(rocrand PRIVATE hip::device) else() target_link_libraries(rocrand PRIVATE - # We keep hip::hip_hcc private, because otherwise it's not possible + # We keep hip::device private, because otherwise it's not possible # to link to roc::rocrand when using different compiler than hcc, - # hip::hip_hcc adds hcc-specific compilation flags. - hip::hip_hcc - hip::hip_device + # hip::device adds hcc-specific compilation flags. + hip::device hcc::hccshared ) endif() @@ -172,10 +171,10 @@ if(HIP_PLATFORM STREQUAL "nvcc") ) else() # Remove this check when we no longer build with older rocm stack(ie < 1.8.2) - if(TARGET hip::device) + if(CXX_VERSION_STRING MATCHES "clang") target_link_libraries(hiprand PRIVATE rocrand hip::device) else() - target_link_libraries(hiprand PRIVATE rocrand hip::hip_hcc hip::hip_device hcc::hccshared) + target_link_libraries(hiprand PRIVATE rocrand hip::device hcc::hccshared) endif() foreach(amdgpu_target ${AMDGPU_TARGETS}) target_link_libraries(hiprand PRIVATE --amdgpu-target=${amdgpu_target}) diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 8b43605bc..4f9be3023 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -50,7 +50,7 @@ foreach(test_src ${rocRAND_TEST_SRCS}) if(TARGET hip::device) target_link_libraries(${test_name} hip::device) else() - target_link_libraries(${test_name} hip::hip_hcc hip::hip_device) + target_link_libraries(${test_name} hip::device ) endif() foreach(amdgpu_target ${AMDGPU_TARGETS}) target_link_libraries(${test_name} --amdgpu-target=${amdgpu_target}) @@ -116,7 +116,7 @@ foreach(test_src ${hipRAND_TEST_SRCS}) if(TARGET hip::device) target_link_libraries(${test_name} hip::device) else() - target_link_libraries(${test_name} hip::hip_hcc hip::hip_device) + target_link_libraries(${test_name} hip::device ) endif() foreach(amdgpu_target ${AMDGPU_TARGETS}) target_link_libraries(${test_name} --amdgpu-target=${amdgpu_target}) diff --git a/test/crush/CMakeLists.txt b/test/crush/CMakeLists.txt index dfe049ae9..2a40e131d 100644 --- a/test/crush/CMakeLists.txt +++ b/test/crush/CMakeLists.txt @@ -56,7 +56,7 @@ foreach(crush_test_src ${rocRAND_CRUSH_TEST_SRCS}) else() target_link_libraries(${crush_test_name} rocrand - hip::hip_hcc hip::hip_device + hip::device ${TestU01_LIBRARIES} ) endif() diff --git a/test/linkage/CMakeLists.txt b/test/linkage/CMakeLists.txt index 9c5cfa099..d5a969153 100644 --- a/test/linkage/CMakeLists.txt +++ b/test/linkage/CMakeLists.txt @@ -45,7 +45,7 @@ function(add_rocrand_link_test TEST_SOURCES) if(TARGET hip::device) target_link_libraries(${TEST_TARGET} hip::device) else() - target_link_libraries(${TEST_TARGET} hip::hip_hcc hip::hip_device) + target_link_libraries(${TEST_TARGET} hip::device ) endif() foreach(amdgpu_target ${AMDGPU_TARGETS}) target_link_libraries(${TEST_TARGET} --amdgpu-target=${amdgpu_target}) @@ -101,7 +101,7 @@ function(add_hiprand_link_test TEST_SOURCES) if(TARGET hip::device) target_link_libraries(${TEST_TARGET} hip::device) else() - target_link_libraries(${TEST_TARGET} hip::hip_hcc hip::hip_device) + target_link_libraries(${TEST_TARGET} hip::device ) endif() foreach(amdgpu_target ${AMDGPU_TARGETS}) target_link_libraries(${TEST_TARGET} --amdgpu-target=${amdgpu_target}) From fdd195adc8e468e5a3f9434c8764d5f2f7860477 Mon Sep 17 00:00:00 2001 From: saadrahim <44449863+saadrahim@users.noreply.github.com> Date: Thu, 5 Mar 2020 13:44:08 -0700 Subject: [PATCH 2/2] Adding symlinks for lib. and lib. (#110) * Updates to the RUNPATH of the lib * Adding symlinks for lib. and lib. -> Symlink to lib. and lib. --- cmake/Common.cmake | 18 +++++++++++++++++- library/CMakeLists.txt | 1 + 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/cmake/Common.cmake b/cmake/Common.cmake index 9c7115900..3e94f6e6e 100644 --- a/cmake/Common.cmake +++ b/cmake/Common.cmake @@ -1,7 +1,7 @@ # set(ROCM_DISABLE_LDCONFIG OFF CACHE BOOL "") -function(package_set_postinst_prerm LIB_NAMES LIB_DIRS INCLUDE_DIRS) +function(package_set_postinst_prerm LIB_NAMES LIB_DIRS INCLUDE_DIRS SOVERSIONS) list(LENGTH LIB_NAMES len1) list(LENGTH LIB_DIRS len2) if(NOT (len1 EQUAL len2)) @@ -13,10 +13,18 @@ function(package_set_postinst_prerm LIB_NAMES LIB_DIRS INCLUDE_DIRS) set(PREINST_SOURCE "") set(PRERM_SOURCE "") set(PRERM_RPM_SOURCE "") + foreach(val RANGE ${len3}) list(GET LIB_NAMES ${val} lib_name) list(GET LIB_DIRS ${val} lib_dir) list(GET INCLUDE_DIRS ${val} inc_dir) + list(GET SOVERSIONS ${val} so_ver) + + rocm_version_regex_parse("^([0-9]+).*" LIB_VERSION_MAJOR "${so_ver}") + set (LIB_VERSION_STRING "${so_ver}.0") + if(DEFINED ENV{ROCM_LIBPATCH_VERSION}) + set (LIB_VERSION_STRING "${so_ver}.$ENV{ROCM_LIBPATCH_VERSION}") + endif() set(POSTINST_SOURCE "${POSTINST_SOURCE}\nmkdir -p ${inc_dir}/../../include/") set(POSTINST_SOURCE "${POSTINST_SOURCE}\nmkdir -p ${lib_dir}/../../lib/cmake/${lib_name}") @@ -25,6 +33,8 @@ function(package_set_postinst_prerm LIB_NAMES LIB_DIRS INCLUDE_DIRS) endif() set(POSTINST_SOURCE "${POSTINST_SOURCE}\nln -sr ${inc_dir} ${inc_dir}/../../include/${lib_name}") set(POSTINST_SOURCE "${POSTINST_SOURCE}\nln -sr ${lib_dir}/lib${lib_name}.so ${lib_dir}/../../lib/lib${lib_name}.so") + set(POSTINST_SOURCE "${POSTINST_SOURCE}\nln -sr ${lib_dir}/lib${lib_name}.so.${LIB_VERSION_MAJOR} ${lib_dir}/../../lib/lib${lib_name}.so.${LIB_VERSION_MAJOR}") + set(POSTINST_SOURCE "${POSTINST_SOURCE}\nln -sr ${lib_dir}/lib${lib_name}.so.${LIB_VERSION_STRING} ${lib_dir}/../../lib/lib${lib_name}.so.${LIB_VERSION_STRING}") set(POSTINST_SOURCE "${POSTINST_SOURCE}\nln -sr ${lib_dir}/cmake/${lib_name} ${lib_dir}/../../lib/cmake/${lib_name}\n") #For preinstall script, first argument is 1 for install and 2 for upgrade #Skip removal of symlinks if install command is called @@ -32,6 +42,8 @@ function(package_set_postinst_prerm LIB_NAMES LIB_DIRS INCLUDE_DIRS) set(PREINST_SOURCE "${PREINST_SOURCE}\n\trm -f /etc/ld.so.conf.d/${lib_name}.conf") set(PREINST_SOURCE "${PREINST_SOURCE}\n\tunlink ${inc_dir}/../../include/${lib_name}") set(PREINST_SOURCE "${PREINST_SOURCE}\n\tunlink ${lib_dir}/../../lib/lib${lib_name}.so") + set(PREINST_SOURCE "${PREINST_SOURCE}\n\tunlink ${lib_dir}/../../lib/lib${lib_name}.so.${LIB_VERSION_MAJOR}") + set(PREINST_SOURCE "${PREINST_SOURCE}\n\tunlink ${lib_dir}/../../lib/lib${lib_name}.so.${LIB_VERSION_STRING}") set(PREINST_SOURCE "${PREINST_SOURCE}\n\tunlink ${lib_dir}/../../lib/cmake/${lib_name}/${lib_name}") set(PREINST_SOURCE "${PREINST_SOURCE}\n\trm -f ${lib_dir}/lib${lib_name}.so*") set(PREINST_SOURCE "${PREINST_SOURCE}\n\trm -d ${lib_dir}/../../lib/cmake/${lib_name}\n") @@ -40,6 +52,8 @@ function(package_set_postinst_prerm LIB_NAMES LIB_DIRS INCLUDE_DIRS) set(PRERM_SOURCE "${PRERM_SOURCE}\nrm -f /etc/ld.so.conf.d/${lib_name}.conf") set(PRERM_SOURCE "${PRERM_SOURCE}\nunlink ${inc_dir}/../../include/${lib_name}") set(PRERM_SOURCE "${PRERM_SOURCE}\nunlink ${lib_dir}/../../lib/lib${lib_name}.so") + set(PRERM_SOURCE "${PRERM_SOURCE}\nunlink ${lib_dir}/../../lib/lib${lib_name}.so.${LIB_VERSION_MAJOR}") + set(PRERM_SOURCE "${PRERM_SOURCE}\nunlink ${lib_dir}/../../lib/lib${lib_name}.so.${LIB_VERSION_STRING}") set(PRERM_SOURCE "${PRERM_SOURCE}\nunlink ${lib_dir}/../../lib/cmake/${lib_name}/${lib_name}") set(PRERM_SOURCE "${PRERM_SOURCE}\nrm -d ${lib_dir}/../../lib/cmake/${lib_name}\n") @@ -49,6 +63,8 @@ function(package_set_postinst_prerm LIB_NAMES LIB_DIRS INCLUDE_DIRS) set(PRERM_RPM_SOURCE "${PRERM_RPM_SOURCE}\n\trm -f /etc/ld.so.conf.d/${lib_name}.conf") set(PRERM_RPM_SOURCE "${PRERM_RPM_SOURCE}\n\tunlink ${inc_dir}/../../include/${lib_name}") set(PRERM_RPM_SOURCE "${PRERM_RPM_SOURCE}\n\tunlink ${lib_dir}/../../lib/lib${lib_name}.so") + set(PRERM_RPM_SOURCE "${PRERM_RPM_SOURCE}\n\tunlink ${lib_dir}/../../lib/lib${lib_name}.so.${LIB_VERSION_MAJOR}") + set(PRERM_RPM_SOURCE "${PRERM_RPM_SOURCE}\n\tunlink ${lib_dir}/../../lib/lib${lib_name}.so.${LIB_VERSION_STRING}") set(PRERM_RPM_SOURCE "${PRERM_RPM_SOURCE}\n\tunlink ${lib_dir}/../../lib/cmake/${lib_name}/${lib_name}") set(PRERM_RPM_SOURCE "${PRERM_RPM_SOURCE}\n\trm -d ${lib_dir}/../../lib/cmake/${lib_name}\n") set(PRERM_RPM_SOURCE "${PRERM_RPM_SOURCE}\nfi") diff --git a/library/CMakeLists.txt b/library/CMakeLists.txt index 504d532b5..9ecac7f5e 100644 --- a/library/CMakeLists.txt +++ b/library/CMakeLists.txt @@ -272,6 +272,7 @@ package_set_postinst_prerm( "hiprand;rocrand" "${CMAKE_INSTALL_PREFIX}/hiprand/lib;${CMAKE_INSTALL_PREFIX}/rocrand/lib" "${CMAKE_INSTALL_PREFIX}/hiprand/include;${CMAKE_INSTALL_PREFIX}/rocrand/include" + "${hiprand_SOVERSION};${rocrand_SOVERSION}" ) # Include CPack to introduce the appropriate targets