Skip to content

Commit 9b9f473

Browse files
committed
[SYCL] Disable using system OpenCL Loader/Header by default
This patch 1) Disables using system OpenCL Loader/Header by default. 2) Re-uses the currently used cmake generator/command to build OpenCL Loader. 3) Enables automatic download and build of OpenCL.lib on Windows. Signed-off-by: Vyacheslav N Klochkov <[email protected]>
1 parent 4d83925 commit 9b9f473

File tree

1 file changed

+26
-9
lines changed

1 file changed

+26
-9
lines changed

sycl/CMakeLists.txt

Lines changed: 26 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -34,12 +34,20 @@ set(CLANG_VERSION "${CLANG_VERSION_MAJOR}.${CLANG_VERSION_MINOR}.${CLANG_VERSION
3434
set(LLVM_INST_INC_DIRECTORY "lib${LLVM_LIBDIR_SUFFIX}/clang/${CLANG_VERSION}/include")
3535
set(dst_dir ${LLVM_LIBRARY_OUTPUT_INTDIR}/clang/${CLANG_VERSION}/include)
3636

37-
find_package(OpenCL)
37+
# Find OpenCL headers and libraries installed in the system and use them to
38+
# build SYCL runtime.
39+
# WARNING: use with caution, building SYCL runtime with OpenCL implementation
40+
# instead of Khronos ICD loader might cause build and/or portability issues.
41+
option(OpenCL_BUILD_WITH_SYSTEM_SDK OFF)
42+
43+
if( (OpenCL_INCLUDE_DIR AND OpenCL_LIBRARY) OR OpenCL_BUILD_WITH_SYSTEM_SDK)
44+
find_package(OpenCL)
45+
endif()
3846

3947
include(ExternalProject)
4048

4149
if( NOT OpenCL_INCLUDE_DIRS )
42-
message ("OpenCL_INCLUDE_DIRS is missed. Try to download headers from github.com")
50+
message("OpenCL_INCLUDE_DIRS is missed. Will try to download OpenCL headers from github.com")
4351
set(OpenCL_INCLUDE_DIRS "${CMAKE_CURRENT_BINARY_DIR}/OpenCL/inc")
4452
ExternalProject_Add(ocl-headers
4553
GIT_REPOSITORY https://github.com/KhronosGroup/OpenCL-Headers.git
@@ -52,7 +60,6 @@ if( NOT OpenCL_INCLUDE_DIRS )
5260
COMMENT "Downloading OpenCL headers."
5361
)
5462
else()
55-
message("OpenCL header have been found under ${OpenCL_INCLUDE_DIRS}.")
5663
add_custom_target( ocl-headers ALL
5764
DEPENDS ${OpenCL_INCLUDE_DIRS}
5865
COMMAND ${CMAKE_COMMAND} -E copy_directory ${OpenCL_INCLUDE_DIRS}/CL ${dst_dir}/CL
@@ -61,22 +68,32 @@ else()
6168
endif()
6269

6370
if( NOT OpenCL_LIBRARIES )
64-
message("OpenCL_LIBRARIES is missed. Try to build from GitHub sources.")
65-
set(OpenCL_LIBRARIES "${LLVM_LIBRARY_OUTPUT_INTDIR}/libOpenCL.so")
71+
message("OpenCL_LIBRARIES is missed. Will try to download OpenCL ICD Loader from github.com")
72+
if(MSVC)
73+
set(OpenCL_LIBRARIES
74+
"${LLVM_LIBRARY_OUTPUT_INTDIR}/${CMAKE_STATIC_LIBRARY_PREFIX}OpenCL${CMAKE_STATIC_LIBRARY_SUFFIX}")
75+
set(OPENCL_ICD_LOADER_WDK "-DOPENCL_ICD_LOADER_REQUIRE_WDK=OFF")
76+
else()
77+
set(OpenCL_LIBRARIES
78+
"${LLVM_LIBRARY_OUTPUT_INTDIR}/${CMAKE_SHARED_LIBRARY_PREFIX}OpenCL${CMAKE_SHARED_LIBRARY_SUFFIX}")
79+
set(OPENCL_ICD_LOADER_WDK "")
80+
endif()
6681
file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/icd_build)
6782
ExternalProject_Add(ocl-icd
6883
GIT_REPOSITORY https://github.com/KhronosGroup/OpenCL-ICD-Loader.git
6984
GIT_TAG origin/master
7085
SOURCE_DIR "${CMAKE_CURRENT_BINARY_DIR}/OpenCL/icd"
7186
BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/icd_build"
72-
CONFIGURE_COMMAND ${CMAKE_COMMAND} "${CMAKE_CURRENT_BINARY_DIR}/OpenCL/icd" -DCMAKE_INSTALL_LIBDIR:PATH=lib -DCMAKE_INSTALL_PREFIX=${LLVM_BINARY_DIR}
73-
BUILD_COMMAND make C_INCLUDE_PATH=${CMAKE_CURRENT_BINARY_DIR}/OpenCL/inc
74-
INSTALL_COMMAND make install
87+
CMAKE_ARGS -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
88+
-DCMAKE_MAKE_PROGRAM=${CMAKE_MAKE_PROGRAM}
89+
-DOPENCL_ICD_LOADER_HEADERS_DIR=${CMAKE_CURRENT_BINARY_DIR}/OpenCL/inc
90+
-DCMAKE_INSTALL_PREFIX=${LLVM_BINARY_DIR}
91+
-DCMAKE_INSTALL_LIBDIR:PATH=lib
92+
${OPENCL_ICD_LOADER_WDK}
7593
STEP_TARGETS configure,build,install
7694
DEPENDS ocl-headers
7795
)
7896
else()
79-
message("OpenCL loader has been found: ${OpenCL_LIBRARIES}.")
8097
file(GLOB ICD_LOADER_SRC "${OpenCL_LIBRARIES}*")
8198
file(COPY ${ICD_LOADER_SRC} DESTINATION ${LLVM_LIBRARY_OUTPUT_INTDIR})
8299
add_custom_target(ocl-icd DEPENDS ${OpenCL_LIBRARIES} COMMENT "Copying OpenCL ICD Loader ...")

0 commit comments

Comments
 (0)