@@ -49,15 +49,7 @@ if (Vulkan_FOUND)
49
49
../../include/ggml-vulkan.h
50
50
)
51
51
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 "" )
61
53
62
54
# Test all shader extensions
63
55
test_shader_extension_support (
@@ -136,42 +128,39 @@ if (Vulkan_FOUND)
136
128
set (HOST_CMAKE_TOOLCHAIN_FILE "" )
137
129
endif ()
138
130
139
- # Always use ExternalProject_Add approach
140
131
include (ExternalProject )
141
132
142
- # Add toolchain file if cross-compiling
143
133
if (CMAKE_CROSSCOMPILING )
144
134
list (APPEND VULKAN_SHADER_GEN_CMAKE_ARGS -DCMAKE_TOOLCHAIN_FILE=${HOST_CMAKE_TOOLCHAIN_FILE} )
145
135
message (STATUS "vulkan-shaders-gen toolchain file: ${HOST_CMAKE_TOOLCHAIN_FILE} " )
146
136
endif ()
147
137
148
- # Native build through ExternalProject_Add
149
138
ExternalProject_Add (
150
139
vulkan-shaders-gen
151
140
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>
156
148
)
157
149
ExternalProject_Add_StepTargets (vulkan-shaders-gen build install )
158
150
159
151
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" )
168
158
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" )
171
160
172
161
add_custom_command (
173
162
OUTPUT ${_ggml_vk_header}
174
- ${_ggml_vk_source}
163
+ ${_ggml_vk_source}
175
164
176
165
COMMAND ${_ggml_vk_genshaders_cmd}
177
166
--glslc ${Vulkan_GLSLC_EXECUTABLE}
@@ -181,7 +170,11 @@ if (Vulkan_FOUND)
181
170
--target-cpp ${_ggml_vk_source}
182
171
--no-clean
183
172
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
+
185
178
COMMENT "Generate vulkan shaders"
186
179
)
187
180
0 commit comments