From 4e4d1b98f3978577d40abe476665c97af9beccea Mon Sep 17 00:00:00 2001 From: Freddy Paul Date: Mon, 6 Apr 2020 21:35:43 -0700 Subject: [PATCH] hip-on-vdi: Enable RUNPATH and versioning 1. Enable versioning for HIP libraries 2. Enable RUNPATH on HIP libraries to find ROCm dependencies 3. Control HIP package install using CPACK_INSTALL_PREFIX Change-Id: I9096da56592e9c78cdba329011f6e1bae99adaa2 [ROCm/clr commit: 2a271dc418380f72d4b1d8b3d69115229a22e21a] --- projects/clr/hipamd/CMakeLists.txt | 29 ++++++++++++----------- projects/clr/hipamd/packaging/hip-vdi.txt | 4 +++- projects/clr/hipamd/vdi/CMakeLists.txt | 7 +++++- 3 files changed, 24 insertions(+), 16 deletions(-) diff --git a/projects/clr/hipamd/CMakeLists.txt b/projects/clr/hipamd/CMakeLists.txt index 19f22fa650..b8e2c6947b 100644 --- a/projects/clr/hipamd/CMakeLists.txt +++ b/projects/clr/hipamd/CMakeLists.txt @@ -61,6 +61,21 @@ add_to_config(_versionInfo HIP_VERSION_MAJOR) add_to_config(_versionInfo HIP_VERSION_MINOR) add_to_config(_versionInfo HIP_VERSION_PATCH) +set (HIP_LIB_VERSION_MAJOR ${HIP_VERSION_MAJOR}) +set (HIP_LIB_VERSION_MINOR ${HIP_VERSION_MINOR}) +if (${ROCM_PATCH_VERSION} ) + set (HIP_LIB_VERSION_PATCH ${ROCM_PATCH_VERSION}) +else () + set (HIP_LIB_VERSION_PATCH ${HIP_VERSION_PATCH}) +endif () +set (HIP_LIB_VERSION_STRING "${HIP_LIB_VERSION_MAJOR}.${HIP_LIB_VERSION_MINOR}.${HIP_LIB_VERSION_PATCH}") + +if (DEFINED ENV{ROCM_RPATH}) + set (CMAKE_INSTALL_RPATH "$ENV{ROCM_RPATH}") + set (CMAKE_BUILD_WITH_INSTALL_RPATH TRUE) + set (CMAKE_SKIP_BUILD_RPATH TRUE) +endif () + if(CMAKE_CXX_COMPILER MATCHES ".*hcc") set(HIP_COMPILER "hcc" CACHE STRING "HIP Compiler") set(HIP_PLATFORM "hcc" CACHE STRING "HIP Platform") @@ -333,20 +348,6 @@ if(HIP_PLATFORM STREQUAL "hcc") src/env.cpp src/h2f.cpp) - set ( HIP_LIB_VERSION_MAJOR ${HIP_VERSION_MAJOR} ) - set ( HIP_LIB_VERSION_MINOR ${HIP_VERSION_MINOR} ) - if ( ${ROCM_PATCH_VERSION} ) - set ( HIP_LIB_VERSION_PATCH ${ROCM_PATCH_VERSION}) - else () - set ( HIP_LIB_VERSION_PATCH ${HIP_VERSION_PATCH} ) - endif () - set ( HIP_LIB_VERSION_STRING "${HIP_LIB_VERSION_MAJOR}.${HIP_LIB_VERSION_MINOR}.${HIP_LIB_VERSION_PATCH}" ) - - if ( DEFINED ENV{ROCM_RPATH} ) - set (CMAKE_INSTALL_RPATH "$ENV{ROCM_RPATH}" ) - set (CMAKE_BUILD_WITH_INSTALL_RPATH TRUE ) - set (CMAKE_SKIP_BUILD_RPATH TRUE ) - endif () add_library(hip_hcc SHARED ${SOURCE_FILES_RUNTIME}) add_library(hip_hcc_static STATIC ${SOURCE_FILES_RUNTIME}) diff --git a/projects/clr/hipamd/packaging/hip-vdi.txt b/projects/clr/hipamd/packaging/hip-vdi.txt index 2bbe4331d0..a1f33e9920 100644 --- a/projects/clr/hipamd/packaging/hip-vdi.txt +++ b/projects/clr/hipamd/packaging/hip-vdi.txt @@ -2,6 +2,8 @@ cmake_minimum_required(VERSION 2.8.3) project(hip_vdi) install(FILES @PROJECT_BINARY_DIR@/lib/libamdhip64.so DESTINATION lib) +install(FILES @PROJECT_BINARY_DIR@/lib/libamdhip64.so.@HIP_LIB_VERSION_MAJOR@ DESTINATION lib) +install(FILES @PROJECT_BINARY_DIR@/lib/libamdhip64.so.@HIP_LIB_VERSION_STRING@ DESTINATION lib) install(FILES @PROJECT_BINARY_DIR@/lib/libamdhip64_static.a DESTINATION lib) install(FILES @PROJECT_BINARY_DIR@/lib/libhip_hcc.so DESTINATION lib) install(FILES @PROJECT_BINARY_DIR@/lib/libhiprtc.so DESTINATION lib) @@ -13,7 +15,7 @@ install(FILES @PROJECT_BINARY_DIR@/hip-config.cmake @PROJECT_BINARY_DIR@/hip-con # Packaging steps ############################# set(CPACK_SET_DESTDIR TRUE) -set(CPACK_INSTALL_PREFIX "/opt/rocm/hip") +set(CPACK_INSTALL_PREFIX @CPACK_INSTALL_PREFIX@) ## cmake generated target files contains IMPORTED_LOCATION_RELEASE etc. which ## is installation path when building the project, which may be different from diff --git a/projects/clr/hipamd/vdi/CMakeLists.txt b/projects/clr/hipamd/vdi/CMakeLists.txt index bfeff521d0..5460b2ba6b 100644 --- a/projects/clr/hipamd/vdi/CMakeLists.txt +++ b/projects/clr/hipamd/vdi/CMakeLists.txt @@ -1,7 +1,7 @@ #project("hip") cmake_minimum_required(VERSION 3.5.1) -set(CMAKE_SHARED_LINKER_FLAGS "-Wl,--no-keep-memory -Wl,-Bsymbolic -Wl,--unresolved-symbols=report-all -Wl,--version-script=${CMAKE_CURRENT_LIST_DIR}/hip_hcc.map.in") +set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--no-keep-memory -Wl,-Bsymbolic -Wl,--unresolved-symbols=report-all -Wl,--version-script=${CMAKE_CURRENT_LIST_DIR}/hip_hcc.map.in") if(CMAKE_CXX_FLAGS MATCHES "fsanitize=address") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -shared-libasan") @@ -156,6 +156,11 @@ add_library(amdhip64_static STATIC $ ) +set_target_properties( + amdhip64 PROPERTIES + VERSION ${HIP_LIB_VERSION_STRING} + SOVERSION ${HIP_LIB_VERSION_MAJOR} +) # We expect amdhip64_static to contain objects of vdi and hip. But linker # let amdhip64_static contain objects of hip only. So we will use a # a custom amdhip64_static_combiner to combine objects of vid and hip into