diff --git a/projects/clr/hipamd/CMakeLists.txt b/projects/clr/hipamd/CMakeLists.txt index 294f755906..9a1d940421 100644 --- a/projects/clr/hipamd/CMakeLists.txt +++ b/projects/clr/hipamd/CMakeLists.txt @@ -175,12 +175,27 @@ if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) message(FATAL_ERROR "Invalid CMAKE_BUILD_TYPE specified. Valid values are Debug and Release") endif() endif() + +# Set default install path as "/opt/rocm/hip", can override the path from cmake build. +set(CPACK_INSTALL_PREFIX ${HIP_DEFAULT_INSTALL_PREFIX} CACHE PATH "Package Installation path for HIP") + if(IS_ABSOLUTE ${CMAKE_INSTALL_PREFIX}) message(STATUS "HIP will be installed in: " ${CMAKE_INSTALL_PREFIX}) else() message(FATAL_ERROR "Don't know where to install HIP. Please specify absolute path using -DCMAKE_INSTALL_PREFIX") endif() +if (NOT DEFINED ROCM_PATH ) + set ( ROCM_PATH "/opt/rocm" CACHE STRING "Default ROCM installation directory." ) +endif () +message (STATUS "ROCM Installation path(ROCM_PATH): ${ROCM_PATH}") + +# set the installation path for the installer package +set(CPACK_SET_DESTDIR ON CACHE BOOL "Installer package will install hip to CMAKE_INSTALL_PREFIX instead of CPACK_PACKAGING_INSTALL_PREFIX") +if (NOT CPACK_SET_DESTDIR) + set(CPACK_PACKAGING_INSTALL_PREFIX "/opt/rocm/hip" CACHE PATH "Default installation path of hcc installer package") +endif (CPACK_SET_DESTDIR) + # Check if we need to enable ATP marker if(NOT DEFINED COMPILE_HIP_ATP_MARKER) if(NOT DEFINED ENV{COMPILE_HIP_ATP_MARKER}) @@ -260,7 +275,7 @@ if(HIP_PLATFORM STREQUAL "hcc") set(HIP_HCC_BUILD_FLAGS "${HIP_HCC_BUILD_FLAGS} -DHIP_VERSION_MAJOR=${HIP_VERSION_MAJOR} -DHIP_VERSION_MINOR=${HIP_VERSION_MINOR} -DHIP_VERSION_PATCH=${HIP_VERSION_GITDATE}") # Add remaining flags - set(HCC_CXX_FLAGS "-hc -fno-gpu-rdc --amdgpu-target=gfx803 --amdgpu-target=gfx900 --amdgpu-target=gfx906 --amdgpu-target=gfx908 ") + set(HCC_CXX_FLAGS "-Xlinker --enable-new-dtags -hc -fno-gpu-rdc --amdgpu-target=gfx803 --amdgpu-target=gfx900 --amdgpu-target=gfx906 --amdgpu-target=gfx908 ") set(HIP_HCC_BUILD_FLAGS "${HIP_HCC_BUILD_FLAGS} -fPIC ${HCC_CXX_FLAGS} -I${HSA_PATH}/include") # Set compiler and compiler flags @@ -291,16 +306,38 @@ 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 () if(COMPILE_HIP_ATP_MARKER) set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -L/opt/rocm/profiler/CXLActivityLogger/bin/x86_64 -lCXLActivityLogger") endif() add_library(hip_hcc SHARED ${SOURCE_FILES_RUNTIME}) add_library(hip_hcc_static STATIC ${SOURCE_FILES_RUNTIME}) + + ## Set the VERSION and SOVERSION values + set_property ( TARGET hip_hcc PROPERTY VERSION "${HIP_LIB_VERSION_STRING}" ) + set_property ( TARGET hip_hcc PROPERTY SOVERSION "${HIP_LIB_VERSION_MAJOR}" ) + if(HIP_COMPILER STREQUAL "hcc") target_link_libraries(hip_hcc PRIVATE hc_am) target_link_libraries(hip_hcc_static PRIVATE hc_am) add_library(hiprtc SHARED src/hiprtc.cpp src/code_object_bundle.cpp) + set_property ( TARGET hiprtc PROPERTY VERSION "${HIP_LIB_VERSION_STRING}" ) + set_property ( TARGET hiprtc PROPERTY SOVERSION "${HIP_LIB_VERSION_MAJOR}" ) + target_include_directories( hiprtc SYSTEM PRIVATE ${PROJECT_SOURCE_DIR}/include ${HSA_PATH}/include) @@ -468,6 +505,8 @@ add_custom_target(pkg_hip_hcc COMMAND ${CMAKE_COMMAND} . # Package: hip_nvcc set(BUILD_DIR ${CMAKE_CURRENT_BINARY_DIR}/packages/hip_nvcc) configure_file(packaging/hip-nvcc.txt ${BUILD_DIR}/CMakeLists.txt @ONLY) +configure_file(packaging/hip-nvcc.postinst ${BUILD_DIR}/postinst @ONLY) +configure_file(packaging/hip-nvcc.prerm ${BUILD_DIR}/prerm @ONLY) add_custom_target(pkg_hip_nvcc COMMAND ${CMAKE_COMMAND} . COMMAND rm -rf *.deb *.rpm *.tar.gz COMMAND make package diff --git a/projects/clr/hipamd/bin/hipcc b/projects/clr/hipamd/bin/hipcc index 387d18ce94..4f954537a1 100755 --- a/projects/clr/hipamd/bin/hipcc +++ b/projects/clr/hipamd/bin/hipcc @@ -882,7 +882,7 @@ if ($needHipHcc) { if ($linkType eq 0) { substr($HIPLDFLAGS,0,0) = " $HIP_LIB_PATH/libhip_hcc_static.a " ; } else { - substr($HIPLDFLAGS,0,0) = " -Wl,--rpath=$HIP_LIB_PATH $HIP_LIB_PATH/libhip_hcc.so "; + substr($HIPLDFLAGS,0,0) = " -Wl,--enable-new-dtags -Wl,--rpath=$HIP_LIB_PATH:$ROCM_PATH/lib $HIP_LIB_PATH/libhip_hcc.so "; } } diff --git a/projects/clr/hipamd/cmake/FindHIP.cmake b/projects/clr/hipamd/cmake/FindHIP.cmake index d2377e9adb..7edf27f3c7 100644 --- a/projects/clr/hipamd/cmake/FindHIP.cmake +++ b/projects/clr/hipamd/cmake/FindHIP.cmake @@ -47,6 +47,9 @@ set(CMAKE_HIP_LINK_EXECUTABLE "${HIP_HIPCC_CMAKE_LINKER_HELPER} ${HCC_PATH} -o ") add_executable(${hip_target} ${_cmake_options} ${_generated_files} ${_sources}) diff --git a/projects/clr/hipamd/hipify-clang/CMakeLists.txt b/projects/clr/hipamd/hipify-clang/CMakeLists.txt index 56b43e0adf..3394b98dce 100644 --- a/projects/clr/hipamd/hipify-clang/CMakeLists.txt +++ b/projects/clr/hipamd/hipify-clang/CMakeLists.txt @@ -118,6 +118,28 @@ install( PATTERN "openmp_wrappers" EXCLUDE ) +# Package: hipify-clang +if (UNIX) + set(BUILD_DIR ${CMAKE_CURRENT_BINARY_DIR}/packages/hipify-clang) + configure_file(packaging/hipify-clang.txt ${BUILD_DIR}/CMakeLists.txt @ONLY) + add_custom_target(pkg_hipify-clang COMMAND ${CMAKE_COMMAND} . + COMMAND rm -rf *.deb *.rpm *.tar.gz + COMMAND make package + COMMAND cp *.deb ${PROJECT_BINARY_DIR} + COMMAND cp *.rpm ${PROJECT_BINARY_DIR} + COMMAND cp *.tar.gz ${PROJECT_BINARY_DIR} + WORKING_DIRECTORY ${BUILD_DIR}) + + file(GENERATE OUTPUT ${PROJECT_BINARY_DIR}/fixnames + CONTENT "pwd; for i in *.deb; do mv \"\$i\" \"\${i/.deb/-amd64.deb}\" ; done + for i in *.rpm ; do mv \$i \${i/.rpm/.x86_64.rpm} ; done + ") + add_custom_target(package_hipify-clang + COMMAND bash ${PROJECT_BINARY_DIR}/fixnames + WORKING_DIRECTORY ${PROJECT_BINARY_DIR} + DEPENDS pkg_hipify-clang) +endif() + if (HIPIFY_CLANG_TESTS) find_package(PythonInterp 2.7 REQUIRED) diff --git a/projects/clr/hipamd/hipify-clang/packaging/hipify-clang.txt b/projects/clr/hipamd/hipify-clang/packaging/hipify-clang.txt new file mode 100644 index 0000000000..5f78e7e67e --- /dev/null +++ b/projects/clr/hipamd/hipify-clang/packaging/hipify-clang.txt @@ -0,0 +1,58 @@ +cmake_minimum_required(VERSION 2.8.3) +project(hipify-clang) + +install(PROGRAMS @HIPIFY_INSTALL_PATH@/hipify-clang DESTINATION bin) +install(DIRECTORY @HIPIFY_INSTALL_PATH@/include DESTINATION bin) + +# Check if .hipversion exists(only exists when hipify-clang is built with HIP) +if(EXISTS "@HIPIFY_INSTALL_PATH@/.hipVersion") + set(HIP_BUILD "TRUE") +else() + set(HIP_BUILD "FALSE") +endif() + +if(${HIP_BUILD}) + file(STRINGS @HIPIFY_INSTALL_PATH@/.hipVersion HipVersion) + foreach(NameAndValue ${HipVersion}) + # Get variable name + string(REGEX MATCH "^[^=]+" Name ${NameAndValue}) + # Get the value + string(REPLACE "${Name}=" "" Value ${NameAndValue}) + # Assign the vale to the variable + set(${Name} "${Value}") + endforeach() +endif() + +############################# +# Packaging steps +############################# +set(CPACK_SET_DESTDIR TRUE) +set(CPACK_INSTALL_PREFIX "/opt/rocm/hip") +set(CPACK_PACKAGE_NAME "hipify-clang") +set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "hipify-clang: a clang-based tool to translate CUDA source code into portable HIP C++ automatically") +set(CPACK_PACKAGE_VENDOR "Advanced Micro Devices, Inc.") +set(CPACK_PACKAGE_CONTACT "Mankov Evgeny ") + +if(${HIP_BUILD}) + set(CPACK_PACKAGE_VERSION ${HIP_VERSION_MAJOR}.${HIP_VERSION_MINOR}.${HIP_VERSION_PATCH}) + set(CPACK_PACKAGE_VERSION_MAJOR ${HIP_VERSION_MAJOR}) + set(CPACK_PACKAGE_VERSION_MINOR ${HIP_VERSION_MINOR}) + set(CPACK_PACKAGE_VERSION_PATCH ${HIP_VERSION_PATCH}) +else() + set(CPACK_PACKAGE_VERSION @LLVM_VERSION_MAJOR@.@LLVM_VERSION_MINOR@.@LLVM_VERSION_PATCH@) + set(CPACK_PACKAGE_VERSION_MAJOR @LLVM_VERSION_MAJOR@) + set(CPACK_PACKAGE_VERSION_MINOR @LLVM_VERSION_MINOR@) + set(CPACK_PACKAGE_VERSION_PATCH @LLVM_VERSION_PATCH@) +endif() + +set(CPACK_PACKAGE_FILE_NAME ${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}) +set(CPACK_GENERATOR "TGZ;DEB;RPM") +set(CPACK_BINARY_DEB "ON") +set(CPACK_DEBIAN_PACKAGE_DEPENDS "cuda >= 7.0") +set(CPACK_BINARY_RPM "ON") +set(CPACK_RPM_PACKAGE_ARCHITECTURE "${CMAKE_SYSTEM_PROCESSOR}") +set(CPACK_RPM_PACKAGE_AUTOREQPROV "NO") +set(CPACK_RPM_PACKAGE_REQUIRES "cuda >= 7.0") +set(CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST_ADDITION "/opt") +set(CPACK_SOURCE_GENERATOR "TGZ") +include(CPack) diff --git a/projects/clr/hipamd/packaging/hip-base.postinst b/projects/clr/hipamd/packaging/hip-base.postinst index a8b3eed9fc..2fff152f7a 100755 --- a/projects/clr/hipamd/packaging/hip-base.postinst +++ b/projects/clr/hipamd/packaging/hip-base.postinst @@ -6,8 +6,7 @@ pushd () { popd () { command popd "$@" > /dev/null } - -ROCMDIR=/opt/rocm +ROCMDIR=@ROCM_PATH@ HIPDIR=$ROCMDIR/hip # Soft-link to bin files diff --git a/projects/clr/hipamd/packaging/hip-base.prerm b/projects/clr/hipamd/packaging/hip-base.prerm index 837008f3e8..51b01e7270 100755 --- a/projects/clr/hipamd/packaging/hip-base.prerm +++ b/projects/clr/hipamd/packaging/hip-base.prerm @@ -8,7 +8,7 @@ popd () { command popd "$@" > /dev/null } -ROCMDIR=/opt/rocm +ROCMDIR=@ROCM_PATH@ HIPDIR=$ROCMDIR/hip ([ ! -d $ROCMDIR ] || [ ! -d $HIPDIR ]) && exit 0 diff --git a/projects/clr/hipamd/packaging/hip-base.txt b/projects/clr/hipamd/packaging/hip-base.txt index 927812f910..221ff98608 100644 --- a/projects/clr/hipamd/packaging/hip-base.txt +++ b/projects/clr/hipamd/packaging/hip-base.txt @@ -2,9 +2,6 @@ cmake_minimum_required(VERSION 2.8.3) project(hip_base) install(DIRECTORY @hip_SOURCE_DIR@/bin DESTINATION . USE_SOURCE_PERMISSIONS) -if(@BUILD_HIPIFY_CLANG@) - install(PROGRAMS @PROJECT_BINARY_DIR@/hipify-clang/hipify-clang DESTINATION bin) -endif() install(DIRECTORY @hip_SOURCE_DIR@/include DESTINATION .) install(FILES @PROJECT_BINARY_DIR@/.hipVersion DESTINATION bin) install(PROGRAMS @PROJECT_BINARY_DIR@/lpl DESTINATION bin) @@ -15,7 +12,7 @@ install(DIRECTORY @hip_SOURCE_DIR@/cmake DESTINATION .) # Packaging steps ############################# set(CPACK_SET_DESTDIR TRUE) -set(CPACK_INSTALL_PREFIX "/opt/rocm/hip") +set(CPACK_INSTALL_PREFIX @CPACK_INSTALL_PREFIX@ ) set(CPACK_PACKAGE_NAME "hip-base") set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "HIP: Heterogenous-computing Interface for Portability [BASE]") set(CPACK_PACKAGE_VENDOR "Advanced Micro Devices, Inc.") diff --git a/projects/clr/hipamd/packaging/hip-doc.txt b/projects/clr/hipamd/packaging/hip-doc.txt index 9d39822340..d97ddc7d3a 100644 --- a/projects/clr/hipamd/packaging/hip-doc.txt +++ b/projects/clr/hipamd/packaging/hip-doc.txt @@ -19,7 +19,7 @@ endif() # Packaging steps ############################# set(CPACK_SET_DESTDIR TRUE) -set(CPACK_INSTALL_PREFIX "/opt/rocm/hip") +set(CPACK_INSTALL_PREFIX @CPACK_INSTALL_PREFIX@ ) set(CPACK_PACKAGE_NAME "hip-doc") set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "HIP: Heterogenous-computing Interface for Portability [DOCUMENTATION]") set(CPACK_PACKAGE_VENDOR "Advanced Micro Devices, Inc.") diff --git a/projects/clr/hipamd/packaging/hip-hcc.postinst b/projects/clr/hipamd/packaging/hip-hcc.postinst index 1cf21dd755..2371b53e17 100755 --- a/projects/clr/hipamd/packaging/hip-hcc.postinst +++ b/projects/clr/hipamd/packaging/hip-hcc.postinst @@ -7,7 +7,8 @@ popd () { command popd "$@" > /dev/null } -ROCMDIR=/opt/rocm + +ROCMDIR=@ROCM_PATH@ ROCMLIBDIR=$ROCMDIR/lib HIPDIR=$ROCMDIR/hip HIPLIBDIR=$ROCMDIR/hip/lib @@ -26,4 +27,3 @@ pushd cmake ln -s -r -f $HIPLIBDIR/cmake/hip hip popd popd - diff --git a/projects/clr/hipamd/packaging/hip-hcc.prerm b/projects/clr/hipamd/packaging/hip-hcc.prerm index aab670eb4f..bf2be36523 100755 --- a/projects/clr/hipamd/packaging/hip-hcc.prerm +++ b/projects/clr/hipamd/packaging/hip-hcc.prerm @@ -8,7 +8,7 @@ popd () { command popd "$@" > /dev/null } -ROCMDIR=/opt/rocm +ROCMDIR=@ROCM_PATH@ ROCMLIBDIR=$ROCMDIR/lib HIPDIR=$ROCMDIR/hip HIPLIBDIR=$ROCMDIR/hip/lib diff --git a/projects/clr/hipamd/packaging/hip-hcc.txt b/projects/clr/hipamd/packaging/hip-hcc.txt index 919f7dabf5..63f3d73e67 100644 --- a/projects/clr/hipamd/packaging/hip-hcc.txt +++ b/projects/clr/hipamd/packaging/hip-hcc.txt @@ -2,9 +2,13 @@ cmake_minimum_required(VERSION 2.8.3) project(hip_hcc) install(FILES @PROJECT_BINARY_DIR@/libhip_hcc.so DESTINATION lib) +install(FILES @PROJECT_BINARY_DIR@/libhip_hcc.so.@HIP_LIB_VERSION_MAJOR@ DESTINATION lib) +install(FILES @PROJECT_BINARY_DIR@/libhip_hcc.so.@HIP_LIB_VERSION_STRING@ DESTINATION lib) install(FILES @PROJECT_BINARY_DIR@/libhip_hcc_static.a DESTINATION lib) if(NOT @HIP_COMPILER@ STREQUAL "clang") install(FILES @PROJECT_BINARY_DIR@/libhiprtc.so DESTINATION lib) + install(FILES @PROJECT_BINARY_DIR@/libhiprtc.so.@HIP_LIB_VERSION_MAJOR@ DESTINATION lib) + install(FILES @PROJECT_BINARY_DIR@/libhiprtc.so.@HIP_LIB_VERSION_STRING@ DESTINATION lib) endif() install(FILES @PROJECT_BINARY_DIR@/.hipInfo DESTINATION lib) install(FILES @PROJECT_BINARY_DIR@/hip-config.cmake @PROJECT_BINARY_DIR@/hip-config-version.cmake DESTINATION lib/cmake/hip) @@ -14,7 +18,7 @@ install(FILES @hip_SOURCE_DIR@/packaging/hip-targets.cmake @hip_SOURCE_DIR@/pack # Packaging steps ############################# set(CPACK_SET_DESTDIR TRUE) -set(CPACK_INSTALL_PREFIX "/opt/rocm/hip") +set(CPACK_INSTALL_PREFIX @CPACK_INSTALL_PREFIX@ ) set(CPACK_PACKAGE_NAME "hip-hcc") if(@HCC_VERSION_MAJOR@ EQUAL 0) set(HCC_PACKAGE_NAME "hcc_lc") diff --git a/projects/clr/hipamd/packaging/hip-nvcc.postinst b/projects/clr/hipamd/packaging/hip-nvcc.postinst new file mode 100755 index 0000000000..2f901324cb --- /dev/null +++ b/projects/clr/hipamd/packaging/hip-nvcc.postinst @@ -0,0 +1,8 @@ +#!/bin/bash + +ROCMDIR=@ROCM_PATH@ +HIPDIR=$ROCMDIR/hip + +if [ -d $ROCMDIR] + ln -s -f $ROCMDIR /opt/rocm +fi diff --git a/projects/clr/hipamd/packaging/hip-nvcc.prerm b/projects/clr/hipamd/packaging/hip-nvcc.prerm new file mode 100755 index 0000000000..96875e4a9c --- /dev/null +++ b/projects/clr/hipamd/packaging/hip-nvcc.prerm @@ -0,0 +1,5 @@ +#!/bin/bash + +if [ -L "/opt/rocm" ] + unlink /opt/rocm +fi diff --git a/projects/clr/hipamd/packaging/hip-nvcc.txt b/projects/clr/hipamd/packaging/hip-nvcc.txt index 010d770458..dc36b628c7 100644 --- a/projects/clr/hipamd/packaging/hip-nvcc.txt +++ b/projects/clr/hipamd/packaging/hip-nvcc.txt @@ -5,7 +5,7 @@ project(hip_nvcc) # Packaging steps ############################# set(CPACK_SET_DESTDIR TRUE) -set(CPACK_INSTALL_PREFIX "/opt/rocm/hip") +set(CPACK_INSTALL_PREFIX @CPACK_INSTALL_PREFIX@ ) set(CPACK_PACKAGE_NAME "hip-nvcc") set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "HIP: Heterogenous-computing Interface for Portability [NVCC]") set(CPACK_PACKAGE_VENDOR "Advanced Micro Devices, Inc.") @@ -17,15 +17,15 @@ set(CPACK_PACKAGE_VERSION_PATCH @HIP_VERSION_PATCH@) set(CPACK_PACKAGE_FILE_NAME ${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}) set(CPACK_GENERATOR "TGZ;DEB;RPM") set(CPACK_BINARY_DEB "ON") -#set(CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA "${PROJECT_BINARY_DIR}/postinst;${PROJECT_BINARY_DIR}/prerm") +set(CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA "${PROJECT_BINARY_DIR}/postinst;${PROJECT_BINARY_DIR}/prerm") set(CPACK_DEBIAN_PACKAGE_DEPENDS "hip-base (= ${CPACK_PACKAGE_VERSION}), cuda (>= 7.5)") set(CPACK_DEBIAN_PACKAGE_PROVIDES "hip_nvcc") set(CPACK_DEBIAN_PACKAGE_REPLACES "hip_nvcc") set(CPACK_DEBIAN_PACKAGE_CONFLICTS "hip_nvcc") set(CPACK_BINARY_RPM "ON") set(CPACK_RPM_PACKAGE_ARCHITECTURE "${CMAKE_SYSTEM_PROCESSOR}") -#set(CPACK_RPM_POST_INSTALL_SCRIPT_FILE "${PROJECT_BINARY_DIR}/postinst") -#set(CPACK_RPM_PRE_UNINSTALL_SCRIPT_FILE "${PROJECT_BINARY_DIR}/prerm") +set(CPACK_RPM_POST_INSTALL_SCRIPT_FILE "${PROJECT_BINARY_DIR}/postinst") +set(CPACK_RPM_PRE_UNINSTALL_SCRIPT_FILE "${PROJECT_BINARY_DIR}/prerm") set(CPACK_RPM_PACKAGE_AUTOREQPROV " no") string(REPLACE "-" "_" HIP_BASE_VERSION ${CPACK_PACKAGE_VERSION}) set(CPACK_RPM_PACKAGE_REQUIRES "hip-base = ${HIP_BASE_VERSION}, cuda >= 7.5") diff --git a/projects/clr/hipamd/packaging/hip-samples.txt b/projects/clr/hipamd/packaging/hip-samples.txt index 497ffe6ffc..aa8ff42821 100644 --- a/projects/clr/hipamd/packaging/hip-samples.txt +++ b/projects/clr/hipamd/packaging/hip-samples.txt @@ -7,7 +7,7 @@ install(DIRECTORY @hip_SOURCE_DIR@/samples DESTINATION .) # Packaging steps ############################# set(CPACK_SET_DESTDIR TRUE) -set(CPACK_INSTALL_PREFIX "/opt/rocm/hip") +set(CPACK_INSTALL_PREFIX @CPACK_INSTALL_PREFIX@ ) set(CPACK_PACKAGE_NAME "hip-samples") set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "HIP: Heterogenous-computing Interface for Portability [SAMPLES]") set(CPACK_PACKAGE_VENDOR "Advanced Micro Devices, Inc.") diff --git a/projects/clr/hipamd/packaging/hip-targets-release.cmake b/projects/clr/hipamd/packaging/hip-targets-release.cmake index 83c207810c..735f56ef26 100644 --- a/projects/clr/hipamd/packaging/hip-targets-release.cmake +++ b/projects/clr/hipamd/packaging/hip-targets-release.cmake @@ -5,41 +5,46 @@ # Commands may need to know the format version. set(CMAKE_IMPORT_FILE_VERSION 1) +#get_filename_component cannot resolve the symlinks if called from /opt/rocm/lib/hip +#and do three level up again +get_filename_component(_DIR "${CMAKE_CURRENT_LIST_DIR}" REALPATH) +get_filename_component(_IMPORT_PREFIX "${_DIR}/../../../" REALPATH) + # Import target "hip::hip_hcc_static" for configuration "Release" set_property(TARGET hip::hip_hcc_static APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE) if(HIP_COMPILER STREQUAL "clang") set_target_properties(hip::hip_hcc_static PROPERTIES IMPORTED_LINK_INTERFACE_LANGUAGES_RELEASE "CXX" - IMPORTED_LOCATION_RELEASE "/opt/rocm/hip/lib/libhip_hcc_static.a" + IMPORTED_LOCATION_RELEASE "${_IMPORT_PREFIX}/lib/libhip_hcc_static.a" ) else() set_target_properties(hip::hip_hcc_static PROPERTIES IMPORTED_LINK_INTERFACE_LANGUAGES_RELEASE "CXX" IMPORTED_LINK_INTERFACE_LIBRARIES_RELEASE "hc_am" - IMPORTED_LOCATION_RELEASE "/opt/rocm/hip/lib/libhip_hcc_static.a" + IMPORTED_LOCATION_RELEASE "${_IMPORT_PREFIX}/lib/libhip_hcc_static.a" ) endif() list(APPEND _IMPORT_CHECK_TARGETS hip::hip_hcc_static ) -list(APPEND _IMPORT_CHECK_FILES_FOR_hip::hip_hcc_static "/opt/rocm/hip/lib/libhip_hcc_static.a" ) +list(APPEND _IMPORT_CHECK_FILES_FOR_hip::hip_hcc_static "${_IMPORT_PREFIX}/lib/libhip_hcc_static.a" ) # Import target "hip::hip_hcc" for configuration "Release" set_property(TARGET hip::hip_hcc APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE) if(HIP_COMPILER STREQUAL "clang") set_target_properties(hip::hip_hcc PROPERTIES - IMPORTED_LOCATION_RELEASE "/opt/rocm/hip/lib/libhip_hcc.so" + IMPORTED_LOCATION_RELEASE "${_IMPORT_PREFIX}/lib/libhip_hcc.so" IMPORTED_SONAME_RELEASE "libhip_hcc.so" ) else() set_target_properties(hip::hip_hcc PROPERTIES IMPORTED_LINK_INTERFACE_LIBRARIES_RELEASE "hcc::hccrt;hcc::hc_am" - IMPORTED_LOCATION_RELEASE "/opt/rocm/hip/lib/libhip_hcc.so" + IMPORTED_LOCATION_RELEASE "${_IMPORT_PREFIX}/lib/libhip_hcc.so" IMPORTED_SONAME_RELEASE "libhip_hcc.so" ) endif() list(APPEND _IMPORT_CHECK_TARGETS hip::hip_hcc ) -list(APPEND _IMPORT_CHECK_FILES_FOR_hip::hip_hcc "/opt/rocm/hip/lib/libhip_hcc.so" ) +list(APPEND _IMPORT_CHECK_FILES_FOR_hip::hip_hcc "${_IMPORT_PREFIX}/lib/libhip_hcc.so" ) # Commands beyond this point should not need to know the version. set(CMAKE_IMPORT_FILE_VERSION) diff --git a/projects/clr/hipamd/packaging/hip-targets.cmake b/projects/clr/hipamd/packaging/hip-targets.cmake index d7a6b4d588..955ad93b6c 100644 --- a/projects/clr/hipamd/packaging/hip-targets.cmake +++ b/projects/clr/hipamd/packaging/hip-targets.cmake @@ -37,24 +37,43 @@ unset(_targetsDefined) unset(_targetsNotDefined) unset(_expectedTargets) +#If HIP isnot installed under ROCm, need this to find HSA assuming HSA is under ROCm +if( DEFINED ENV{ROCM_PATH} ) + set(ROCM_PATH "$ENV{ROCM_PATH}") +endif() -# The installation prefix configured by this project. -set(_IMPORT_PREFIX "/opt/rocm/hip") +#get_filename_component cannot resolve the symlinks if called from /opt/rocm/lib/hip +#and do three level up again +get_filename_component(_DIR "${CMAKE_CURRENT_LIST_DIR}" REALPATH) +get_filename_component(_IMPORT_PREFIX "${_DIR}/../../../" REALPATH) # Create imported target hip::hip_hcc_static add_library(hip::hip_hcc_static STATIC IMPORTED) +#if HSA is not under ROCm then provide CMAKE_PREFIX_PATH= +find_path(HSA_HEADER hsa/hsa.h + PATHS + "${ROCM_PATH}/include" + #Assuming HIP is installed under ROCm + "${_IMPORT_PREFIX}/../include" + /opt/rocm/include +) + +if (HSA_HEADER-NOTFOUND) + message (FATAL_ERROR "HSA header not found! ROCM_PATH environment not set") +endif() + set_target_properties(hip::hip_hcc_static PROPERTIES - INTERFACE_INCLUDE_DIRECTORIES "${_IMPORT_PREFIX}/include;/opt/rocm/hsa/include" - INTERFACE_SYSTEM_INCLUDE_DIRECTORIES "${_IMPORT_PREFIX}/include;/opt/rocm/hsa/include" + INTERFACE_INCLUDE_DIRECTORIES "${_IMPORT_PREFIX}/include;${HSA_HEADER}" + INTERFACE_SYSTEM_INCLUDE_DIRECTORIES "${_IMPORT_PREFIX}/include;${HSA_HEADER}" ) # Create imported target hip::hip_hcc add_library(hip::hip_hcc SHARED IMPORTED) set_target_properties(hip::hip_hcc PROPERTIES - INTERFACE_INCLUDE_DIRECTORIES "${_IMPORT_PREFIX}/include;/opt/rocm/hsa/include" - INTERFACE_SYSTEM_INCLUDE_DIRECTORIES "${_IMPORT_PREFIX}/include;/opt/rocm/hsa/include" + INTERFACE_INCLUDE_DIRECTORIES "${_IMPORT_PREFIX}/include;${HSA_HEADER}" + INTERFACE_SYSTEM_INCLUDE_DIRECTORIES "${_IMPORT_PREFIX}/include;${HSA_HEADER}" ) # Create imported target hip::host @@ -70,10 +89,14 @@ add_library(hip::device INTERFACE IMPORTED) if(HIP_COMPILER STREQUAL "hcc") set_target_properties(hip::device PROPERTIES INTERFACE_LINK_LIBRARIES "hip::host;hcc::hccrt;hcc::hc_am" + INTERFACE_INCLUDE_DIRECTORIES "${_IMPORT_PREFIX}/../include" + INTERFACE_SYSTEM_INCLUDE_DIRECTORIES "${_IMPORT_PREFIX}/../include" ) else() set_target_properties(hip::device PROPERTIES INTERFACE_LINK_LIBRARIES "hip::host" + INTERFACE_INCLUDE_DIRECTORIES "${_IMPORT_PREFIX}/include" + INTERFACE_SYSTEM_INCLUDE_DIRECTORIES "${_IMPORT_PREFIX}/include" ) endif()