@@ -5,8 +5,10 @@ if(CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR)
55endif ()
66
77set (WEBVULKAN_TEST_THIRDPARTY_DIR "${CMAKE_CURRENT_LIST_DIR } /../.3rdparty/tests" CACHE PATH "Test-only third-party root directory" )
8+ set (WEBVULKAN_THIRDPARTY_STATE_DIR "${CMAKE_CURRENT_LIST_DIR } /../.3rdparty/.state" CACHE PATH "State directory for fetched third-party metadata" )
89set (WEBVULKAN_VOLK_GIT_URL "https://github.com/zeux/volk.git" CACHE STRING "volk git repository URL for smoke tests" )
910set (WEBVULKAN_VOLK_GIT_REF "1.4.304" CACHE STRING "Pinned volk git ref for smoke tests" )
11+ set (WEBVULKAN_TEST_VOLK_SOURCE_DIR "${WEBVULKAN_TEST_THIRDPARTY_DIR} /volk" CACHE PATH "Path where volk is cloned for smoke tests" )
1012
1113set (WEBVULKAN_TEST_MODE "auto" CACHE STRING "Test mode: auto, in-tree, or package" )
1214set_property (CACHE WEBVULKAN_TEST_MODE PROPERTY STRINGS auto in-tree package)
@@ -26,7 +28,13 @@ if(NOT COMMAND CPMAddPackage)
2628 if (NOT DEFINED WEBVULKAN_ALLOW_DEP_UPDATES)
2729 set (WEBVULKAN_ALLOW_DEP_UPDATES OFF CACHE BOOL "Allow dependency git update during configure" )
2830 endif ()
29- if (WEBVULKAN_ALLOW_DEP_UPDATES)
31+ set (_webvulkan_allow_dep_updates "${WEBVULKAN_ALLOW_DEP_UPDATES} " )
32+ if (NOT DEFINED WEBVULKAN_DEPS_EDITABLE)
33+ set (WEBVULKAN_DEPS_EDITABLE OFF CACHE BOOL "Use editable local dependency checkouts without automatic git reset/update" )
34+ endif ()
35+ if (WEBVULKAN_DEPS_EDITABLE)
36+ set (CPM_UPDATE_DISCONNECTED ON CACHE BOOL "CPM update disconnected mode" FORCE )
37+ elseif (_webvulkan_allow_dep_updates)
3038 set (CPM_UPDATE_DISCONNECTED OFF CACHE BOOL "CPM update disconnected mode" FORCE )
3139 else ()
3240 set (CPM_UPDATE_DISCONNECTED ON CACHE BOOL "CPM update disconnected mode" FORCE )
@@ -95,13 +103,31 @@ if(NOT SUBBUILD_GENERATOR)
95103 message (FATAL_ERROR "No CMake generator is available for wasm smoke sub-build" )
96104endif ()
97105
98- CPMAddPackage (
99- NAME webvulkan_volk
100- GIT_REPOSITORY "${WEBVULKAN_VOLK_GIT_URL} "
101- GIT_TAG "${WEBVULKAN_VOLK_GIT_REF} "
102- GIT_SHALLOW TRUE
103- DOWNLOAD_ONLY YES
104- )
106+ if (NOT COMMAND webvulkan_fetch_git_source)
107+ set (_webvulkan_root_fetch_sources "${CMAKE_CURRENT_LIST_DIR } /../cmake/FetchWebVulkanSources.cmake" )
108+ if (EXISTS "${_webvulkan_root_fetch_sources} " )
109+ include ("${_webvulkan_root_fetch_sources} " )
110+ endif ()
111+ endif ()
112+
113+ if (COMMAND webvulkan_fetch_git_source)
114+ webvulkan_fetch_git_source (webvulkan_volk
115+ REPOSITORY "${WEBVULKAN_VOLK_GIT_URL} "
116+ TAG "${WEBVULKAN_VOLK_GIT_REF} "
117+ SOURCE_DIR "${WEBVULKAN_TEST_VOLK_SOURCE_DIR } "
118+ )
119+ set (webvulkan_volk_SOURCE_DIR "${WEBVULKAN_TEST_VOLK_SOURCE_DIR } " )
120+ else ()
121+ CPMAddPackage (
122+ NAME webvulkan_volk
123+ GIT_REPOSITORY "${WEBVULKAN_VOLK_GIT_URL} "
124+ GIT_TAG "${WEBVULKAN_VOLK_GIT_REF} "
125+ GIT_SHALLOW TRUE
126+ GIT_REMOTE_UPDATE_STRATEGY CHECKOUT
127+ SOURCE_DIR "${WEBVULKAN_TEST_VOLK_SOURCE_DIR } "
128+ DOWNLOAD_ONLY YES
129+ )
130+ endif ()
105131set (_webvulkan_volk_include_dir "${webvulkan_volk_SOURCE_DIR } " )
106132set (_webvulkan_volk_source "${webvulkan_volk_SOURCE_DIR } /volk.c" )
107133set (_webvulkan_volk_header "${webvulkan_volk_SOURCE_DIR } /volk.h" )
0 commit comments