@@ -155,6 +155,43 @@ if(EXECUTORCH_BUILD_VGF)
155155 set (VULKAN_HEADERS_PATH ${VULKAN_THIRD_PARTY_PATH} /Vulkan-Headers/include)
156156 set (VOLK_HEADERS_PATH ${VULKAN_THIRD_PARTY_PATH} /volk)
157157
158+ set (_vgf_missing_vulkan_deps "" )
159+
160+ if (NOT EXISTS "${VULKAN_HEADERS_PATH} /vulkan/vulkan.h" )
161+ list (APPEND _vgf_missing_vulkan_deps
162+ "backends/vulkan/third-party/Vulkan-Headers/include/vulkan/vulkan.h"
163+ )
164+ endif ()
165+
166+ if (NOT EXISTS "${VOLK_HEADERS_PATH} /volk.h" )
167+ list (APPEND _vgf_missing_vulkan_deps
168+ "backends/vulkan/third-party/volk/volk.h"
169+ )
170+ endif ()
171+
172+ if (NOT EXISTS "${VOLK_HEADERS_PATH} /volk.c" )
173+ list (APPEND _vgf_missing_vulkan_deps
174+ "backends/vulkan/third-party/volk/volk.c"
175+ )
176+ endif ()
177+
178+ if (_vgf_missing_vulkan_deps)
179+ string (REPLACE ";" "\n - " _vgf_missing_vulkan_deps_text
180+ "${_vgf_missing_vulkan_deps} "
181+ )
182+ message (
183+ FATAL_ERROR
184+ "EXECUTORCH_BUILD_VGF=ON requires Vulkan-Headers and volk from "
185+ "backends/vulkan/third-party, even when EXECUTORCH_BUILD_VULKAN=OFF. "
186+ "Missing:\n "
187+ " - ${_vgf_missing_vulkan_deps_text} \n "
188+ "Run from the repository root:\n "
189+ " git submodule update --init "
190+ "backends/vulkan/third-party/Vulkan-Headers "
191+ "backends/vulkan/third-party/volk"
192+ )
193+ endif ()
194+
158195 if (EXISTS
159196 "${EXECUTORCH_ROOT} /examples/arm/arm-scratch/ml-sdk-for-vulkan-manifest/"
160197 )
@@ -246,6 +283,12 @@ if(EXECUTORCH_BUILD_VGF)
246283
247284 target_link_libraries (vgf_backend PRIVATE executorch_core )
248285 target_link_libraries (vgf_backend PRIVATE vgf )
286+
287+ # When VGF compiles volk.c itself, link libdl for dlopen/dlsym
288+ if (NOT EXECUTORCH_BUILD_VULKAN)
289+ target_link_libraries (vgf_backend PRIVATE ${CMAKE_DL_LIBS } )
290+ endif ()
291+
249292 executorch_target_link_options_shared_lib (vgf_backend )
250293
251294 # end config for VGF builds
0 commit comments