From 6e388071ba7d4d6bb60775480293d1a90db708e9 Mon Sep 17 00:00:00 2001 From: Jeremy Newton Date: Mon, 31 Jan 2022 17:54:14 -0500 Subject: [PATCH] SWDEV-321118 - Use GNUInstallDirs Use GNUInstallDirs variables to determine the location of BINDIR, LIBDIR, DOCDIR, and SYSCONFDIR. Note that CMAKE_INSTALL_LIBDIR is overriden, since the default for RHEL is lib64, but ROCm packaging wants it to be lib always. Distros or users can easily override this. Signed-off-by: Jeremy Newton Change-Id: Ifb38263dce80d80c5ebb4eacd8e49c76bb013a44 [ROCm/clr commit: b8c124acb5144a0383a8364697d3090c4b7645b6] --- projects/clr/opencl/CMakeLists.txt | 3 +++ projects/clr/opencl/opencl-backward-compat.cmake | 8 ++++---- projects/clr/opencl/packaging/CMakeLists.txt | 10 +++++----- projects/clr/opencl/packaging/rocm-ocl-icd.postinst | 4 ++-- projects/clr/opencl/packaging/rocm-ocl-icd.prerm | 4 ++-- projects/clr/opencl/packaging/rocm-ocl-icd.rpm_post | 4 ++-- projects/clr/opencl/packaging/rocm-ocl-icd.rpm_postun | 4 ++-- 7 files changed, 20 insertions(+), 17 deletions(-) diff --git a/projects/clr/opencl/CMakeLists.txt b/projects/clr/opencl/CMakeLists.txt index 717f3ec3d5..bcde879e63 100644 --- a/projects/clr/opencl/CMakeLists.txt +++ b/projects/clr/opencl/CMakeLists.txt @@ -7,6 +7,9 @@ endif() project(opencl) +# 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) option(BUILD_TESTS "Enable building OpenCL tests" OFF) diff --git a/projects/clr/opencl/opencl-backward-compat.cmake b/projects/clr/opencl/opencl-backward-compat.cmake index 7ddd0f5755..7dd103f253 100644 --- a/projects/clr/opencl/opencl-backward-compat.cmake +++ b/projects/clr/opencl/opencl-backward-compat.cmake @@ -68,7 +68,7 @@ function(generate_wrapper_header) set(include_guard "${include_guard}OPENCL_WRAPPER_INCLUDE_${INC_GAURD_NAME}_H") #set #include statement get_filename_component(file_name ${header_file} NAME) - set(include_statements "${include_statements}#include \"../../../include/CL/${file_name}\"\n") + set(include_statements "${include_statements}#include \"../../../${CMAKE_INSTALL_INCLUDEDIR}/CL/${file_name}\"\n") configure_file(${OPENCL_WRAPPER_DIR}/header.hpp.in ${OPENCL_WRAPPER_INC_DIR}/${file_name}) unset(include_guard) unset(include_statements) @@ -83,7 +83,7 @@ function(create_binary_symlink) add_custom_target(link_${file_name} ALL WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} COMMAND ${CMAKE_COMMAND} -E create_symlink - ../../bin/${file_name} ${OPENCL_WRAPPER_BIN_DIR}/${file_name}) + ../../${CMAKE_INSTALL_BINDIR}/${file_name} ${OPENCL_WRAPPER_BIN_DIR}/${file_name}) endfunction() #function to create symlink to libraries @@ -98,7 +98,7 @@ function(create_library_symlink) add_custom_target(link_${file_name} ALL WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} COMMAND ${CMAKE_COMMAND} -E create_symlink - ../../lib/${file_name} ${OPENCL_WRAPPER_LIB_DIR}/${file_name}) + ../../${CMAKE_INSTALL_LIBDIR}/${file_name} ${OPENCL_WRAPPER_LIB_DIR}/${file_name}) endforeach() if(BUILD_SHARED_LIBS) set(LIB_AMDDOC "libamdocl64.so") @@ -109,7 +109,7 @@ function(create_library_symlink) add_custom_target(link_${file_name} ALL WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} COMMAND ${CMAKE_COMMAND} -E create_symlink - ../../lib/${file_name} ${OPENCL_WRAPPER_DIR}/${file_name}) + ../../${CMAKE_INSTALL_LIBDIR}/${file_name} ${OPENCL_WRAPPER_DIR}/${file_name}) endfunction() #Creater a template for header file diff --git a/projects/clr/opencl/packaging/CMakeLists.txt b/projects/clr/opencl/packaging/CMakeLists.txt index 48353eb0eb..d7f6a753e0 100644 --- a/projects/clr/opencl/packaging/CMakeLists.txt +++ b/projects/clr/opencl/packaging/CMakeLists.txt @@ -5,9 +5,9 @@ set(CPACK_COMPONENTS_ALL binary dev icd) set(CPACK_DEB_COMPONENT_INSTALL ON) set(CPACK_RPM_COMPONENT_INSTALL ON) -install(TARGETS clinfo DESTINATION bin COMPONENT binary) -install(TARGETS amdocl DESTINATION lib COMPONENT binary) -install(FILES ${CMAKE_SOURCE_DIR}/LICENSE.txt DESTINATION share/doc/${CMAKE_PROJECT_NAME} COMPONENT binary) +install(TARGETS clinfo DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT binary) +install(TARGETS amdocl DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT binary) +install(FILES ${CMAKE_SOURCE_DIR}/LICENSE.txt DESTINATION ${CMAKE_INSTALL_DOCDIR} COMPONENT binary) install(DIRECTORY ${CMAKE_SOURCE_DIR}/khronos/headers/opencl2.2/CL DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} COMPONENT dev @@ -17,8 +17,8 @@ install(DIRECTORY ${CMAKE_SOURCE_DIR}/khronos/headers/opencl2.2/CL PATTERN cl_dx9_media_sharing.h EXCLUDE PATTERN cl_egl.h EXCLUDE ) -install(TARGETS OpenCL DESTINATION lib COMPONENT icd ) -install(FILES ${CMAKE_SOURCE_DIR}/khronos/icd/LICENSE DESTINATION share/doc/rocm-ocl-icd COMPONENT icd) +install(TARGETS OpenCL DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT icd ) +install(FILES ${CMAKE_SOURCE_DIR}/khronos/icd/LICENSE DESTINATION ${CMAKE_INSTALL_DATADIR}/doc/rocm-ocl-icd COMPONENT icd) # Generic CPACK variables diff --git a/projects/clr/opencl/packaging/rocm-ocl-icd.postinst b/projects/clr/opencl/packaging/rocm-ocl-icd.postinst index c6f30c2b8b..e22be0df9c 100644 --- a/projects/clr/opencl/packaging/rocm-ocl-icd.postinst +++ b/projects/clr/opencl/packaging/rocm-ocl-icd.postinst @@ -5,8 +5,8 @@ set -e INSTALL_PATH=@CPACK_PACKAGING_INSTALL_PREFIX@ do_ldconfig() { - echo ${INSTALL_PATH}/lib > /etc/ld.so.conf.d/10-rocm-opencl.conf && ldconfig - mkdir -p /etc/OpenCL/vendors && (echo libamdocl64.so > /etc/OpenCL/vendors/@OPENCL_AMD_ICD_FILE@) + echo ${INSTALL_PATH}/@CMAKE_INSTALL_LIBDIR@ > /@CMAKE_INSTALL_SYSCONFDIR@/ld.so.conf.d/10-rocm-opencl.conf && ldconfig + mkdir -p /@CMAKE_INSTALL_SYSCONFDIR@/OpenCL/vendors && (echo libamdocl64.so > /@CMAKE_INSTALL_SYSCONFDIR@/OpenCL/vendors/@OPENCL_AMD_ICD_FILE@) } case "$1" in diff --git a/projects/clr/opencl/packaging/rocm-ocl-icd.prerm b/projects/clr/opencl/packaging/rocm-ocl-icd.prerm index affcd7c7a2..4843048571 100644 --- a/projects/clr/opencl/packaging/rocm-ocl-icd.prerm +++ b/projects/clr/opencl/packaging/rocm-ocl-icd.prerm @@ -3,8 +3,8 @@ set -e rm_ldconfig() { - rm -f /etc/ld.so.conf.d/10-rocm-opencl.conf && ldconfig - rm -f /etc/OpenCL/vendors/@OPENCL_AMD_ICD_FILE@ + rm -f /@CMAKE_INSTALL_SYSCONFDIR@/ld.so.conf.d/10-rocm-opencl.conf && ldconfig + rm -f /@CMAKE_INSTALL_SYSCONFDIR@/OpenCL/vendors/@OPENCL_AMD_ICD_FILE@ } case "$1" in diff --git a/projects/clr/opencl/packaging/rocm-ocl-icd.rpm_post b/projects/clr/opencl/packaging/rocm-ocl-icd.rpm_post index ae78d19006..b467f63ba8 100644 --- a/projects/clr/opencl/packaging/rocm-ocl-icd.rpm_post +++ b/projects/clr/opencl/packaging/rocm-ocl-icd.rpm_post @@ -1,4 +1,4 @@ INSTALL_PATH=@CPACK_PACKAGING_INSTALL_PREFIX@ -echo ${INSTALL_PATH}/lib > /etc/ld.so.conf.d/10-rocm-opencl.conf && ldconfig -mkdir -p /etc/OpenCL/vendors && (echo libamdocl64.so > /etc/OpenCL/vendors/@OPENCL_AMD_ICD_FILE@) +echo ${INSTALL_PATH}/@CMAKE_INSTALL_LIBDIR@ > /@CMAKE_INSTALL_SYSCONFDIR@/ld.so.conf.d/10-rocm-opencl.conf && ldconfig +mkdir -p /@CMAKE_INSTALL_SYSCONFDIR@/OpenCL/vendors && (echo libamdocl64.so > /@CMAKE_INSTALL_SYSCONFDIR@/OpenCL/vendors/@OPENCL_AMD_ICD_FILE@) diff --git a/projects/clr/opencl/packaging/rocm-ocl-icd.rpm_postun b/projects/clr/opencl/packaging/rocm-ocl-icd.rpm_postun index 4c66f20723..6c29e74c1f 100644 --- a/projects/clr/opencl/packaging/rocm-ocl-icd.rpm_postun +++ b/projects/clr/opencl/packaging/rocm-ocl-icd.rpm_postun @@ -1,8 +1,8 @@ if [ $1 -le 1 ]; then # Below files will be removed during remove | upgrade operation - rm -f /etc/ld.so.conf.d/10-rocm-opencl.conf && ldconfig - rm -f /etc/OpenCL/vendors/@OPENCL_AMD_ICD_FILE@ + rm -f /@CMAKE_INSTALL_SYSCONFDIR@/ld.so.conf.d/10-rocm-opencl.conf && ldconfig + rm -f /@CMAKE_INSTALL_SYSCONFDIR@/OpenCL/vendors/@OPENCL_AMD_ICD_FILE@ fi