Skip to content

Commit

Permalink
fix: ggml: fix vulkan-shaders-gen build
Browse files Browse the repository at this point in the history
The vulkan-shaders-gen target was not being built correctly
in case of cross-compilation.
Other outputs need to be built for the cross compile target,
but vulkan-shaders-gen needs to be built for the host.
  • Loading branch information
sparkleholic committed Nov 22, 2024
1 parent 755a9b2 commit e9b3777
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 4 deletions.
33 changes: 30 additions & 3 deletions ggml/src/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -652,16 +652,43 @@ if (GGML_VULKAN)
add_compile_definitions(GGML_VULKAN_RUN_TESTS)
endif()

add_subdirectory(vulkan-shaders)

set (_ggml_vk_genshaders_cmd vulkan-shaders-gen)
if (NOT CMAKE_CROSSCOMPILING)
add_subdirectory(vulkan-shaders)
else()
include(ExternalProject)
# Native build through ExternalProject_Add
ExternalProject_Add(
vulkan-shaders-gen
SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/vulkan-shaders
CMAKE_ARGS -DCMAKE_BUILD_TYPE=Release
-DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR}
-DCMAKE_TOOLCHAIN_FILE=
-DCMAKE_SYSROOT=
-DCMAKE_C_FLAGS=-O2
-DCMAKE_CXX_FLAGS=-O2
-DCMAKE_FIND_ROOT_PATH_MODE_PROGRAM=NEVER
-DCMAKE_FIND_ROOT_PATH_MODE_LIBRARY=NEVER
-DCMAKE_FIND_ROOT_PATH_MODE_INCLUDE=NEVER
-DCMAKE_C_COMPILER=gcc
-DCMAKE_CXX_COMPILER=g++
BUILD_COMMAND ${CMAKE_COMMAND} --build .
INSTALL_COMMAND ${CMAKE_COMMAND} --install .
INSTALL_DIR ${CMAKE_BINARY_DIR}
)
ExternalProject_Add_StepTargets(vulkan-shaders-gen build install)
endif()
set (_ggml_vk_genshaders_cmd ${CMAKE_BINARY_DIR}/bin/vulkan-shaders-gen)
set (_ggml_vk_header ${CMAKE_CURRENT_BINARY_DIR}/ggml-vulkan-shaders.hpp)
set (_ggml_vk_source ${CMAKE_CURRENT_BINARY_DIR}/ggml-vulkan-shaders.cpp)
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")

if (CMAKE_CROSSCOMPILING)
set(_ggml_vk_shader_deps ${_ggml_vk_shader_deps} vulkan-shaders-gen-build vulkan-shaders-gen-install)
endif()

add_custom_command(
OUTPUT ${_ggml_vk_header}
${_ggml_vk_source}
Expand Down
9 changes: 8 additions & 1 deletion ggml/src/vulkan-shaders/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,7 +1,14 @@
cmake_minimum_required(VERSION 3.12)
project(vulkan-shaders-gen C CXX)

find_package (Threads REQUIRED)

set(TARGET vulkan-shaders-gen)
add_executable(${TARGET} vulkan-shaders-gen.cpp)
install(TARGETS ${TARGET} RUNTIME)
if (${CMAKE_RUNTIME_OUTPUT_DIRECTORY})
install(TARGETS ${TARGET} RUNTIME)
else()
install(TARGETS ${TARGET} RUNTIME DESTINATION bin)
endif()
target_compile_features(${TARGET} PRIVATE cxx_std_11)
target_link_libraries(vulkan-shaders-gen PUBLIC Threads::Threads)

0 comments on commit e9b3777

Please sign in to comment.