From 7ac5bab343bd1692f3b1b52f8ae78e1ca1409d4a Mon Sep 17 00:00:00 2001 From: Ilya Lavrenov Date: Sat, 29 Apr 2023 00:06:19 +0400 Subject: [PATCH] Fixes for OpenCL via brew package (#17291) --- thirdparty/CMakeLists.txt | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/thirdparty/CMakeLists.txt b/thirdparty/CMakeLists.txt index aa38137c3e2..edbcb824f4b 100644 --- a/thirdparty/CMakeLists.txt +++ b/thirdparty/CMakeLists.txt @@ -47,6 +47,15 @@ if(ENABLE_INTEL_GPU) else() set_target_properties(OpenCL::Headers PROPERTIES IMPORTED_GLOBAL ON) endif() + + # 'brew install opencl-clhpp-gheaders' + find_package(OpenCLHeadersCpp QUIET) + if(NOT OpenCLHeadersCpp_FOUND) + message(WARNING "OpenCLHeadersCpp not found, but OpenCLICDLoader is installed. Please, install OpenCL C++ headers") + else() + set_target_properties(OpenCL::HeadersCpp PROPERTIES IMPORTED_GLOBAL ON) + get_target_property(opencl_cpp_include_dirs OpenCL::HeadersCpp INTERFACE_INCLUDE_DIRECTORIES) + endif() else() # try to find system OpenCL: # - 'sudo -E apt-get install opencl-headers ocl-icd-opencl-dev' @@ -62,20 +71,21 @@ if(ENABLE_INTEL_GPU) # try to find CL/opencl.hpp find_file(OpenCL_HPP NAMES CL/opencl.hpp OpenCL/opencl.hpp - HINTS ${OpenCL_INCLUDE_DIRS} + HINTS ${OpenCL_INCLUDE_DIRS} ${opencl_cpp_include_dirs} DOC "Path to CL/opencl.hpp") # add definition to select proper header and suppress warnings if(OpenCL_HPP) - set_target_properties(OpenCL::OpenCL PROPERTIES - INTERFACE_COMPILE_DEFINITIONS OV_GPU_USE_OPENCL_HPP) + set(opencl_interface_definitions OV_GPU_USE_OPENCL_HPP) # check whether CL/opencl.hpp contains C++ wrapper for property CL_DEVICE_UUID_KHR file(STRINGS "${OpenCL_HPP}" CL_DEVICE_UUID_KHR_CPP REGEX ".*CL_DEVICE_UUID_KHR.*") if(CL_DEVICE_UUID_KHR_CPP) - set_target_properties(OpenCL::OpenCL PROPERTIES - INTERFACE_COMPILE_DEFINITIONS OV_GPU_OPENCL_HPP_HAS_UUID) + list(APPEND opencl_interface_definitions OV_GPU_OPENCL_HPP_HAS_UUID) endif() + + set_target_properties(OpenCL::OpenCL PROPERTIES + INTERFACE_COMPILE_DEFINITIONS "${opencl_interface_definitions}") endif() # set variables for onednn_gpu