From bf4df229c9a23594b8d67844862efddca0b52bd0 Mon Sep 17 00:00:00 2001 From: Jeremy Newton Date: Mon, 9 May 2022 13:41:00 -0400 Subject: [PATCH] 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 Change-Id: Iae80f47c47ea0a74fc1c221b6eea82b557601394 --- hipamd/CMakeLists.txt | 31 ++++++++++++++++++------------- hipamd/src/CMakeLists.txt | 6 +++--- 2 files changed, 21 insertions(+), 16 deletions(-) diff --git a/hipamd/CMakeLists.txt b/hipamd/CMakeLists.txt index e408fc53db..9a4edcf298 100755 --- a/hipamd/CMakeLists.txt +++ b/hipamd/CMakeLists.txt @@ -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) diff --git a/hipamd/src/CMakeLists.txt b/hipamd/src/CMakeLists.txt index f81296d340..f2e79153ed 100644 --- a/hipamd/src/CMakeLists.txt +++ b/hipamd/src/CMakeLists.txt @@ -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::)