mirror of
https://github.com/ggerganov/whisper.cpp.git
synced 2025-06-22 08:30:07 +00:00
cmake: clean up external project logic for vulkan-shaders-gen (llama/14179)
* Remove install step for vulkan-shaders-gen * Add install step to normalize msvc with make * Regenerate modified shaders at build-time
This commit is contained in:
@ -49,15 +49,7 @@ if (Vulkan_FOUND)
|
|||||||
../../include/ggml-vulkan.h
|
../../include/ggml-vulkan.h
|
||||||
)
|
)
|
||||||
|
|
||||||
set(VULKAN_SHADER_GEN_CMAKE_ARGS
|
set(VULKAN_SHADER_GEN_CMAKE_ARGS "")
|
||||||
-DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR}
|
|
||||||
-DCMAKE_RUNTIME_OUTPUT_DIRECTORY=${CMAKE_RUNTIME_OUTPUT_DIRECTORY}
|
|
||||||
)
|
|
||||||
|
|
||||||
set(VULKAN_SHADER_GEN_CMAKE_BUILD_ARGS "")
|
|
||||||
if (CMAKE_BUILD_TYPE AND CMAKE_BUILD_TYPE MATCHES "Debug|Release|MinSizeRel|RelWithDebInfo")
|
|
||||||
list(APPEND VULKAN_SHADER_GEN_CMAKE_BUILD_ARGS --config=${CMAKE_BUILD_TYPE})
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# Test all shader extensions
|
# Test all shader extensions
|
||||||
test_shader_extension_support(
|
test_shader_extension_support(
|
||||||
@ -136,38 +128,35 @@ if (Vulkan_FOUND)
|
|||||||
set(HOST_CMAKE_TOOLCHAIN_FILE "")
|
set(HOST_CMAKE_TOOLCHAIN_FILE "")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# Always use ExternalProject_Add approach
|
|
||||||
include(ExternalProject)
|
include(ExternalProject)
|
||||||
|
|
||||||
# Add toolchain file if cross-compiling
|
|
||||||
if (CMAKE_CROSSCOMPILING)
|
if (CMAKE_CROSSCOMPILING)
|
||||||
list(APPEND VULKAN_SHADER_GEN_CMAKE_ARGS -DCMAKE_TOOLCHAIN_FILE=${HOST_CMAKE_TOOLCHAIN_FILE})
|
list(APPEND VULKAN_SHADER_GEN_CMAKE_ARGS -DCMAKE_TOOLCHAIN_FILE=${HOST_CMAKE_TOOLCHAIN_FILE})
|
||||||
message(STATUS "vulkan-shaders-gen toolchain file: ${HOST_CMAKE_TOOLCHAIN_FILE}")
|
message(STATUS "vulkan-shaders-gen toolchain file: ${HOST_CMAKE_TOOLCHAIN_FILE}")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# Native build through ExternalProject_Add
|
|
||||||
ExternalProject_Add(
|
ExternalProject_Add(
|
||||||
vulkan-shaders-gen
|
vulkan-shaders-gen
|
||||||
SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/vulkan-shaders
|
SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/vulkan-shaders
|
||||||
CMAKE_ARGS ${VULKAN_SHADER_GEN_CMAKE_ARGS}
|
CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR}/$<CONFIG>
|
||||||
BUILD_COMMAND ${CMAKE_COMMAND} --build . ${VULKAN_SHADER_GEN_CMAKE_BUILD_ARGS}
|
-DCMAKE_INSTALL_BINDIR=.
|
||||||
INSTALL_COMMAND ${CMAKE_COMMAND} --install .
|
-DCMAKE_BUILD_TYPE=$<CONFIG>
|
||||||
INSTALL_DIR ${CMAKE_BINARY_DIR}
|
${VULKAN_SHADER_GEN_CMAKE_ARGS}
|
||||||
|
|
||||||
|
BUILD_COMMAND ${CMAKE_COMMAND} --build . --config $<CONFIG>
|
||||||
|
INSTALL_COMMAND ${CMAKE_COMMAND} --install . --config $<CONFIG>
|
||||||
)
|
)
|
||||||
ExternalProject_Add_StepTargets(vulkan-shaders-gen build install)
|
ExternalProject_Add_StepTargets(vulkan-shaders-gen build install)
|
||||||
|
|
||||||
set (_ggml_vk_host_suffix $<IF:$<STREQUAL:${CMAKE_HOST_SYSTEM_NAME},Windows>,.exe,>)
|
set (_ggml_vk_host_suffix $<IF:$<STREQUAL:${CMAKE_HOST_SYSTEM_NAME},Windows>,.exe,>)
|
||||||
set (_ggml_vk_genshaders_cmd ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/vulkan-shaders-gen${_ggml_vk_host_suffix})
|
set (_ggml_vk_genshaders_dir "${CMAKE_BINARY_DIR}/$<CONFIG>")
|
||||||
set (_ggml_vk_header ${CMAKE_CURRENT_BINARY_DIR}/ggml-vulkan-shaders.hpp)
|
set (_ggml_vk_genshaders_cmd "${_ggml_vk_genshaders_dir}/vulkan-shaders-gen${_ggml_vk_host_suffix}")
|
||||||
set (_ggml_vk_source ${CMAKE_CURRENT_BINARY_DIR}/ggml-vulkan-shaders.cpp)
|
set (_ggml_vk_header "${CMAKE_CURRENT_BINARY_DIR}/ggml-vulkan-shaders.hpp")
|
||||||
set (_ggml_vk_input_dir ${CMAKE_CURRENT_SOURCE_DIR}/vulkan-shaders)
|
set (_ggml_vk_source "${CMAKE_CURRENT_BINARY_DIR}/ggml-vulkan-shaders.cpp")
|
||||||
set (_ggml_vk_output_dir ${CMAKE_CURRENT_BINARY_DIR}/vulkan-shaders.spv)
|
set (_ggml_vk_input_dir "${CMAKE_CURRENT_SOURCE_DIR}/vulkan-shaders")
|
||||||
|
set (_ggml_vk_output_dir "${CMAKE_CURRENT_BINARY_DIR}/vulkan-shaders.spv")
|
||||||
|
|
||||||
file(GLOB _ggml_vk_shader_deps "${_ggml_vk_input_dir}/*.comp")
|
file(GLOB _ggml_vk_shader_files CONFIGURE_DEPENDS "${_ggml_vk_input_dir}/*.comp")
|
||||||
set (_ggml_vk_shader_deps ${_ggml_vk_shader_deps} vulkan-shaders-gen)
|
|
||||||
|
|
||||||
# Add build and install dependencies for all builds
|
|
||||||
set(_ggml_vk_shader_deps ${_ggml_vk_shader_deps} vulkan-shaders-gen-build vulkan-shaders-gen-install)
|
|
||||||
|
|
||||||
add_custom_command(
|
add_custom_command(
|
||||||
OUTPUT ${_ggml_vk_header}
|
OUTPUT ${_ggml_vk_header}
|
||||||
@ -181,7 +170,11 @@ if (Vulkan_FOUND)
|
|||||||
--target-cpp ${_ggml_vk_source}
|
--target-cpp ${_ggml_vk_source}
|
||||||
--no-clean
|
--no-clean
|
||||||
|
|
||||||
DEPENDS ${_ggml_vk_shader_deps}
|
DEPENDS ${_ggml_vk_shader_files}
|
||||||
|
vulkan-shaders-gen
|
||||||
|
vulkan-shaders-gen-build
|
||||||
|
vulkan-shaders-gen-install
|
||||||
|
|
||||||
COMMENT "Generate vulkan shaders"
|
COMMENT "Generate vulkan shaders"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -25,15 +25,3 @@ add_executable(${TARGET} vulkan-shaders-gen.cpp)
|
|||||||
install(TARGETS ${TARGET} RUNTIME)
|
install(TARGETS ${TARGET} RUNTIME)
|
||||||
target_compile_features(${TARGET} PRIVATE cxx_std_17)
|
target_compile_features(${TARGET} PRIVATE cxx_std_17)
|
||||||
target_link_libraries(vulkan-shaders-gen PUBLIC Threads::Threads)
|
target_link_libraries(vulkan-shaders-gen PUBLIC Threads::Threads)
|
||||||
|
|
||||||
# Configure output directories for MSVC builds
|
|
||||||
if(MSVC)
|
|
||||||
# Get the main project's runtime output directory if possible
|
|
||||||
if(DEFINED CMAKE_RUNTIME_OUTPUT_DIRECTORY)
|
|
||||||
foreach(CONFIG ${CMAKE_CONFIGURATION_TYPES})
|
|
||||||
string(TOUPPER ${CONFIG} CONFIG)
|
|
||||||
set_target_properties(${TARGET} PROPERTIES
|
|
||||||
RUNTIME_OUTPUT_DIRECTORY_${CONFIG} ${CMAKE_RUNTIME_OUTPUT_DIRECTORY})
|
|
||||||
endforeach()
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
|
Reference in New Issue
Block a user