Spaces:
Running
Running
bandoti
commited on
Commit
·
bc8b1f7
1
Parent(s):
f95736f
cmake: clean up external project logic for vulkan-shaders-gen (llama/14179)
Browse files* Remove install step for vulkan-shaders-gen
* Add install step to normalize msvc with make
* Regenerate modified shaders at build-time
ggml/src/ggml-vulkan/CMakeLists.txt
CHANGED
|
@@ -49,15 +49,7 @@ if (Vulkan_FOUND)
|
|
| 49 |
../../include/ggml-vulkan.h
|
| 50 |
)
|
| 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()
|
| 61 |
|
| 62 |
# Test all shader extensions
|
| 63 |
test_shader_extension_support(
|
|
@@ -136,42 +128,39 @@ if (Vulkan_FOUND)
|
|
| 136 |
set(HOST_CMAKE_TOOLCHAIN_FILE "")
|
| 137 |
endif()
|
| 138 |
|
| 139 |
-
# Always use ExternalProject_Add approach
|
| 140 |
include(ExternalProject)
|
| 141 |
|
| 142 |
-
# Add toolchain file if cross-compiling
|
| 143 |
if (CMAKE_CROSSCOMPILING)
|
| 144 |
list(APPEND VULKAN_SHADER_GEN_CMAKE_ARGS -DCMAKE_TOOLCHAIN_FILE=${HOST_CMAKE_TOOLCHAIN_FILE})
|
| 145 |
message(STATUS "vulkan-shaders-gen toolchain file: ${HOST_CMAKE_TOOLCHAIN_FILE}")
|
| 146 |
endif()
|
| 147 |
|
| 148 |
-
# Native build through ExternalProject_Add
|
| 149 |
ExternalProject_Add(
|
| 150 |
vulkan-shaders-gen
|
| 151 |
SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/vulkan-shaders
|
| 152 |
-
CMAKE_ARGS
|
| 153 |
-
|
| 154 |
-
|
| 155 |
-
|
|
|
|
|
|
|
|
|
|
| 156 |
)
|
| 157 |
ExternalProject_Add_StepTargets(vulkan-shaders-gen build install)
|
| 158 |
|
| 159 |
set (_ggml_vk_host_suffix $<IF:$<STREQUAL:${CMAKE_HOST_SYSTEM_NAME},Windows>,.exe,>)
|
| 160 |
-
set (
|
| 161 |
-
set (
|
| 162 |
-
set (
|
| 163 |
-
set (
|
| 164 |
-
set (
|
| 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)
|
| 168 |
|
| 169 |
-
|
| 170 |
-
set(_ggml_vk_shader_deps ${_ggml_vk_shader_deps} vulkan-shaders-gen-build vulkan-shaders-gen-install)
|
| 171 |
|
| 172 |
add_custom_command(
|
| 173 |
OUTPUT ${_ggml_vk_header}
|
| 174 |
-
|
| 175 |
|
| 176 |
COMMAND ${_ggml_vk_genshaders_cmd}
|
| 177 |
--glslc ${Vulkan_GLSLC_EXECUTABLE}
|
|
@@ -181,7 +170,11 @@ if (Vulkan_FOUND)
|
|
| 181 |
--target-cpp ${_ggml_vk_source}
|
| 182 |
--no-clean
|
| 183 |
|
| 184 |
-
DEPENDS ${
|
|
|
|
|
|
|
|
|
|
|
|
|
| 185 |
COMMENT "Generate vulkan shaders"
|
| 186 |
)
|
| 187 |
|
|
|
|
| 49 |
../../include/ggml-vulkan.h
|
| 50 |
)
|
| 51 |
|
| 52 |
+
set(VULKAN_SHADER_GEN_CMAKE_ARGS "")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 53 |
|
| 54 |
# Test all shader extensions
|
| 55 |
test_shader_extension_support(
|
|
|
|
| 128 |
set(HOST_CMAKE_TOOLCHAIN_FILE "")
|
| 129 |
endif()
|
| 130 |
|
|
|
|
| 131 |
include(ExternalProject)
|
| 132 |
|
|
|
|
| 133 |
if (CMAKE_CROSSCOMPILING)
|
| 134 |
list(APPEND VULKAN_SHADER_GEN_CMAKE_ARGS -DCMAKE_TOOLCHAIN_FILE=${HOST_CMAKE_TOOLCHAIN_FILE})
|
| 135 |
message(STATUS "vulkan-shaders-gen toolchain file: ${HOST_CMAKE_TOOLCHAIN_FILE}")
|
| 136 |
endif()
|
| 137 |
|
|
|
|
| 138 |
ExternalProject_Add(
|
| 139 |
vulkan-shaders-gen
|
| 140 |
SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/vulkan-shaders
|
| 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>
|
| 148 |
)
|
| 149 |
ExternalProject_Add_StepTargets(vulkan-shaders-gen build install)
|
| 150 |
|
| 151 |
set (_ggml_vk_host_suffix $<IF:$<STREQUAL:${CMAKE_HOST_SYSTEM_NAME},Windows>,.exe,>)
|
| 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")
|
|
|
|
|
|
|
| 158 |
|
| 159 |
+
file(GLOB _ggml_vk_shader_files CONFIGURE_DEPENDS "${_ggml_vk_input_dir}/*.comp")
|
|
|
|
| 160 |
|
| 161 |
add_custom_command(
|
| 162 |
OUTPUT ${_ggml_vk_header}
|
| 163 |
+
${_ggml_vk_source}
|
| 164 |
|
| 165 |
COMMAND ${_ggml_vk_genshaders_cmd}
|
| 166 |
--glslc ${Vulkan_GLSLC_EXECUTABLE}
|
|
|
|
| 170 |
--target-cpp ${_ggml_vk_source}
|
| 171 |
--no-clean
|
| 172 |
|
| 173 |
+
DEPENDS ${_ggml_vk_shader_files}
|
| 174 |
+
vulkan-shaders-gen
|
| 175 |
+
vulkan-shaders-gen-build
|
| 176 |
+
vulkan-shaders-gen-install
|
| 177 |
+
|
| 178 |
COMMENT "Generate vulkan shaders"
|
| 179 |
)
|
| 180 |
|
ggml/src/ggml-vulkan/vulkan-shaders/CMakeLists.txt
CHANGED
|
@@ -25,15 +25,3 @@ add_executable(${TARGET} vulkan-shaders-gen.cpp)
|
|
| 25 |
install(TARGETS ${TARGET} RUNTIME)
|
| 26 |
target_compile_features(${TARGET} PRIVATE cxx_std_17)
|
| 27 |
target_link_libraries(vulkan-shaders-gen PUBLIC Threads::Threads)
|
| 28 |
-
|
| 29 |
-
# Configure output directories for MSVC builds
|
| 30 |
-
if(MSVC)
|
| 31 |
-
# Get the main project's runtime output directory if possible
|
| 32 |
-
if(DEFINED CMAKE_RUNTIME_OUTPUT_DIRECTORY)
|
| 33 |
-
foreach(CONFIG ${CMAKE_CONFIGURATION_TYPES})
|
| 34 |
-
string(TOUPPER ${CONFIG} CONFIG)
|
| 35 |
-
set_target_properties(${TARGET} PROPERTIES
|
| 36 |
-
RUNTIME_OUTPUT_DIRECTORY_${CONFIG} ${CMAKE_RUNTIME_OUTPUT_DIRECTORY})
|
| 37 |
-
endforeach()
|
| 38 |
-
endif()
|
| 39 |
-
endif()
|
|
|
|
| 25 |
install(TARGETS ${TARGET} RUNTIME)
|
| 26 |
target_compile_features(${TARGET} PRIVATE cxx_std_17)
|
| 27 |
target_link_libraries(vulkan-shaders-gen PUBLIC Threads::Threads)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|