Skip to content

Commit bf43351

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 a9a678a commit bf43351

File tree

2 files changed

+38
-4
lines changed

2 files changed

+38
-4
lines changed

ggml/src/ggml-vulkan/CMakeLists.txt

Lines changed: 33 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
cmake_minimum_required(VERSION 3.19)
2+
cmake_policy(SET CMP0114 NEW)
3+
14
find_package(Vulkan COMPONENTS glslc REQUIRED)
25

36
if (Vulkan_FOUND)
@@ -45,16 +48,43 @@ if (Vulkan_FOUND)
4548
add_compile_definitions(GGML_VULKAN_RUN_TESTS)
4649
endif()
4750

48-
add_subdirectory(vulkan-shaders)
49-
50-
set (_ggml_vk_genshaders_cmd vulkan-shaders-gen)
51+
if (NOT CMAKE_CROSSCOMPILING)
52+
add_subdirectory(vulkan-shaders)
53+
else()
54+
include(ExternalProject)
55+
# Native build through ExternalProject_Add
56+
ExternalProject_Add(
57+
vulkan-shaders-gen
58+
SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/vulkan-shaders
59+
CMAKE_ARGS -DCMAKE_BUILD_TYPE=Release
60+
-DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR}
61+
-DCMAKE_TOOLCHAIN_FILE=
62+
-DCMAKE_SYSROOT=
63+
-DCMAKE_C_FLAGS=-O2
64+
-DCMAKE_CXX_FLAGS=-O2
65+
-DCMAKE_FIND_ROOT_PATH_MODE_PROGRAM=NEVER
66+
-DCMAKE_FIND_ROOT_PATH_MODE_LIBRARY=NEVER
67+
-DCMAKE_FIND_ROOT_PATH_MODE_INCLUDE=NEVER
68+
-DCMAKE_C_COMPILER=gcc
69+
-DCMAKE_CXX_COMPILER=g++
70+
BUILD_COMMAND ${CMAKE_COMMAND} --build .
71+
INSTALL_COMMAND ${CMAKE_COMMAND} --install .
72+
INSTALL_DIR ${CMAKE_BINARY_DIR}
73+
)
74+
ExternalProject_Add_StepTargets(vulkan-shaders-gen build install)
75+
endif()
76+
set (_ggml_vk_genshaders_cmd ${CMAKE_BINARY_DIR}/bin/vulkan-shaders-gen)
5177
set (_ggml_vk_header ${CMAKE_CURRENT_BINARY_DIR}/ggml-vulkan-shaders.hpp)
5278
set (_ggml_vk_source ${CMAKE_CURRENT_BINARY_DIR}/ggml-vulkan-shaders.cpp)
5379
set (_ggml_vk_input_dir ${CMAKE_CURRENT_SOURCE_DIR}/vulkan-shaders)
5480
set (_ggml_vk_output_dir ${CMAKE_CURRENT_BINARY_DIR}/vulkan-shaders.spv)
5581

5682
file(GLOB _ggml_vk_shader_deps "${_ggml_vk_input_dir}/*.comp")
5783

84+
if (CMAKE_CROSSCOMPILING)
85+
set(_ggml_vk_shader_deps ${_ggml_vk_shader_deps} vulkan-shaders-gen-build vulkan-shaders-gen-install)
86+
endif()
87+
5888
add_custom_command(
5989
OUTPUT ${_ggml_vk_header}
6090
${_ggml_vk_source}

ggml/src/ggml-vulkan/vulkan-shaders/CMakeLists.txt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,10 @@ find_package (Threads REQUIRED)
22

33
set(TARGET vulkan-shaders-gen)
44
add_executable(${TARGET} vulkan-shaders-gen.cpp)
5-
install(TARGETS ${TARGET} RUNTIME)
5+
if (${CMAKE_RUNTIME_OUTPUT_DIRECTORY})
6+
install(TARGETS ${TARGET} RUNTIME)
7+
else()
8+
install(TARGETS ${TARGET} RUNTIME DESTINATION bin)
9+
endif()
610
target_compile_features(${TARGET} PRIVATE cxx_std_11)
711
target_link_libraries(vulkan-shaders-gen PUBLIC Threads::Threads)

0 commit comments

Comments
 (0)