Skip to content

Commit e9b3777

Browse files
committed
fix: ggml: fix vulkan-shaders-gen build
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.
1 parent 755a9b2 commit e9b3777

File tree

2 files changed

+38
-4
lines changed

2 files changed

+38
-4
lines changed

ggml/src/CMakeLists.txt

Lines changed: 30 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -652,16 +652,43 @@ if (GGML_VULKAN)
652652
add_compile_definitions(GGML_VULKAN_RUN_TESTS)
653653
endif()
654654

655-
add_subdirectory(vulkan-shaders)
656-
657-
set (_ggml_vk_genshaders_cmd vulkan-shaders-gen)
655+
if (NOT CMAKE_CROSSCOMPILING)
656+
add_subdirectory(vulkan-shaders)
657+
else()
658+
include(ExternalProject)
659+
# Native build through ExternalProject_Add
660+
ExternalProject_Add(
661+
vulkan-shaders-gen
662+
SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/vulkan-shaders
663+
CMAKE_ARGS -DCMAKE_BUILD_TYPE=Release
664+
-DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR}
665+
-DCMAKE_TOOLCHAIN_FILE=
666+
-DCMAKE_SYSROOT=
667+
-DCMAKE_C_FLAGS=-O2
668+
-DCMAKE_CXX_FLAGS=-O2
669+
-DCMAKE_FIND_ROOT_PATH_MODE_PROGRAM=NEVER
670+
-DCMAKE_FIND_ROOT_PATH_MODE_LIBRARY=NEVER
671+
-DCMAKE_FIND_ROOT_PATH_MODE_INCLUDE=NEVER
672+
-DCMAKE_C_COMPILER=gcc
673+
-DCMAKE_CXX_COMPILER=g++
674+
BUILD_COMMAND ${CMAKE_COMMAND} --build .
675+
INSTALL_COMMAND ${CMAKE_COMMAND} --install .
676+
INSTALL_DIR ${CMAKE_BINARY_DIR}
677+
)
678+
ExternalProject_Add_StepTargets(vulkan-shaders-gen build install)
679+
endif()
680+
set (_ggml_vk_genshaders_cmd ${CMAKE_BINARY_DIR}/bin/vulkan-shaders-gen)
658681
set (_ggml_vk_header ${CMAKE_CURRENT_BINARY_DIR}/ggml-vulkan-shaders.hpp)
659682
set (_ggml_vk_source ${CMAKE_CURRENT_BINARY_DIR}/ggml-vulkan-shaders.cpp)
660683
set (_ggml_vk_input_dir ${CMAKE_CURRENT_SOURCE_DIR}/vulkan-shaders)
661684
set (_ggml_vk_output_dir ${CMAKE_CURRENT_BINARY_DIR}/vulkan-shaders.spv)
662685

663686
file(GLOB _ggml_vk_shader_deps "${_ggml_vk_input_dir}/*.comp")
664687

688+
if (CMAKE_CROSSCOMPILING)
689+
set(_ggml_vk_shader_deps ${_ggml_vk_shader_deps} vulkan-shaders-gen-build vulkan-shaders-gen-install)
690+
endif()
691+
665692
add_custom_command(
666693
OUTPUT ${_ggml_vk_header}
667694
${_ggml_vk_source}
Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,14 @@
1+
cmake_minimum_required(VERSION 3.12)
2+
project(vulkan-shaders-gen C CXX)
3+
14
find_package (Threads REQUIRED)
25

36
set(TARGET vulkan-shaders-gen)
47
add_executable(${TARGET} vulkan-shaders-gen.cpp)
5-
install(TARGETS ${TARGET} RUNTIME)
8+
if (${CMAKE_RUNTIME_OUTPUT_DIRECTORY})
9+
install(TARGETS ${TARGET} RUNTIME)
10+
else()
11+
install(TARGETS ${TARGET} RUNTIME DESTINATION bin)
12+
endif()
613
target_compile_features(${TARGET} PRIVATE cxx_std_11)
714
target_link_libraries(vulkan-shaders-gen PUBLIC Threads::Threads)

0 commit comments

Comments
 (0)