Skip to content

Commit 572da44

Browse files
committed
fix(vulkan): Adjust vulkan-shaders-gen build for Termux compatibility
1 parent ec9e030 commit 572da44

File tree

1 file changed

+14
-7
lines changed

1 file changed

+14
-7
lines changed

ggml/src/ggml-vulkan/CMakeLists.txt

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ if (Vulkan_FOUND)
5151

5252
set(VULKAN_SHADER_GEN_CMAKE_ARGS
5353
-DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR}
54+
# CMAKE_RUNTIME_OUTPUT_DIRECTORY 这里保持原样,因为 _ggml_vk_genshaders_cmd 接下来会使用硬编码路径
5455
-DCMAKE_RUNTIME_OUTPUT_DIRECTORY=${CMAKE_RUNTIME_OUTPUT_DIRECTORY}
5556
)
5657

@@ -88,7 +89,7 @@ if (Vulkan_FOUND)
8889
target_include_directories(ggml-vulkan PRIVATE ${CMAKE_CURRENT_BINARY_DIR})
8990

9091
# Workaround to the "can't dereference invalidated vector iterator" bug in clang-cl debug build
91-
# Posssibly relevant: https://stackoverflow.com/questions/74748276/visual-studio-no-displays-the-correct-length-of-stdvector
92+
# Posssibly relevant: https://stackoverflow.com/questions/74748276/visual-studio-no-displays-the.correct-length-of-stdvector
9293
if (MSVC AND CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
9394
add_compile_definitions(_ITERATOR_DEBUG_LEVEL=0)
9495
endif()
@@ -151,13 +152,18 @@ if (Vulkan_FOUND)
151152
SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/vulkan-shaders
152153
CMAKE_ARGS ${VULKAN_SHADER_GEN_CMAKE_ARGS}
153154
BUILD_COMMAND ${CMAKE_COMMAND} --build . ${VULKAN_SHADER_GEN_CMAKE_BUILD_ARGS}
154-
INSTALL_COMMAND ${CMAKE_COMMAND} --install .
155-
INSTALL_DIR ${CMAKE_BINARY_DIR}
155+
INSTALL_COMMAND "" # <-- 关键修改:强制为空命令
156+
# INSTALL_DIR ${CMAKE_BINARY_DIR} # <-- 保持注释,因为 INSTALL_COMMAND 已经为空
157+
BUILD_IN_SOURCE ON # <-- 保持新增
156158
)
157-
ExternalProject_Add_StepTargets(vulkan-shaders-gen build install)
159+
# 修改 ExternalProject_Add_StepTargets, 移除 'install' 目标
160+
ExternalProject_Add_StepTargets(vulkan-shaders-gen build)
158161

159162
set (_ggml_vk_host_suffix $<IF:$<STREQUAL:${CMAKE_HOST_SYSTEM_NAME},Windows>,.exe,>)
160-
set (_ggml_vk_genshaders_cmd ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/vulkan-shaders-gen${_ggml_vk_host_suffix})
163+
# 修改 _ggml_vk_genshaders_cmd 的路径,直接指向构建后的文件位置
164+
# CMAKE_BINARY_DIR 是主项目的构建目录(例如 /data/data/com.termux/files/home/llama.cpp/build)
165+
# bin/ 是 CMAKE_RUNTIME_OUTPUT_DIRECTORY 的默认子目录,vulkan-shaders-gen 实际链接到这里
166+
set (_ggml_vk_genshaders_cmd ${CMAKE_BINARY_DIR}/bin/vulkan-shaders-gen${_ggml_vk_host_suffix})
161167
set (_ggml_vk_header ${CMAKE_CURRENT_BINARY_DIR}/ggml-vulkan-shaders.hpp)
162168
set (_ggml_vk_source ${CMAKE_CURRENT_BINARY_DIR}/ggml-vulkan-shaders.cpp)
163169
set (_ggml_vk_input_dir ${CMAKE_CURRENT_SOURCE_DIR}/vulkan-shaders)
@@ -167,7 +173,8 @@ if (Vulkan_FOUND)
167173
set (_ggml_vk_shader_deps ${_ggml_vk_shader_deps} vulkan-shaders-gen)
168174

169175
# Add build and install dependencies for all builds
170-
set(_ggml_vk_shader_deps ${_ggml_vk_shader_deps} vulkan-shaders-gen-build vulkan-shaders-gen-install)
176+
# 修改 _ggml_vk_shader_deps,移除对 'vulkan-shaders-gen-install' 的依赖
177+
set(_ggml_vk_shader_deps ${_ggml_vk_shader_deps} vulkan-shaders-gen-build )
171178

172179
add_custom_command(
173180
OUTPUT ${_ggml_vk_header}
@@ -189,4 +196,4 @@ if (Vulkan_FOUND)
189196

190197
else()
191198
message(WARNING "Vulkan not found")
192-
endif()
199+
endif()

0 commit comments

Comments
 (0)