Index: Makefile =================================================================== --- /dev/null +++ Makefile @@ -0,0 +1 @@ +include ../Makefile.common Index: files/0001-SWDEV-321118-Use-GNUInstallDirs.patch =================================================================== --- /dev/null +++ files/0001-SWDEV-321118-Use-GNUInstallDirs.patch @@ -0,0 +1,126 @@ +From f86726945b821939a2d4620094f4f5f0a866a564 Mon Sep 17 00:00:00 2001 +From: Jeremy Newton +Date: Mon, 31 Jan 2022 17:54:14 -0500 +Subject: [PATCH 1/3] SWDEV-321118 - Use GNUInstallDirs + +Use GNUInstallDirs variables to determine the location of BINDIR, +LIBDIR, DOCDIR, and SYSCONFDIR. + +Signed-off-by: Jeremy Newton +Change-Id: Ifb38263dce80d80c5ebb4eacd8e49c76bb013a44 +--- + CMakeLists.txt | 2 +- + packaging/CMakeLists.txt | 12 ++++++------ + packaging/rocm-ocl-icd.postinst | 4 ++-- + packaging/rocm-ocl-icd.prerm | 4 ++-- + packaging/rocm-ocl-icd.rpm_post | 4 ++-- + packaging/rocm-ocl-icd.rpm_postun | 4 ++-- + 6 files changed, 15 insertions(+), 15 deletions(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index e5c4537..0612fa2 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -5,7 +5,7 @@ if (POLICY CMP0048) + set(PROJ_VERSION VERSION 1.5.0) + endif() + +-project(opencl) ++project(rocm-opencl) + + include(GNUInstallDirs) + +diff --git a/packaging/CMakeLists.txt b/packaging/CMakeLists.txt +index 13a2185..2b6fa77 100644 +--- a/packaging/CMakeLists.txt ++++ b/packaging/CMakeLists.txt +@@ -1,13 +1,13 @@ + cmake_minimum_required(VERSION 3.5.1) +-project(rocm-opencl) ++include(GNUInstallDirs) + + 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/packaging/rocm-ocl-icd.postinst b/packaging/rocm-ocl-icd.postinst +index 0780970..7c46ade 100644 +--- a/packaging/rocm-ocl-icd.postinst ++++ b/packaging/rocm-ocl-icd.postinst +@@ -6,8 +6,8 @@ INSTALL_PATH=@CPACK_PACKAGING_INSTALL_PREFIX@ + ROCM_LIBPATH=@ROCM_PATH@/lib + + 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/packaging/rocm-ocl-icd.prerm b/packaging/rocm-ocl-icd.prerm +index 9fc6c8d..e0b5417 100644 +--- a/packaging/rocm-ocl-icd.prerm ++++ b/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/packaging/rocm-ocl-icd.rpm_post b/packaging/rocm-ocl-icd.rpm_post +index 7ce5d97..49129ce 100644 +--- a/packaging/rocm-ocl-icd.rpm_post ++++ b/packaging/rocm-ocl-icd.rpm_post +@@ -1,8 +1,8 @@ + INSTALL_PATH=@CPACK_PACKAGING_INSTALL_PREFIX@ + ROCM_LIBPATH=@ROCM_PATH@/lib + +-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@) + + mkdir -p ${ROCM_LIBPATH} + ln -s -f -r ${INSTALL_PATH}/lib/libOpenCL.so ${ROCM_LIBPATH}/libOpenCL.so +diff --git a/packaging/rocm-ocl-icd.rpm_postun b/packaging/rocm-ocl-icd.rpm_postun +index 356c7af..44bbce3 100644 +--- a/packaging/rocm-ocl-icd.rpm_postun ++++ b/packaging/rocm-ocl-icd.rpm_postun +@@ -1,6 +1,6 @@ + if [ $1 -eq 0 ]; then +- 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@ + rm -f @ROCM_PATH@/lib/libOpenCL.so + rm -f @ROCM_PATH@/lib/libOpenCL.so.@OPENCL_LIB_VERSION_MAJOR@ + rm -f @ROCM_PATH@/lib/libOpenCL.so.@OPENCL_LIB_VERSION_STRING@ +-- +2.35.1 + Index: files/0001-SWDEV-323669-Fix-linux-arch-detection.patch =================================================================== --- /dev/null +++ files/0001-SWDEV-323669-Fix-linux-arch-detection.patch @@ -0,0 +1,53 @@ +From 211c1c4d8c7f6dac48ba6c73256da60955f9dbd1 Mon Sep 17 00:00:00 2001 +From: Jeremy Newton +Date: Thu, 17 Feb 2022 09:05:56 -0500 +Subject: [PATCH] SWDEV-323669 - Fix linux arch detection + +CMake assumes we're bundling on x86, but for GNU compatible compilers, +we should rely on the compiler target to set the build arch. + +For non-gnu compilers, just fall back to assuming x86 (no change). + +Signed-off-by: Jeremy Newton +Change-Id: Iee9794e6f7c3973c781ddaf740ded77f34712c4f +--- + cmake/ROCclr.cmake | 1 - + include/top.hpp | 10 ++++++++++ + 2 files changed, 10 insertions(+), 1 deletion(-) + +diff --git a/cmake/ROCclr.cmake b/cmake/ROCclr.cmake +index 2f6ff8c1..e4d0cdc1 100644 +--- a/cmake/ROCclr.cmake ++++ b/cmake/ROCclr.cmake +@@ -100,7 +100,6 @@ if(NOT CMAKE_CL_64) + endif() + + target_compile_definitions(rocclr PUBLIC +- ATI_ARCH_X86 + LITTLEENDIAN_CPU + WITH_LIQUID_FLASH=0 + ${AMD_OPENCL_DEFS}) +diff --git a/include/top.hpp b/include/top.hpp +index f51db7d1..70273510 100644 +--- a/include/top.hpp ++++ b/include/top.hpp +@@ -21,6 +21,16 @@ + #ifndef TOP_HPP_ + #define TOP_HPP_ + ++#if defined(__GNUC__) ++#if defined(__arm__) || defined(__aarch64__) ++#define ATI_ARCH_ARM ++#elif defined(__x86__) || defined(__x86_64__) ++#define ATI_ARCH_X86 ++#endif ++#else /*!__GNUC__*/ ++#define ATI_ARCH_X86 ++#endif /*!__GNUC__*/ ++ + #if defined(ATI_ARCH_ARM) + #define __EXPORTED_HEADERS__ 1 + #endif /*ATI_ARCH_ARM*/ +-- +2.34.1 + Index: files/0001-SWDEV-323669-Improve-arch-detection.patch =================================================================== --- /dev/null +++ files/0001-SWDEV-323669-Improve-arch-detection.patch @@ -0,0 +1,93 @@ +From e373cba2fb2d458239918eb1f957e919e65d7a3c Mon Sep 17 00:00:00 2001 +From: Jeremy Newton +Date: Wed, 6 Apr 2022 11:07:35 -0400 +Subject: [PATCH] SWDEV-323669 - Improve arch detection + +- Clean up detection by using visual studio macros to detect arch; I + didn't list all possible ARM platforms (can be done later if desired) +- Fixed two incorrect uses of !defined(ATI_ARCH_ARM) to instead use + defined(ATI_ARCH_X86), as they contain X86 specific code +- Fixed one use of __ARM_ARCH_7A__ to use ATI_ARCH_ARM instead + +This is an improvement to the fixes in the last patch for SWDEV-323669 + +Signed-off-by: Jeremy Newton +Change-Id: I8568167293c34ad5331902105877f3ab6e25acb3 +--- + include/top.hpp | 12 ++++-------- + os/os.cpp | 2 +- + os/os_posix.cpp | 6 +++--- + 3 files changed, 8 insertions(+), 12 deletions(-) + +diff --git a/include/top.hpp b/include/top.hpp +index 70273510..d6aa00c8 100644 +--- a/include/top.hpp ++++ b/include/top.hpp +@@ -21,15 +21,11 @@ + #ifndef TOP_HPP_ + #define TOP_HPP_ + +-#if defined(__GNUC__) +-#if defined(__arm__) || defined(__aarch64__) ++#if defined(__ARM_ARCH_7__) || defined(__ARM_ARCH_7A__) || defined(__arm) || defined(__arm__) || defined(_M_ARM) || defined(__aarch64__) || defined(_M_ARM64) + #define ATI_ARCH_ARM +-#elif defined(__x86__) || defined(__x86_64__) ++#elif defined(i386) || defined(__i386) || defined(__i386__) || defined(_M_IX86) || defined(__x86__) || defined(__x86_64) || defined(__x86_64__) || defined(__amd64) || defined(__amd64__) || defined(_M_X64) || defined(_M_AMD64) + #define ATI_ARCH_X86 + #endif +-#else /*!__GNUC__*/ +-#define ATI_ARCH_X86 +-#endif /*!__GNUC__*/ + + #if defined(ATI_ARCH_ARM) + #define __EXPORTED_HEADERS__ 1 +@@ -51,9 +47,9 @@ + #define CL_DEVICE_HOST_UNIFIED_MEMORY 0x1035 + #endif + +-#if !defined(ATI_ARCH_ARM) ++#if defined(ATI_ARCH_X86) + #include +-#endif /*!ATI_ARCH_ARM*/ ++#endif /*ATI_ARCH_X86*/ + + #include + #include +diff --git a/os/os.cpp b/os/os.cpp +index f5ea547d..0437f7f1 100644 +--- a/os/os.cpp ++++ b/os/os.cpp +@@ -112,7 +112,7 @@ int Os::processorCount_ = 0; + void Os::spinPause() { + #if defined(ATI_ARCH_X86) + _mm_pause(); +-#elif defined(__ARM_ARCH_7A__) ++#elif defined(ATI_ARCH_ARM) + __asm__ __volatile__("yield"); + #endif + } +diff --git a/os/os_posix.cpp b/os/os_posix.cpp +index dd1e61fc..aa43a773 100644 +--- a/os/os_posix.cpp ++++ b/os/os_posix.cpp +@@ -701,14 +701,14 @@ void Os::setCurrentStackPtr(address sp) { + sp -= sizeof(void*); + *(void**)sp = __builtin_return_address(0); + +-#if defined(ATI_ARCH_ARM) +- assert(!"Unimplemented"); +-#else ++#if defined(ATI_ARCH_X86) + __asm__ __volatile__( + #if !defined(OMIT_FRAME_POINTER) + LP64_SWITCH("movl (%%ebp),%%ebp;", "movq (%%rbp),%%rbp;") + #endif // !OMIT_FRAME_POINTER + LP64_SWITCH("movl %0,%%esp; ret;", "movq %0,%%rsp; ret;")::"r"(sp)); ++#else ++ assert(!"Unimplemented"); + #endif + } + +-- +2.35.1 + Index: files/0001-enable-gfx800.patch =================================================================== --- /dev/null +++ files/0001-enable-gfx800.patch @@ -0,0 +1,16 @@ +#From xuhuisheng +#at https://github.com/RadeonOpenCompute/ROCm/issues/1659#issuecomment-1041026624 + +diff --git a/utils/flags.hpp b/utils/flags.hpp +index 8f0228cc..2eaa47c5 100644 +--- a/utils/flags.hpp ++++ b/utils/flags.hpp +@@ -245,7 +245,7 @@ release(bool, ROC_SYSTEM_SCOPE_SIGNAL, true, \ + "Enable system scope for signals (uses interrupts).") \ + release(bool, ROC_SKIP_COPY_SYNC, false, \ + "Skips copy syncs if runtime can predict the same engine.") \ +-release(bool, ROC_ENABLE_PRE_VEGA, false, \ ++release(bool, ROC_ENABLE_PRE_VEGA, true, \ + "Enable support of pre-vega ASICs in ROCm path") \ + release(bool, HIP_FORCE_QUEUE_PROFILING, false, \ + "Force command queue profiling by default") \ Index: files/0002-SWDEV-321116-Allow-disabling-ICD-loader.patch =================================================================== --- /dev/null +++ files/0002-SWDEV-321116-Allow-disabling-ICD-loader.patch @@ -0,0 +1,168 @@ +From cee67d6763e9f0c44e97d867042993b1041f40fb Mon Sep 17 00:00:00 2001 +From: Jeremy Newton +Date: Wed, 6 Apr 2022 15:07:13 -0400 +Subject: [PATCH 2/3] SWDEV-321116 - Allow disabling ICD loader + +This patch adds an option to allow not building the ICD loader with +rocm-opencl. This isn't useful for internal use, but distros will want +this to allow packaging rocm-opencl with their own OCL ICD loader. + +Signed-off-by: Jeremy Newton +Change-Id: I6006593eceed543cd829e8949ec2256482815673 +--- + CMakeLists.txt | 23 ++++++++++++------- + packaging/CMakeLists.txt | 49 +++++++++++++++++++++++++++------------- + 2 files changed, 48 insertions(+), 24 deletions(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 0612fa2..3bb903a 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -10,11 +10,14 @@ project(rocm-opencl) + 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) + + + 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) ++endif() + add_subdirectory(amdocl) + add_subdirectory(tools/clinfo) + add_subdirectory(tools/cltrace) +@@ -52,8 +55,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}) +@@ -71,11 +76,13 @@ message (STATUS "ROCM Installation path(ROCM_PATH): ${ROCM_PATH}") + + #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) + +diff --git a/packaging/CMakeLists.txt b/packaging/CMakeLists.txt +index 2b6fa77..ab8fed2 100644 +--- a/packaging/CMakeLists.txt ++++ b/packaging/CMakeLists.txt +@@ -1,7 +1,10 @@ + cmake_minimum_required(VERSION 3.5.1) + include(GNUInstallDirs) + +-set(CPACK_COMPONENTS_ALL binary dev icd) ++set(CPACK_COMPONENTS_ALL binary dev) ++if(BUILD_ICD) ++ string ( APPEND CPACK_COMPONENTS_ALL " icd" ) ++endif() + set(CPACK_DEB_COMPONENT_INSTALL ON) + set(CPACK_RPM_COMPONENT_INSTALL ON) + +@@ -17,8 +20,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 +@@ -45,11 +50,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 +@@ -70,21 +83,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}) +@@ -113,8 +128,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) +-- +2.35.1 + Index: files/0003-SWDEV-321116-Drop-unnecessary-ICD-include.patch =================================================================== --- /dev/null +++ files/0003-SWDEV-321116-Drop-unnecessary-ICD-include.patch @@ -0,0 +1,44 @@ +From a0e5d11a28c6bc5bcc72927e06b643eb39ea3af3 Mon Sep 17 00:00:00 2001 +From: Jeremy Newton +Date: Wed, 6 Apr 2022 18:37:47 -0400 +Subject: [PATCH 3/3] SWDEV-321116 - Drop unnecessary ICD include + +This looks unused. This should allow building rocm-opencl without any +dependency on any particular OCL ICD. + +Signed-off-by: Jeremy Newton +Change-Id: Ib9229ede8400fd0e883275659ab99513b03952cb +--- + amdocl/cl_execute.cpp | 2 -- + amdocl/cl_icd.cpp | 2 -- + 2 files changed, 4 deletions(-) + +diff --git a/amdocl/cl_execute.cpp b/amdocl/cl_execute.cpp +index 71fe535..e1d5be2 100644 +--- a/amdocl/cl_execute.cpp ++++ b/amdocl/cl_execute.cpp +@@ -27,8 +27,6 @@ + #include "platform/program.hpp" + #include "os/os.hpp" + +-#include +- + /*! \addtogroup API + * @{ + * +diff --git a/amdocl/cl_icd.cpp b/amdocl/cl_icd.cpp +index 2a4f3af..4fce08b 100644 +--- a/amdocl/cl_icd.cpp ++++ b/amdocl/cl_icd.cpp +@@ -27,8 +27,6 @@ + #include "cl_d3d11_amd.hpp" + #endif //_WIN32 + +-#include +- + #include + + amd::PlatformIDS amd::PlatformID::Platform = //{ NULL }; +-- +2.35.1 + Index: files/series =================================================================== --- /dev/null +++ files/series @@ -0,0 +1,3 @@ +0001-SWDEV-321118-Use-GNUInstallDirs.patch +0002-SWDEV-321116-Allow-disabling-ICD-loader.patch +0003-SWDEV-321116-Drop-unnecessary-ICD-include.patch Index: package.yml =================================================================== --- /dev/null +++ package.yml @@ -0,0 +1,57 @@ +name : rocm-opencl +version : 5.1.0 +release : 1 +source : + - https://github.com/ROCm-Developer-Tools/ROCclr/archive/refs/tags/rocm-5.1.0.tar.gz : f4f265604b534795a275af902b2c814f416434d9c9e16db81b3ed5d062187dfa + - https://github.com/RadeonOpenCompute/ROCm-OpenCL-Runtime/archive/refs/tags/rocm-5.1.0.tar.gz : 362d81303048cf7ed5d2f69fb65ed65425bc3da4734fff83e3b8fbdda51b0927 +license : MIT +component : programming.devel +clang : yes +summary : OpenCL 2.0 compatible language runtime +description: | + OpenCL 2.0 compatible language runtime +extract : False +builddeps : + - libx11-devel + - pkgconfig(d3d) + - pkgconfig(OpenCL) + - pkgconfig(gl) + - hsakmt-devel + - rocm-cmake + - rocm-runtime-devel + - rocm-compilersupport + - rocm-device-libs-devel +setup : | + ls -ltra $sources + tar -xvzf $sources/rocm-5.1.0.tar.gz + tar -xvzf $sources/rocm-5.1.0.tar.gz.1 + ls -ltra + cd ROCclr-rocm-%version% + %patch -p1 < $pkgfiles/0001-enable-gfx800.patch + cd .. + cd ROCm-OpenCL-Runtime-rocm-%version% + ls -d khronos/headers/* | grep -v opencl2.2 | xargs rm -r + ls -d khronos/icd/* | grep -v loader | xargs rm -r + ls -d khronos/icd/loader/* | grep -v icd_dispatch.h | xargs rm -r + %apply_patches + %cmake -Wno-dev -B build \ + -DCMAKE_BUILD_TYPE=Release \ + -DROCM_PATH=%PREFIX% \ + -DCMAKE_PREFIX_PATH="%workdir%/ROCclr-rocm-%version%;%prefix%" \ + -DAMD_OPENCL_PATH="%workdir%/ROCm-OpenCL-Runtime-rocm-%version%" -DBUILD_ICD=OFF +build : | + cd ROCm-OpenCL-Runtime-rocm-%version% + %make -C build +install : | + cd ROCm-OpenCL-Runtime-rocm-%version% + %make_install -C build + + install -D -m 644 config/amdocl64.icd \ + %installroot%/etc/OpenCL/vendors/amdocl64.icd + + #Avoid file conflicts with opencl-headers package: + mkdir -p %installroot%/usr/include/rocm-opencl + mv %installroot%/usr/include/CL %installroot%/usr/include/rocm-opencl/CL + + #Avoid file conflicts with clinfo package: + mv %installroot%/usr/bin/clinfo %installroot%/usr/bin/rocm-clinfo Index: pspec_x86_64.xml =================================================================== --- /dev/null +++ pspec_x86_64.xml @@ -0,0 +1,63 @@ + + + rocm-opencl + + Jacek Jagosz + jacek.jagosz@outlook.com + + MIT + programming.devel + OpenCL 2.0 compatible language runtime + OpenCL 2.0 compatible language runtime + + https://getsol.us/sources/README.Solus + + + rocm-opencl + OpenCL 2.0 compatible language runtime + OpenCL 2.0 compatible language runtime + + programming.devel + + /etc/OpenCL/vendors/amdocl64.icd + /usr/bin/rocm-clinfo + /usr/share/doc/rocm-opencl/LICENSE.txt + + + + rocm-opencl-devel + Development files for rocm-opencl + OpenCL 2.0 compatible language runtime + + programming.devel + + rocm-opencl + + + /usr/include/rocm-opencl/CL/cl.h + /usr/include/rocm-opencl/CL/cl.hpp + /usr/include/rocm-opencl/CL/cl2.hpp + /usr/include/rocm-opencl/CL/cl_dx9_media_sharing_intel.h + /usr/include/rocm-opencl/CL/cl_ext.h + /usr/include/rocm-opencl/CL/cl_ext_intel.h + /usr/include/rocm-opencl/CL/cl_gl.h + /usr/include/rocm-opencl/CL/cl_gl_ext.h + /usr/include/rocm-opencl/CL/cl_icd.h + /usr/include/rocm-opencl/CL/cl_platform.h + /usr/include/rocm-opencl/CL/cl_va_api_media_sharing_intel.h + /usr/include/rocm-opencl/CL/cl_version.h + /usr/include/rocm-opencl/CL/opencl.h + /usr/lib64/libamdocl64.so + /usr/lib64/libcltrace.so + + + + + 2022-04-25 + 5.1.0 + Packaging update + Jacek Jagosz + jacek.jagosz@outlook.com + + + \ No newline at end of file Index: sources =================================================================== --- /dev/null +++ sources @@ -0,0 +1,2 @@ +910541409f3c729f74870f5bbedef23a ROCclr-5.1.0.tar.gz +ab0c9388aec4b3d97907aebfc88626a4 ROCm-OpenCL-Runtime-5.1.0.tar.gz