@@ -34,12 +34,20 @@ set(CLANG_VERSION "${CLANG_VERSION_MAJOR}.${CLANG_VERSION_MINOR}.${CLANG_VERSION
34
34
set (LLVM_INST_INC_DIRECTORY "lib${LLVM_LIBDIR_SUFFIX} /clang/${CLANG_VERSION} /include" )
35
35
set (dst_dir ${LLVM_LIBRARY_OUTPUT_INTDIR} /clang/${CLANG_VERSION}/include )
36
36
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 ()
38
46
39
47
include (ExternalProject )
40
48
41
49
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" )
43
51
set (OpenCL_INCLUDE_DIRS "${CMAKE_CURRENT_BINARY_DIR} /OpenCL/inc" )
44
52
ExternalProject_Add (ocl-headers
45
53
GIT_REPOSITORY https://github.com/KhronosGroup/OpenCL-Headers.git
@@ -52,7 +60,6 @@ if( NOT OpenCL_INCLUDE_DIRS )
52
60
COMMENT "Downloading OpenCL headers."
53
61
)
54
62
else ()
55
- message ("OpenCL header have been found under ${OpenCL_INCLUDE_DIRS} ." )
56
63
add_custom_target ( ocl-headers ALL
57
64
DEPENDS ${OpenCL_INCLUDE_DIRS}
58
65
COMMAND ${CMAKE_COMMAND} -E copy_directory ${OpenCL_INCLUDE_DIRS} /CL ${dst_dir} /CL
@@ -61,22 +68,32 @@ else()
61
68
endif ()
62
69
63
70
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 ()
66
81
file (MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} /icd_build )
67
82
ExternalProject_Add (ocl-icd
68
83
GIT_REPOSITORY https://github.com/KhronosGroup/OpenCL-ICD-Loader.git
69
84
GIT_TAG origin/master
70
85
SOURCE_DIR "${CMAKE_CURRENT_BINARY_DIR} /OpenCL/icd"
71
86
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}
75
93
STEP_TARGETS configure,build,install
76
94
DEPENDS ocl-headers
77
95
)
78
96
else ()
79
- message ("OpenCL loader has been found: ${OpenCL_LIBRARIES} ." )
80
97
file (GLOB ICD_LOADER_SRC "${OpenCL_LIBRARIES} *" )
81
98
file (COPY ${ICD_LOADER_SRC} DESTINATION ${LLVM_LIBRARY_OUTPUT_INTDIR} )
82
99
add_custom_target (ocl-icd DEPENDS ${OpenCL_LIBRARIES} COMMENT "Copying OpenCL ICD Loader ..." )
0 commit comments