From d09b6e30fc6cda88c277419ff1760be9bb1abb44 Mon Sep 17 00:00:00 2001 From: Payam Date: Thu, 13 May 2021 18:25:59 -0400 Subject: [PATCH] SWDEV-197835 - adding Khronos OpenCL ICD build Change-Id: Id7d9cd6076c6f1670eedbea06a6976c05e391520 [ROCm/clr commit: 932c83fe8f32cc86e5150b02e12f0ac2bc86ce0e] --- projects/clr/opencl/CMakeLists.txt | 48 +++++++++++++++---- projects/clr/opencl/packaging/rocm-opencl.txt | 6 +-- .../tests/ocltst/module/common/CMakeLists.txt | 2 +- .../clr/opencl/tools/clinfo/CMakeLists.txt | 2 +- 4 files changed, 45 insertions(+), 13 deletions(-) diff --git a/projects/clr/opencl/CMakeLists.txt b/projects/clr/opencl/CMakeLists.txt index 76847d37a7..31f0dd65ca 100644 --- a/projects/clr/opencl/CMakeLists.txt +++ b/projects/clr/opencl/CMakeLists.txt @@ -1,8 +1,28 @@ +# Copyright (C) 2017-2021 Advanced Micro Devices, Inc. All Rights Reserved. +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +# THE SOFTWARE. + cmake_minimum_required(VERSION 3.5.1) if (POLICY CMP0048) - cmake_policy(SET CMP0048 NEW) - set(PROJ_VERSION VERSION 1.5.0) + cmake_policy(SET CMP0048 NEW) + set(PROJ_VERSION VERSION 1.5.0) endif() project(opencl) @@ -14,7 +34,17 @@ set(CMAKE_CXX_EXTENSIONS OFF) #example command: # cmake -DCMAKE_PREFIX_PATH=/path/to/ROCclr/build/or/install .. -set(OPENCL_ICD_LOADER_HEADERS_DIR "${CMAKE_CURRENT_SOURCE_DIR}/khronos/headers/opencl2.2" CACHE PATH "") +if(NOT DEFINED OPENCL_ICD_DIR) + set(OPENCL_ICD_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../OpenCL-ICD-Loader") +endif() + +if(NOT DEFINED OPENCL_ICD_HEADERS) + set(OPENCL_ICD_HEADERS "${CMAKE_CURRENT_SOURCE_DIR}/../OpenCL-Headers") +endif() + +set(OPENCL_ICD_LOADER_HEADERS_DIR "${OPENCL_ICD_HEADERS}" CACHE PATH "") + +set(OPENCL_ICD_LOADER_HEADERS_DIR_INTERNAL "${CMAKE_CURRENT_SOURCE_DIR}/khronos/headers/opencl2.2" CACHE PATH "") option(BUILD_SHARED_LIBS "Build shared libs" ON) #set a name for icd file @@ -65,12 +95,9 @@ if(USE_COMGR_LIBRARY) endif() -find_package(ROCclr REQUIRED CONFIG - PATHS - ${ROCclr_DIR} - ${LIBROCclr_STATIC_DIR}) +find_package(ROCclr REQUIRED CONFIG PATHS ${ROCclr_DIR} ${LIBROCclr_STATIC_DIR}) -add_subdirectory(khronos/icd) +add_subdirectory(${OPENCL_ICD_DIR} ${OPENCL_ICD_DIR}/build) add_subdirectory(amdocl) add_subdirectory(tools/clinfo) add_subdirectory(tools/cltrace) @@ -137,6 +164,11 @@ install(PROGRAMS $ DESTINATION lib COMPONENT DEV) +add_custom_target(opencl ALL COMMAND echo "copying opencl lib from ${OPENCL_ICD_DIR}/build" + COMMAND cp ${OPENCL_ICD_DIR}/build/*.so* ${CMAKE_CURRENT_BINARY_DIR}/lib + WORKING_DIRECTORY ${BUILD_DIR} + DEPENDS amdocl64 OpenCL) + ############################# # Packaging steps ############################# diff --git a/projects/clr/opencl/packaging/rocm-opencl.txt b/projects/clr/opencl/packaging/rocm-opencl.txt index 6a84ae01a7..cd88c14e47 100644 --- a/projects/clr/opencl/packaging/rocm-opencl.txt +++ b/projects/clr/opencl/packaging/rocm-opencl.txt @@ -3,9 +3,9 @@ project(rocm-opencl) install(DIRECTORY @PROJECT_BINARY_DIR@/bin DESTINATION . USE_SOURCE_PERMISSIONS) install(FILES @PROJECT_BINARY_DIR@/lib/libamdocl64.so DESTINATION lib) -install(FILES @PROJECT_BINARY_DIR@/khronos/icd/libOpenCL.so DESTINATION lib) -install(FILES @PROJECT_BINARY_DIR@/khronos/icd/libOpenCL.so.@OPENCL_LIB_VERSION_MAJOR@ DESTINATION lib) -install(FILES @PROJECT_BINARY_DIR@/khronos/icd/libOpenCL.so.@OPENCL_LIB_VERSION_STRING@ DESTINATION lib) +install(FILES @PROJECT_BINARY_DIR@/lib/libOpenCL.so DESTINATION lib) +install(FILES @PROJECT_BINARY_DIR@/lib/libOpenCL.so.@OPENCL_LIB_VERSION_MAJOR@ DESTINATION lib) +install(FILES @PROJECT_BINARY_DIR@/lib/libOpenCL.so.@OPENCL_LIB_VERSION_STRING@ DESTINATION lib) ############################# # Packaging steps diff --git a/projects/clr/opencl/tests/ocltst/module/common/CMakeLists.txt b/projects/clr/opencl/tests/ocltst/module/common/CMakeLists.txt index a4447c6a52..b959826d14 100644 --- a/projects/clr/opencl/tests/ocltst/module/common/CMakeLists.txt +++ b/projects/clr/opencl/tests/ocltst/module/common/CMakeLists.txt @@ -35,7 +35,7 @@ endif() target_include_directories(Common PUBLIC - ${OPENCL_ICD_LOADER_HEADERS_DIR} + ${OPENCL_ICD_LOADER_HEADERS_DIR_INTERNAL} ${OCLTST_DIR}/include ${OCLTST_DIR}/module/common ${OCLTST_DIR}/module/include diff --git a/projects/clr/opencl/tools/clinfo/CMakeLists.txt b/projects/clr/opencl/tools/clinfo/CMakeLists.txt index ebc1faf084..87ccaf1c13 100644 --- a/projects/clr/opencl/tools/clinfo/CMakeLists.txt +++ b/projects/clr/opencl/tools/clinfo/CMakeLists.txt @@ -1,7 +1,7 @@ set (CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) -include_directories(${OPENCL_ICD_LOADER_HEADERS_DIR}) +include_directories(${OPENCL_ICD_LOADER_HEADERS_DIR_INTERNAL}) add_definitions(-DHAVE_CL2_HPP -DCL_TARGET_OPENCL_VERSION=220)