@@ -71,7 +71,7 @@ set(SYCL_INCLUDE_DEPLOY_DIR ${CMAKE_INSTALL_PREFIX}/${SYCL_INCLUDE_DIR})
71
71
# build SYCL runtime.
72
72
# WARNING: use with caution, building SYCL runtime with OpenCL implementation
73
73
# instead of Khronos ICD loader might cause build and/or portability issues.
74
- option (OpenCL_BUILD_WITH_SYSTEM_SDK OFF )
74
+ option (OpenCL_BUILD_WITH_SYSTEM_SDK "Build SYCL with OpenCL coming from the build system" OFF )
75
75
76
76
if ( (OpenCL_INCLUDE_DIR AND OpenCL_LIBRARY ) OR OpenCL_BUILD_WITH_SYSTEM_SDK )
77
77
find_package (OpenCL )
@@ -80,7 +80,7 @@ endif()
80
80
include (ExternalProject )
81
81
82
82
if ( NOT OpenCL_INCLUDE_DIRS )
83
- message ("OpenCL_INCLUDE_DIRS is missing. Will try to download OpenCL headers from github.com" )
83
+ message (STATUS "OpenCL_INCLUDE_DIRS is missing. Will try to download OpenCL headers from github.com" )
84
84
set (OpenCL_INCLUDE_DIRS "${CMAKE_CURRENT_BINARY_DIR} /OpenCL/inc" )
85
85
ExternalProject_Add (ocl-headers
86
86
GIT_REPOSITORY https://github.com/KhronosGroup/OpenCL-Headers.git
@@ -102,7 +102,7 @@ else()
102
102
endif ()
103
103
104
104
if ( NOT OpenCL_LIBRARIES )
105
- message ("OpenCL_LIBRARIES is missing. Will try to download OpenCL ICD Loader from github.com" )
105
+ message (STATUS "OpenCL_LIBRARIES is missing. Will try to download OpenCL ICD Loader from github.com" )
106
106
if (MSVC )
107
107
set (OpenCL_LIBRARIES
108
108
"${LLVM_LIBRARY_OUTPUT_INTDIR} /${CMAKE_STATIC_LIBRARY_PREFIX} OpenCL${CMAKE_STATIC_LIBRARY_SUFFIX} " )
@@ -123,16 +123,31 @@ if( NOT OpenCL_LIBRARIES )
123
123
GIT_TAG origin/master
124
124
SOURCE_DIR "${CMAKE_CURRENT_BINARY_DIR} /OpenCL/icd"
125
125
BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR} /icd_build"
126
+ INSTALL_DIR "${CMAKE_CURRENT_BINARY_DIR} /icd_install"
126
127
CMAKE_ARGS -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
127
128
-DCMAKE_MAKE_PROGRAM=${CMAKE_MAKE_PROGRAM}
128
129
-DOPENCL_ICD_LOADER_HEADERS_DIR=${OpenCL_INCLUDE_DIRS}
129
- -DCMAKE_INSTALL_PREFIX=${LLVM_BINARY_DIR}
130
+ -DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>
130
131
-DCMAKE_INSTALL_LIBDIR:PATH=lib${LLVM_LIBDIR_SUFFIX}
131
132
${AUX_CMAKE_FLAGS}
132
133
STEP_TARGETS configure,build,install
133
134
DEPENDS ocl-headers
134
135
BUILD_BYPRODUCTS ${OpenCL_LIBRARIES}
135
136
)
137
+ ExternalProject_Add_Step (ocl-icd llvminstall
138
+ COMMAND ${CMAKE_COMMAND} -E copy_directory <INSTALL_DIR>/ ${LLVM_BINARY_DIR}
139
+ COMMENT "Installing ocl-icd into the LLVM binary directory"
140
+ DEPENDEES install
141
+ )
142
+ # Optionally install the ICD library along with LLVM.
143
+ option (OpenCL_INSTALL_KHRONOS_ICD_LOADER
144
+ "Install the Khronos ICD Loader built as part of LLVM" OFF )
145
+ if (OpenCL_INSTALL_KHRONOS_ICD_LOADER )
146
+ install (DIRECTORY "${CMAKE_CURRENT_BINARY_DIR} /icd_install/"
147
+ DESTINATION "."
148
+ COMPONENT opencl-icd
149
+ )
150
+ endif ()
136
151
else ()
137
152
file (GLOB ICD_LOADER_SRC "${OpenCL_LIBRARIES} *" )
138
153
file (COPY ${ICD_LOADER_SRC} DESTINATION ${LLVM_LIBRARY_OUTPUT_INTDIR} )
@@ -291,6 +306,9 @@ set( SYCL_TOOLCHAIN_DEPLOY_COMPONENTS
291
306
pi_opencl
292
307
libsycldevice
293
308
)
309
+ if (OpenCL_INSTALL_KHRONOS_ICD_LOADER AND TARGET ocl-icd )
310
+ list (APPEND SYCL_TOOLCHAIN_DEPLOY_COMPONENTS opencl-icd )
311
+ endif ()
294
312
295
313
if (SYCL_BUILD_PI_CUDA )
296
314
# Ensure that libclc is enabled.
0 commit comments