@@ -49,15 +49,7 @@ if (Vulkan_FOUND)
4949 ../../include /ggml-vulkan.h
5050 )
5151
52- set (VULKAN_SHADER_GEN_CMAKE_ARGS
53- -DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR}
54- -DCMAKE_RUNTIME_OUTPUT_DIRECTORY=${CMAKE_RUNTIME_OUTPUT_DIRECTORY}
55- )
56-
57- set (VULKAN_SHADER_GEN_CMAKE_BUILD_ARGS "" )
58- if (CMAKE_BUILD_TYPE AND CMAKE_BUILD_TYPE MATCHES "Debug|Release|MinSizeRel|RelWithDebInfo" )
59- list (APPEND VULKAN_SHADER_GEN_CMAKE_BUILD_ARGS --config=${CMAKE_BUILD_TYPE} )
60- endif ()
52+ set (VULKAN_SHADER_GEN_CMAKE_ARGS "" )
6153
6254 # Test all shader extensions
6355 test_shader_extension_support(
@@ -136,42 +128,39 @@ if (Vulkan_FOUND)
136128 set (HOST_CMAKE_TOOLCHAIN_FILE "" )
137129 endif ()
138130
139- # Always use ExternalProject_Add approach
140131 include (ExternalProject)
141132
142- # Add toolchain file if cross-compiling
143133 if (CMAKE_CROSSCOMPILING )
144134 list (APPEND VULKAN_SHADER_GEN_CMAKE_ARGS -DCMAKE_TOOLCHAIN_FILE=${HOST_CMAKE_TOOLCHAIN_FILE} )
145135 message (STATUS "vulkan-shaders-gen toolchain file: ${HOST_CMAKE_TOOLCHAIN_FILE} " )
146136 endif ()
147137
148- # Native build through ExternalProject_Add
149138 ExternalProject_Add(
150139 vulkan-shaders-gen
151140 SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR} /vulkan-shaders
152- CMAKE_ARGS ${VULKAN_SHADER_GEN_CMAKE_ARGS}
153- BUILD_COMMAND ${CMAKE_COMMAND} --build . ${VULKAN_SHADER_GEN_CMAKE_BUILD_ARGS}
154- INSTALL_COMMAND ${CMAKE_COMMAND} --install .
155- INSTALL_DIR ${CMAKE_BINARY_DIR}
141+ CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR} /$<CONFIG>
142+ -DCMAKE_INSTALL_BINDIR=.
143+ -DCMAKE_BUILD_TYPE=$<CONFIG>
144+ ${VULKAN_SHADER_GEN_CMAKE_ARGS}
145+
146+ BUILD_COMMAND ${CMAKE_COMMAND} --build . --config $<CONFIG>
147+ INSTALL_COMMAND ${CMAKE_COMMAND} --install . --config $<CONFIG>
156148 )
157149 ExternalProject_Add_StepTargets(vulkan-shaders-gen build install )
158150
159151 set (_ggml_vk_host_suffix $<IF:$<STREQUAL :${CMAKE_HOST_SYSTEM_NAME} ,Windows>,.exe,>)
160- set (_ggml_vk_genshaders_cmd ${CMAKE_RUNTIME_OUTPUT_DIRECTORY} /vulkan-shaders-gen${_ggml_vk_host_suffix} )
161- set (_ggml_vk_header ${CMAKE_CURRENT_BINARY_DIR} /ggml-vulkan-shaders.hpp)
162- set (_ggml_vk_source ${CMAKE_CURRENT_BINARY_DIR} /ggml-vulkan-shaders.cpp)
163- set (_ggml_vk_input_dir ${CMAKE_CURRENT_SOURCE_DIR} /vulkan-shaders)
164- set (_ggml_vk_output_dir ${CMAKE_CURRENT_BINARY_DIR} /vulkan-shaders.spv)
165-
166- file (GLOB _ggml_vk_shader_deps "${_ggml_vk_input_dir} /*.comp" )
167- set (_ggml_vk_shader_deps ${_ggml_vk_shader_deps} vulkan-shaders-gen)
152+ set (_ggml_vk_genshaders_dir "${CMAKE_BINARY_DIR} /$<CONFIG>" )
153+ set (_ggml_vk_genshaders_cmd "${_ggml_vk_genshaders_dir} /vulkan-shaders-gen${_ggml_vk_host_suffix} " )
154+ set (_ggml_vk_header "${CMAKE_CURRENT_BINARY_DIR} /ggml-vulkan-shaders.hpp" )
155+ set (_ggml_vk_source "${CMAKE_CURRENT_BINARY_DIR} /ggml-vulkan-shaders.cpp" )
156+ set (_ggml_vk_input_dir "${CMAKE_CURRENT_SOURCE_DIR} /vulkan-shaders" )
157+ set (_ggml_vk_output_dir "${CMAKE_CURRENT_BINARY_DIR} /vulkan-shaders.spv" )
168158
169- # Add build and install dependencies for all builds
170- set (_ggml_vk_shader_deps ${_ggml_vk_shader_deps} vulkan-shaders-gen-build vulkan-shaders-gen-install )
159+ file (GLOB _ggml_vk_shader_files CONFIGURE_DEPENDS "${_ggml_vk_input_dir} /*.comp" )
171160
172161 add_custom_command (
173162 OUTPUT ${_ggml_vk_header}
174- ${_ggml_vk_source}
163+ ${_ggml_vk_source}
175164
176165 COMMAND ${_ggml_vk_genshaders_cmd}
177166 --glslc ${Vulkan_GLSLC_EXECUTABLE}
@@ -181,7 +170,11 @@ if (Vulkan_FOUND)
181170 --target -cpp ${_ggml_vk_source}
182171 --no -clean
183172
184- DEPENDS ${_ggml_vk_shader_deps}
173+ DEPENDS ${_ggml_vk_shader_files}
174+ vulkan-shaders-gen
175+ vulkan-shaders-gen-build
176+ vulkan-shaders-gen-install
177+
185178 COMMENT "Generate vulkan shaders"
186179 )
187180
0 commit comments