SWDEV-321116 - Allow disabling ICD loader
This patch adds an option (BUILD_ICD) to toggle the ICD loader build
with rocm-opencl. This isn't useful for official ROCm use, but distros
or users may want build rocm-opencl with their own OCL ICD loader.
The default option is BUILD_ICD=ON.
If this option is set to OFF, an OpenCL OCD loader must be installed
prior to attempting to build rocm-opencl.
E.g. distros already provide ocl icd loader packages:
sudo yum install ocd-icd-devel
sudo apt-get install ocl-icd-opencl-dev
sudo zypper install ocd-icd-devel
Signed-off-by: Jeremy Newton <Jeremy.Newton@amd.com>
Change-Id: I6006593eceed543cd829e8949ec2256482815673
[ROCm/clr commit: d1782940f3]
Αυτή η υποβολή περιλαμβάνεται σε:
@@ -13,12 +13,17 @@ set(CMAKE_INSTALL_LIBDIR "lib" CACHE STRING "Library install directory")
|
||||
include(GNUInstallDirs)
|
||||
|
||||
option(BUILD_TESTS "Enable building OpenCL tests" OFF)
|
||||
option(BUILD_ICD "Enable building OpenCL ICD Loader" ON)
|
||||
option(EMU_ENV "Enable building for emulation environment" OFF)
|
||||
option(FILE_REORG_BACKWARD_COMPATIBILITY "Enable File Reorganization backward compatibility" ON)
|
||||
|
||||
|
||||
set(OPENCL_ICD_LOADER_HEADERS_DIR "${CMAKE_CURRENT_LIST_DIR}/khronos/headers/opencl2.2" CACHE PATH "")
|
||||
add_subdirectory(khronos/icd)
|
||||
if(BUILD_ICD)
|
||||
add_subdirectory(khronos/icd)
|
||||
else()
|
||||
find_package(OpenCL REQUIRED)
|
||||
endif()
|
||||
add_subdirectory(amdocl)
|
||||
add_subdirectory(tools/clinfo)
|
||||
add_subdirectory(tools/cltrace)
|
||||
@@ -56,8 +61,10 @@ if (DEFINED ROCM_PATCH_VERSION)
|
||||
set(OPENCL_AMD_ICD_FILE "amdocl64_${ROCM_PATCH_VERSION}.icd")
|
||||
endif()
|
||||
|
||||
get_target_property(OPENCL_LIB_VERSION_MAJOR OpenCL SOVERSION)
|
||||
get_target_property(OPENCL_LIB_VERSION_STRING OpenCL VERSION)
|
||||
if(BUILD_ICD)
|
||||
get_target_property(OPENCL_LIB_VERSION_MAJOR OpenCL SOVERSION)
|
||||
get_target_property(OPENCL_LIB_VERSION_STRING OpenCL VERSION)
|
||||
endif()
|
||||
|
||||
#Set Package Version
|
||||
set(CPACK_PACKAGE_VERSION ${PROJECT_VERSION})
|
||||
@@ -81,11 +88,13 @@ endif()
|
||||
|
||||
#Package: rocm-opencl,rocm-opencl-dev/devel,rocm-ocl-icd
|
||||
|
||||
set(BUILD_DIR ${CMAKE_CURRENT_BINARY_DIR}/packages/rocm-ocl-icd)
|
||||
configure_file(packaging/rocm-ocl-icd.postinst ${BUILD_DIR}/postinst @ONLY)
|
||||
configure_file(packaging/rocm-ocl-icd.prerm ${BUILD_DIR}/prerm @ONLY)
|
||||
configure_file(packaging/rocm-ocl-icd.rpm_post ${BUILD_DIR}/rpm_post @ONLY)
|
||||
configure_file(packaging/rocm-ocl-icd.rpm_postun ${BUILD_DIR}/rpm_postun @ONLY)
|
||||
if(BUILD_ICD)
|
||||
set(BUILD_DIR ${CMAKE_CURRENT_BINARY_DIR}/packages/rocm-ocl-icd)
|
||||
configure_file(packaging/rocm-ocl-icd.postinst ${BUILD_DIR}/postinst @ONLY)
|
||||
configure_file(packaging/rocm-ocl-icd.prerm ${BUILD_DIR}/prerm @ONLY)
|
||||
configure_file(packaging/rocm-ocl-icd.rpm_post ${BUILD_DIR}/rpm_post @ONLY)
|
||||
configure_file(packaging/rocm-ocl-icd.rpm_postun ${BUILD_DIR}/rpm_postun @ONLY)
|
||||
endif()
|
||||
|
||||
add_subdirectory(packaging)
|
||||
|
||||
|
||||
@@ -88,18 +88,20 @@ endfunction()
|
||||
|
||||
#function to create symlink to libraries
|
||||
function(create_library_symlink)
|
||||
file(MAKE_DIRECTORY ${OPENCL_WRAPPER_LIB_DIR})
|
||||
set(LIB_OPENCL "libOpenCL.so")
|
||||
set(MAJ_VERSION "${OPENCL_LIB_VERSION_MAJOR}")
|
||||
set(SO_VERSION "${OPENCL_LIB_VERSION_STRING}")
|
||||
set(library_files "${LIB_OPENCL}" "${LIB_OPENCL}.${MAJ_VERSION}" "${LIB_OPENCL}.${SO_VERSION}")
|
||||
if(BUILD_ICD)
|
||||
file(MAKE_DIRECTORY ${OPENCL_WRAPPER_LIB_DIR})
|
||||
set(LIB_OPENCL "libOpenCL.so")
|
||||
set(MAJ_VERSION "${OPENCL_LIB_VERSION_MAJOR}")
|
||||
set(SO_VERSION "${OPENCL_LIB_VERSION_STRING}")
|
||||
set(library_files "${LIB_OPENCL}" "${LIB_OPENCL}.${MAJ_VERSION}" "${LIB_OPENCL}.${SO_VERSION}")
|
||||
|
||||
foreach(file_name ${library_files})
|
||||
add_custom_target(link_${file_name} ALL
|
||||
foreach(file_name ${library_files})
|
||||
add_custom_target(link_${file_name} ALL
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
|
||||
COMMAND ${CMAKE_COMMAND} -E create_symlink
|
||||
../../${CMAKE_INSTALL_LIBDIR}/${file_name} ${OPENCL_WRAPPER_LIB_DIR}/${file_name})
|
||||
endforeach()
|
||||
endforeach()
|
||||
endif()
|
||||
if(BUILD_SHARED_LIBS)
|
||||
set(LIB_AMDDOC "libamdocl64.so")
|
||||
else()
|
||||
@@ -124,7 +126,9 @@ install(DIRECTORY ${OPENCL_WRAPPER_BIN_DIR} DESTINATION ${OPENCL} COMPONENT bin
|
||||
option(BUILD_SHARED_LIBS "Build the shared library" ON)
|
||||
# Create symlink to libraries
|
||||
create_library_symlink()
|
||||
install(DIRECTORY ${OPENCL_WRAPPER_LIB_DIR} DESTINATION ${OPENCL} COMPONENT icd)
|
||||
if(BUILD_ICD)
|
||||
install(DIRECTORY ${OPENCL_WRAPPER_LIB_DIR} DESTINATION ${OPENCL} COMPONENT icd)
|
||||
endif()
|
||||
if(BUILD_SHARED_LIBS)
|
||||
install(FILES ${OPENCL_WRAPPER_DIR}/libamdocl64.so DESTINATION ${OPENCL}/lib COMPONENT binary)
|
||||
else()
|
||||
|
||||
@@ -1,7 +1,12 @@
|
||||
cmake_minimum_required(VERSION 3.5.1)
|
||||
project(rocm-opencl)
|
||||
|
||||
set(CPACK_COMPONENTS_ALL binary dev)
|
||||
if(BUILD_ICD)
|
||||
set(CPACK_COMPONENTS_ALL binary dev icd)
|
||||
else()
|
||||
set(CPACK_COMPONENTS_ALL binary dev)
|
||||
endif()
|
||||
set(CPACK_DEB_COMPONENT_INSTALL ON)
|
||||
set(CPACK_RPM_COMPONENT_INSTALL ON)
|
||||
|
||||
@@ -17,8 +22,10 @@ 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 ${CMAKE_INSTALL_LIBDIR} COMPONENT icd )
|
||||
install(FILES ${CMAKE_SOURCE_DIR}/khronos/icd/LICENSE DESTINATION ${CMAKE_INSTALL_DATADIR}/doc/rocm-ocl-icd COMPONENT icd)
|
||||
if(BUILD_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)
|
||||
endif()
|
||||
|
||||
|
||||
# Generic CPACK variables
|
||||
@@ -44,11 +51,19 @@ endif()
|
||||
message("Using CPACK_DEBIAN_PACKAGE_RELEASE ${CPACK_DEBIAN_PACKAGE_RELEASE}")
|
||||
|
||||
set(CPACK_DEBIAN_FILE_NAME "DEB-DEFAULT")
|
||||
set(CPACK_DEBIAN_BINARY_PACKAGE_DEPENDS "rocm-ocl-icd, libelf-dev, comgr, hsa-rocr, rocm-core")
|
||||
if(BUILD_ICD)
|
||||
set(CPACK_DEBIAN_BINARY_PACKAGE_DEPENDS "rocm-ocl-icd, libelf-dev, comgr, hsa-rocr, rocm-core")
|
||||
else()
|
||||
set(CPACK_DEBIAN_BINARY_PACKAGE_DEPENDS "ocl-icd-libopencl1, libelf-dev, comgr, hsa-rocr, rocm-core")
|
||||
endif()
|
||||
|
||||
# RPM CPACK variables
|
||||
set(CPACK_BINARY_RPM "ON")
|
||||
set(CPACK_RPM_BINARY_PACKAGE_REQUIRES "rocm-ocl-icd, comgr, hsa-rocr, rocm-core")
|
||||
if(BUILD_ICD)
|
||||
set(CPACK_RPM_BINARY_PACKAGE_REQUIRES "rocm-ocl-icd, comgr, hsa-rocr, rocm-core")
|
||||
else()
|
||||
set(CPACK_RPM_BINARY_PACKAGE_REQUIRES "ocl-icd, comgr, hsa-rocr, rocm-core")
|
||||
endif()
|
||||
|
||||
#Unable to set CPACK_RPM_BIANRY_PACKAGE_LICENSE to control individual pacakge license
|
||||
#Hence combining the license for BINARY,DEV,ICD to one
|
||||
@@ -69,21 +84,23 @@ set(CPACK_RPM_DEV_PACKAGE_REQUIRES "rocm-opencl, hsa-rocr-devel, rocm-core")
|
||||
#############################
|
||||
|
||||
# Debian CPACK variables
|
||||
set(CPACK_ICD_DEB "ON")
|
||||
set(CPACK_DEBIAN_ICD_PACKAGE_NAME "rocm-ocl-icd")
|
||||
if(BUILD_ICD)
|
||||
set(CPACK_ICD_DEB "ON")
|
||||
set(CPACK_DEBIAN_ICD_PACKAGE_NAME "rocm-ocl-icd")
|
||||
|
||||
set(CPACK_DEBIAN_ICD_PACKAGE_CONTROL_EXTRA "${CMAKE_BINARY_DIR}/packages/rocm-ocl-icd/postinst;${CMAKE_BINARY_DIR}/packages/rocm-ocl-icd/prerm")
|
||||
set(CPACK_DEBIAN_ICD_PACKAGE_DEPENDS "rocm-core")
|
||||
set(CPACK_DEBIAN_ICD_PACKAGE_CONTROL_EXTRA "${CMAKE_BINARY_DIR}/packages/rocm-ocl-icd/postinst;${CMAKE_BINARY_DIR}/packages/rocm-ocl-icd/prerm")
|
||||
set(CPACK_DEBIAN_ICD_PACKAGE_DEPENDS "rocm-core")
|
||||
|
||||
# RPM CPACK variables
|
||||
set(CPACK_ICD_RPM "ON")
|
||||
set(CPACK_RPM_ICD_PACKAGE_NAME "rocm-ocl-icd")
|
||||
set(CPACK_ICD_RPM "ON")
|
||||
set(CPACK_RPM_ICD_PACKAGE_NAME "rocm-ocl-icd")
|
||||
|
||||
|
||||
|
||||
set(CPACK_RPM_ICD_POST_INSTALL_SCRIPT_FILE "${CMAKE_BINARY_DIR}/packages/rocm-ocl-icd/rpm_post")
|
||||
set(CPACK_RPM_ICD_POST_UNINSTALL_SCRIPT_FILE "${CMAKE_BINARY_DIR}/packages/rocm-ocl-icd/rpm_postun")
|
||||
set(CPACK_RPM_ICD_PACKAGE_REQUIRES "rocm-core")
|
||||
set(CPACK_RPM_ICD_POST_INSTALL_SCRIPT_FILE "${CMAKE_BINARY_DIR}/packages/rocm-ocl-icd/rpm_post")
|
||||
set(CPACK_RPM_ICD_POST_UNINSTALL_SCRIPT_FILE "${CMAKE_BINARY_DIR}/packages/rocm-ocl-icd/rpm_postun")
|
||||
set(CPACK_RPM_ICD_PACKAGE_REQUIRES "rocm-core")
|
||||
endif()
|
||||
|
||||
if(DEFINED ENV{CPACK_RPM_PACKAGE_RELEASE})
|
||||
set(CPACK_RPM_PACKAGE_RELEASE $ENV{CPACK_RPM_PACKAGE_RELEASE})
|
||||
@@ -112,8 +129,10 @@ if(NOT ROCM_DEP_ROCMCORE)
|
||||
string(REGEX REPLACE ",? ?rocm-core" "" CPACK_DEBIAN_BINARY_PACKAGE_DEPENDS ${CPACK_DEBIAN_BINARY_PACKAGE_DEPENDS})
|
||||
string(REGEX REPLACE ",? ?rocm-core" "" CPACK_RPM_DEV_PACKAGE_REQUIRES ${CPACK_RPM_DEV_PACKAGE_REQUIRES})
|
||||
string(REGEX REPLACE ",? ?rocm-core" "" CPACK_DEBIAN_DEV_PACKAGE_DEPENDS ${CPACK_DEBIAN_DEV_PACKAGE_DEPENDS})
|
||||
string(REGEX REPLACE ",? ?rocm-core" "" CPACK_RPM_ICD_PACKAGE_REQUIRES ${CPACK_RPM_ICD_PACKAGE_REQUIRES})
|
||||
string(REGEX REPLACE ",? ?rocm-core" "" CPACK_DEBIAN_ICD_PACKAGE_DEPENDS ${CPACK_DEBIAN_ICD_PACKAGE_DEPENDS})
|
||||
if(BUILD_ICD)
|
||||
string(REGEX REPLACE ",? ?rocm-core" "" CPACK_RPM_ICD_PACKAGE_REQUIRES ${CPACK_RPM_ICD_PACKAGE_REQUIRES})
|
||||
string(REGEX REPLACE ",? ?rocm-core" "" CPACK_DEBIAN_ICD_PACKAGE_DEPENDS ${CPACK_DEBIAN_ICD_PACKAGE_DEPENDS})
|
||||
endif()
|
||||
endif()
|
||||
|
||||
include(CPack)
|
||||
|
||||
Αναφορά σε νέο ζήτημα
Block a user