SWDEV-335990 - Use GNUInstallDirs

GNUInstallDirs is used to allow the user to customize the install paths
of HIP, rather than using hardcoded locations.

See documentation for more information:
https://cmake.org/cmake/help/latest/module/GNUInstallDirs.html

Note that libdir must be overriden to "lib" before including
GNUInstallDirs, because by default, cmake tries to detect the libdir
path, but ROCm packaging would like to use lib by default for all
targets. This does not stop the user (or distros) from overriding.

Also note this change does no take into account the changes needed to
non-cmake files, such as perl scripts, so not all paths combinations are
necessarily functional.

Signed-off-by: Jeremy Newton <Jeremy.Newton@amd.com>
Change-Id: Iae80f47c47ea0a74fc1c221b6eea82b557601394
This commit is contained in:
Jeremy Newton
2022-05-09 13:41:00 -04:00
rodzic e2874d5e22
commit bf4df229c9
2 zmienionych plików z 21 dodań i 16 usunięć
+18 -13
Wyświetl plik
@@ -20,6 +20,11 @@
cmake_minimum_required(VERSION 3.16.8)
project(hip)
# Set default libdir to be "lib" for ROCm, distros will override this anyway:
set(CMAKE_INSTALL_LIBDIR "lib" CACHE STRING "Library install directory")
include(GNUInstallDirs)
# sample command for hip-rocclr runtime, you'll need to have rocclr built
# ROCM_PATH is the path where ROCM is installed
# For shared lib of hip-rocclr runtime
@@ -39,7 +44,7 @@ list(APPEND CMAKE_MODULE_PATH ${HIP_COMMON_DIR}/cmake)
# required to add the right link to libhsa-runtime in install/lib path
# CMAKE_PREFIX_PATH is used as rpath to search for libs outside HIP
set(CMAKE_INSTALL_RPATH "${CMAKE_PREFIX_PATH}/lib")
set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_FULL_LIBDIR}")
set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
#############################
@@ -308,9 +313,9 @@ endif (NOT CPACK_SET_DESTDIR)
#############################
# Build steps
#############################
set(BIN_INSTALL_DIR ${CMAKE_INSTALL_PREFIX}/bin)
set(LIB_INSTALL_DIR ${CMAKE_INSTALL_PREFIX}/lib)
set(INCLUDE_INSTALL_DIR ${CMAKE_INSTALL_PREFIX}/include)
set(BIN_INSTALL_DIR ${CMAKE_INSTALL_FULL_BINDIR})
set(LIB_INSTALL_DIR ${CMAKE_INSTALL_FULL_LIBDIR})
set(INCLUDE_INSTALL_DIR ${CMAKE_INSTALL_FULL_INCLUDEDIR})
set(CONFIG_PACKAGE_INSTALL_DIR ${LIB_INSTALL_DIR}/cmake/hip)
set(CONFIG_LANG_PACKAGE_INSTALL_DIR ${LIB_INSTALL_DIR}/cmake/hip-lang)
@@ -358,10 +363,10 @@ endif()
#############################
# Install .hipInfo
install(FILES ${PROJECT_BINARY_DIR}/.hipInfo DESTINATION lib)
install(FILES ${PROJECT_BINARY_DIR}/.hipInfo DESTINATION ${CMAKE_INSTALL_LIBDIR})
# Install .hipVersion
install(FILES ${PROJECT_BINARY_DIR}/.hipVersion DESTINATION bin)
install(FILES ${PROJECT_BINARY_DIR}/.hipVersion DESTINATION ${CMAKE_INSTALL_BINDIR})
# Install src, bin, include & cmake if necessary
execute_process(COMMAND test ${CMAKE_INSTALL_PREFIX} -ef ${CMAKE_CURRENT_SOURCE_DIR}
@@ -370,7 +375,7 @@ if(NOT ${INSTALL_SOURCE} EQUAL 0)
if(WIN32)
install(DIRECTORY ${HIP_COMMON_BIN_DIR} DESTINATION . USE_SOURCE_PERMISSIONS)
if (CMAKE_BUILD_TYPE STREQUAL "Debug")
install(DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/src/" DESTINATION bin
install(DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/src/" DESTINATION ${CMAKE_INSTALL_BINDIR}
FILES_MATCHING PATTERN "*.pdb"
PATTERN "*.ilk"
PATTERN "CMakeFiles" EXCLUDE
@@ -390,12 +395,12 @@ if(NOT ${INSTALL_SOURCE} EQUAL 0)
if(WIN32) #not required for flat folder structure
# The following two lines will be removed after upstream updation
install(CODE "MESSAGE(\"Removing ${CMAKE_INSTALL_PREFIX}/include\")")
install(CODE "file(REMOVE_RECURSE ${CMAKE_INSTALL_PREFIX}/include)")
install(CODE "MESSAGE(\"Removing ${CMAKE_INSTALL_FULL_INCLUDEDIR}\")")
install(CODE "file(REMOVE_RECURSE ${CMAKE_INSTALL_FULL_INCLUDEDIR})")
endif()
install(DIRECTORY include DESTINATION .)
install(DIRECTORY ${HIP_COMMON_INCLUDE_DIR}/hip/ DESTINATION include/hip/)
install(DIRECTORY ${HIP_COMMON_INCLUDE_DIR}/hip/ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/hip/)
if(WIN32)
install(DIRECTORY ${HIP_COMMON_DIR}/cmake DESTINATION .)
else()
@@ -407,11 +412,11 @@ endif()
# FIXME: Associate with individual targets.
if(HIP_PLATFORM STREQUAL "amd")
install(FILES ${PROJECT_BINARY_DIR}/include/hip/amd_detail/hip_prof_str.h
DESTINATION include/hip/amd_detail)
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/hip/amd_detail)
install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/bin DESTINATION . USE_SOURCE_PERMISSIONS)
endif()
install(FILES ${PROJECT_BINARY_DIR}/include/hip/hip_version.h
DESTINATION include/hip)
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/hip)
if (NOT ${HIPCC_BIN_DIR} STREQUAL "")
file(TO_CMAKE_PATH "${HIPCC_BIN_DIR}" HIPCC_BIN_DIR)
@@ -502,7 +507,7 @@ endif()
# Target: clang
if(HIP_HIPCC_EXECUTABLE)
add_custom_target(analyze
COMMAND ${HIP_HIPCC_EXECUTABLE} -fvisibility=hidden -fvisibility-inlines-hidden --analyze --analyzer-outputtext -isystem ${ROCM_PATH}/include -Wno-unused-command-line-argument -I${ROCM_PATH}/include -c src/*.cpp -Iinclude/ -I./
COMMAND ${HIP_HIPCC_EXECUTABLE} -fvisibility=hidden -fvisibility-inlines-hidden --analyze --analyzer-outputtext -isystem ${ROCM_PATH}/${CMAKE_INSTALL_INCLUDEDIR} -Wno-unused-command-line-argument -I${ROCM_PATH}/${CMAKE_INSTALL_INCLUDEDIR} -c src/*.cpp -Iinclude/ -I./
WORKING_DIRECTORY ${HIP_SRC_PATH})
if(CPPCHECK_EXE)
add_dependencies(analyze cppcheck)
+3 -3
Wyświetl plik
@@ -201,7 +201,7 @@ if(NOT WIN32)
add_dependencies(amdhip64 hiprtc-builtins)
INSTALL(TARGETS hiprtc-builtins
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
LIBRARY DESTINATION lib
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
endif()
endif()
@@ -270,7 +270,7 @@ target_link_libraries(device INTERFACE host)
INSTALL(TARGETS amdhip64 host device
EXPORT hip-targets
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
LIBRARY DESTINATION lib
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
INSTALL(EXPORT hip-targets DESTINATION ${CONFIG_PACKAGE_INSTALL_DIR} NAMESPACE hip::)
@@ -278,7 +278,7 @@ INSTALL(EXPORT hip-targets DESTINATION ${CONFIG_PACKAGE_INSTALL_DIR} NAMESPACE h
INSTALL(TARGETS amdhip64 host device
EXPORT hip-lang-targets
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
LIBRARY DESTINATION lib
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
INSTALL(EXPORT hip-lang-targets DESTINATION ${CONFIG_LANG_PACKAGE_INSTALL_DIR} NAMESPACE hip-lang::)