Skip to content

Commit bf8493c

Browse files
[SYCL][NFC] Add an option to disable updates of external projects (#1891)
`sycl` subproject uses several "ExternalProject"s [1] within it to get some underlying components required for build and execution, like OpenCL Headers, OpenCL ICD and L0 Loader. However, being forced to perform updates of them each time when cmake is re-run might be annoying in some networks. Added possibility to disable that auto-update: `SYCL_EXTERNAL_PROJECTS_SKIP_AUTO_UPDATE` option was introduced, which is inteded to control all external projects used in `sycl` subprojects. Also, added a few more variables to provide control over each particular project. [1]: https://cmake.org/cmake/help/v3.13/module/ExternalProject.html
1 parent 8eafd4e commit bf8493c

File tree

2 files changed

+26
-3
lines changed

2 files changed

+26
-3
lines changed

sycl/CMakeLists.txt

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -79,13 +79,26 @@ endif()
7979

8080
include(ExternalProject)
8181

82+
# By default, whenever cmake is re-run, the external project's sources will be
83+
# updated, which might be annoying - let's have a possibility to disable that as
84+
# not every external project which is used here is being updated often
85+
# Single toggle to control all external projects
86+
option(SYCL_EXTERNAL_PROJECTS_SKIP_AUTO_UPDATE
87+
"Perform automatic update step for external projects (OpenCL Headers, OpenCL ICD, etc.)" OFF)
88+
# More precise controls for each particular external project are documented
89+
# near each ExternalProject_Add
90+
8291
if( NOT OpenCL_INCLUDE_DIRS )
8392
message(STATUS "OpenCL_INCLUDE_DIRS is missing. Will try to download OpenCL headers from github.com")
8493
set(OpenCL_INCLUDE_DIRS "${CMAKE_CURRENT_BINARY_DIR}/OpenCL/inc")
94+
if (NOT DEFINED SYCL_EP_OCL_HEADERS_SKIP_AUTO_UPDATE)
95+
set(SYCL_EP_OCL_HEADERS_SKIP_AUTO_UPDATE ${SYCL_EXTERNAL_PROJECTS_SKIP_AUTO_UPDATE})
96+
endif()
8597
ExternalProject_Add(ocl-headers
8698
GIT_REPOSITORY https://github.com/KhronosGroup/OpenCL-Headers.git
8799
GIT_TAG origin/master
88-
SOURCE_DIR "${CMAKE_CURRENT_BINARY_DIR}/OpenCL/inc"
100+
UPDATE_DISCONNECTED ${SYCL_EP_OCL_HEADERS_SKIP_AUTO_UPDATE}
101+
SOURCE_DIR ${OpenCL_INCLUDE_DIRS}
89102
CONFIGURE_COMMAND ""
90103
BUILD_COMMAND ${CMAKE_COMMAND} -E copy_directory ${OpenCL_INCLUDE_DIRS}/CL ${SYCL_INCLUDE_BUILD_DIR}/CL
91104
INSTALL_COMMAND ""
@@ -118,10 +131,15 @@ if( NOT OpenCL_LIBRARIES )
118131
list(APPEND AUX_CMAKE_FLAGS -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER})
119132
endif()
120133
file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/icd_build)
134+
set(OpenCL_ICD_LOADER_SOURCE_DIR "${CMAKE_CURRENT_BINARY_DIR}/OpenCL/icd")
135+
if (NOT DEFINED SYCL_EP_OCL_ICD_SKIP_AUTO_UPDATE)
136+
set(SYCL_EP_OCL_ICD_SKIP_AUTO_UPDATE ${SYCL_EXTERNAL_PROJECTS_SKIP_AUTO_UPDATE})
137+
endif()
121138
ExternalProject_Add(ocl-icd
122139
GIT_REPOSITORY https://github.com/KhronosGroup/OpenCL-ICD-Loader.git
123140
GIT_TAG origin/master
124-
SOURCE_DIR "${CMAKE_CURRENT_BINARY_DIR}/OpenCL/icd"
141+
UPDATE_DISCONNECTED ${SYCL_EP_OCL_ICD_SKIP_AUTO_UPDATE}
142+
SOURCE_DIR ${OpenCL_ICD_LOADER_SOURCE_DIR}
125143
BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/icd_build"
126144
INSTALL_DIR "${CMAKE_CURRENT_BINARY_DIR}/icd_install"
127145
CMAKE_ARGS -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}

sycl/plugins/level_zero/CMakeLists.txt

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,15 @@ if (NOT DEFINED L0_LIBRARY OR NOT DEFINED L0_INCLUDE_DIR)
1717
list(APPEND AUX_CMAKE_FLAGS -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER})
1818
endif()
1919
file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/l0_loader_build)
20+
set(L0_LOADER_SOURCE_DIR "${CMAKE_CURRENT_BINARY_DIR}/Level0/l0_loader")
21+
if (NOT DEFINED SYCL_EP_L0_LOADER_SKIP_AUTO_UPDATE)
22+
set(SYCL_EP_L0_LOADER_SKIP_AUTO_UPDATE ${SYCL_EXTERNAL_PROJECTS_SKIP_AUTO_UPDATE})
23+
endif()
2024
ExternalProject_Add(l0-loader
2125
GIT_REPOSITORY https://github.com/oneapi-src/level-zero.git
2226
GIT_TAG origin/master
23-
SOURCE_DIR "${CMAKE_CURRENT_BINARY_DIR}/Level0/l0_loader"
27+
UPDATE_DISCONNECTED ${SYCL_EP_L0_LOADER_SKIP_AUTO_UPDATE}
28+
SOURCE_DIR ${L0_LOADER_SOURCE_DIR}
2429
BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/l0_loader_build"
2530
INSTALL_DIR "${CMAKE_CURRENT_BINARY_DIR}/l0_loader_install"
2631
CMAKE_ARGS -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}

0 commit comments

Comments
 (0)