aboutsummaryrefslogtreecommitdiff
path: root/vcpkg/ports/ggml
diff options
context:
space:
mode:
Diffstat (limited to 'vcpkg/ports/ggml')
-rw-r--r--vcpkg/ports/ggml/cmake-config.diff21
-rw-r--r--vcpkg/ports/ggml/pkgconfig.diff216
-rw-r--r--vcpkg/ports/ggml/portfile.cmake98
-rw-r--r--vcpkg/ports/ggml/relax-link-options.diff14
-rw-r--r--vcpkg/ports/ggml/vcpkg.json68
-rw-r--r--vcpkg/ports/ggml/vulkan-shaders-gen.diff26
6 files changed, 443 insertions, 0 deletions
diff --git a/vcpkg/ports/ggml/cmake-config.diff b/vcpkg/ports/ggml/cmake-config.diff
new file mode 100644
index 0000000..3c18872
--- /dev/null
+++ b/vcpkg/ports/ggml/cmake-config.diff
@@ -0,0 +1,21 @@
+diff --git a/cmake/ggml-config.cmake.in b/cmake/ggml-config.cmake.in
+index fe34cda4..723acac4 100644
+--- a/cmake/ggml-config.cmake.in
++++ b/cmake/ggml-config.cmake.in
+@@ -98,7 +98,7 @@ if (NOT GGML_SHARED_LIB)
+ endif()
+
+ set_and_check(GGML_INCLUDE_DIR "@PACKAGE_GGML_INCLUDE_INSTALL_DIR@")
+-set_and_check(GGML_LIB_DIR "@PACKAGE_GGML_LIB_INSTALL_DIR@")
++#set_and_check(GGML_LIB_DIR "@PACKAGE_GGML_LIB_INSTALL_DIR@")
+ #set_and_check(GGML_BIN_DIR "@PACKAGE_GGML_BIN_INSTALL_DIR@")
+
+ if(NOT TARGET ggml::ggml)
+@@ -112,6 +112,7 @@ if(NOT TARGET ggml::ggml)
+ add_library(ggml::ggml UNKNOWN IMPORTED)
+ set_target_properties(ggml::ggml
+ PROPERTIES
++ INTERFACE_INCLUDE_DIRECTORIES "${GGML_INCLUDE_DIR}"
+ IMPORTED_LOCATION "${GGML_LIBRARY}")
+
+ find_library(GGML_BASE_LIBRARY ggml-base
diff --git a/vcpkg/ports/ggml/pkgconfig.diff b/vcpkg/ports/ggml/pkgconfig.diff
new file mode 100644
index 0000000..0da3174
--- /dev/null
+++ b/vcpkg/ports/ggml/pkgconfig.diff
@@ -0,0 +1,216 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 56420587..98422c5c 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -328,7 +328,7 @@ if (GGML_STANDALONE)
+ @ONLY)
+
+ install(FILES ${CMAKE_CURRENT_BINARY_DIR}/ggml.pc
+- DESTINATION share/pkgconfig)
++ DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
+ endif()
+
+ #
+@@ -349,6 +349,7 @@ set(variable_set_statements
+ set(GGML_SHARED_LIB ${BUILD_SHARED_LIBS})
+
+ get_cmake_property(all_variables VARIABLES)
++list(FILTER all_variables EXCLUDE REGEX "^GGML_PKGCONFIG")
+ foreach(variable_name IN LISTS all_variables)
+ if(variable_name MATCHES "^GGML_")
+ string(REPLACE ";" "\\;"
+diff --git a/ggml.pc.in b/ggml.pc.in
+index 3e0291e0..a7627339 100644
+--- a/ggml.pc.in
++++ b/ggml.pc.in
+@@ -6,5 +6,7 @@ libdir=${prefix}/@CMAKE_INSTALL_LIBDIR@
+ Name: ggml
+ Description: The GGML Tensor Library for Machine Learning
+ Version: @GGML_VERSION@
+-Cflags: -I${includedir}
+-Libs: -L${libdir} -lggml
++Cflags: -I${includedir} @GGML_PKGCONFIG_CFLAGS@
++Libs: -L${libdir} -lggml @GGML_PKGCONFIG_LIBS_BACKEND@ -lggml-base
++Libs.private: @GGML_PKGCONFIG_LIBS_PRIVATE@
++Requires.private: @GGML_PKGCONFIG_REQUIRES_PRIVATE@
+diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
+index c8f3d859..d7c15992 100644
+--- a/src/CMakeLists.txt
++++ b/src/CMakeLists.txt
+@@ -186,6 +186,10 @@ endif()
+
+ # ggml
+
++set(GGML_PKGCONFIG_CFLAGS "")
++set(GGML_PKGCONFIG_LIBS_BACKEND "")
++set(GGML_PKGCONFIG_LIBS_PRIVATE "")
++
+ if (GGML_BACKEND_DL AND NOT BUILD_SHARED_LIBS)
+ message(FATAL_ERROR "GGML_BACKEND_DL requires BUILD_SHARED_LIBS")
+ endif()
+@@ -228,6 +232,7 @@ target_link_libraries(ggml PUBLIC ggml-base)
+
+ if (CMAKE_SYSTEM_NAME MATCHES "Linux")
+ target_link_libraries(ggml PRIVATE dl)
++ string(APPEND GGML_PKGCONFIG_LIBS_PRIVATE " -ldl")
+ endif()
+
+ function(ggml_add_backend_library backend)
+@@ -272,12 +277,20 @@ function(ggml_add_backend backend)
+ string(TOUPPER "GGML_${backend}" backend_id)
+ if (${backend_id})
+ string(TOLOWER "ggml-${backend}" backend_target)
++ if (NOT GGML_BACKEND_DL)
++ # Mirrors ggml_add_backend_library but avoids cmake scoping
++ set(GGML_PKGCONFIG_LIBS_BACKEND "${GGML_PKGCONFIG_LIBS_BACKEND} -l${backend_target}")
++ endif()
+ add_subdirectory(${backend_target})
+ message(STATUS "Including ${backend} backend")
+ if (NOT GGML_BACKEND_DL)
+ string(TOUPPER "GGML_USE_${backend}" backend_use)
+ target_compile_definitions(ggml PUBLIC ${backend_use})
++ set(GGML_PKGCONFIG_CFLAGS "${GGML_PKGCONFIG_CFLAGS} -D${backend_use}" PARENT_SCOPE)
+ endif()
++ set(GGML_PKGCONFIG_LIBS_BACKEND "${GGML_PKGCONFIG_LIBS_BACKEND}" PARENT_SCOPE)
++ set(GGML_PKGCONFIG_LIBS_PRIVATE "${GGML_PKGCONFIG_LIBS_PRIVATE}" PARENT_SCOPE)
++ set(GGML_PKGCONFIG_REQUIRES_PRIVATE "${GGML_PKGCONFIG_REQUIRES_PRIVATE}" PARENT_SCOPE)
+ endif()
+ endfunction()
+
+@@ -399,11 +412,15 @@ find_library(MATH_LIBRARY m)
+ if (MATH_LIBRARY)
+ if (NOT WIN32 OR NOT DEFINED ENV{ONEAPI_ROOT})
+ target_link_libraries(ggml-base PRIVATE m)
++ string(APPEND GGML_PKGCONFIG_LIBS_PRIVATE " -lm")
+ endif()
+ endif()
+
+ if (CMAKE_SYSTEM_NAME MATCHES "Android")
+ target_link_libraries(ggml-base PRIVATE dl)
++ if(NOT GGML_PKGCONFIG_LIBS_PRIVATE MATCHES " -ldl")
++ string(APPEND GGML_PKGCONFIG_LIBS_PRIVATE " -ldl")
++ endif()
+ endif()
+
+ if(CMAKE_SYSTEM_NAME MATCHES "visionOS")
+@@ -416,4 +433,10 @@ if (BUILD_SHARED_LIBS)
+ target_compile_definitions(${target} PRIVATE GGML_BUILD)
+ target_compile_definitions(${target} PUBLIC GGML_SHARED)
+ endforeach()
++ string(APPEND GGML_PKGCONFIG_CFLAGS " -DGGML_SHARED -DGGML_BACKEND_SHARED")
+ endif()
++
++set(GGML_PKGCONFIG_CFLAGS "${GGML_PKGCONFIG_CFLAGS}" PARENT_SCOPE)
++set(GGML_PKGCONFIG_LIBS_BACKEND "${GGML_PKGCONFIG_LIBS_BACKEND}" PARENT_SCOPE)
++set(GGML_PKGCONFIG_LIBS_PRIVATE "${GGML_PKGCONFIG_LIBS_PRIVATE}" PARENT_SCOPE)
++set(GGML_PKGCONFIG_REQUIRES_PRIVATE "${GGML_PKGCONFIG_REQUIRES_PRIVATE}" PARENT_SCOPE)
+diff --git a/src/ggml-blas/CMakeLists.txt b/src/ggml-blas/CMakeLists.txt
+index 60ce4b1e..058f65cd 100644
+--- a/src/ggml-blas/CMakeLists.txt
++++ b/src/ggml-blas/CMakeLists.txt
+@@ -79,6 +79,7 @@ if (BLAS_FOUND)
+ endif()
+
+ target_link_libraries (ggml-blas PRIVATE ${BLAS_LIBRARIES})
++ set(GGML_PKGCONFIG_REQUIRES_PRIVATE "${GGML_PKGCONFIG_REQUIRES_PRIVATE} cblas" PARENT_SCOPE)
+ target_include_directories(ggml-blas PRIVATE ${BLAS_INCLUDE_DIRS})
+ else()
+ message(FATAL_ERROR "BLAS not found, please refer to "
+diff --git a/src/ggml-cpu/CMakeLists.txt b/src/ggml-cpu/CMakeLists.txt
+index 42041b71..b17aca1a 100644
+--- a/src/ggml-cpu/CMakeLists.txt
++++ b/src/ggml-cpu/CMakeLists.txt
+@@ -52,6 +52,9 @@ function(ggml_add_cpu_backend_variant_impl tag_name)
+ target_compile_features(${GGML_CPU_NAME} PRIVATE c_std_11 cxx_std_17)
+ target_include_directories(${GGML_CPU_NAME} PRIVATE . ggml-cpu)
+
++ set(libs_private "")
++ set(pkgconfig_cflags "")
++
+ if (APPLE AND GGML_ACCELERATE)
+ find_library(ACCELERATE_FRAMEWORK Accelerate)
+ if (ACCELERATE_FRAMEWORK)
+@@ -62,6 +65,7 @@ function(ggml_add_cpu_backend_variant_impl tag_name)
+ target_compile_definitions(${GGML_CPU_NAME} PRIVATE ACCELERATE_LAPACK_ILP64)
+
+ target_link_libraries(${GGML_CPU_NAME} PRIVATE ${ACCELERATE_FRAMEWORK})
++ string(APPEND libs_private " -framework Accelerate")
+ else()
+ message(WARNING "Accelerate framework not found")
+ endif()
+@@ -74,6 +78,18 @@ function(ggml_add_cpu_backend_variant_impl tag_name)
+ target_compile_definitions(${GGML_CPU_NAME} PRIVATE GGML_USE_OPENMP)
+
+ target_link_libraries(${GGML_CPU_NAME} PRIVATE OpenMP::OpenMP_C OpenMP::OpenMP_CXX)
++ set(items "")
++ foreach(lib IN LISTS OpenMP_CXX_LIB_NAMES OpenMP_C_LIB_NAMES)
++ list(REMOVE_ITEM items " -l${lib}")
++ list(APPEND items " -l${lib}")
++ endforeach()
++ string(APPEND libs_private ${items})
++ set(items "")
++ foreach(flag IN LISTS OpenMP_CXX_FLAGS OpenMP_C_FLAGS)
++ list(REMOVE_ITEM items " ${flag}")
++ list(APPEND items " ${flag}")
++ endforeach()
++ string(APPEND pkgconfig_cflags ${items})
+ else()
+ set(GGML_OPENMP_ENABLED "OFF" CACHE INTERNAL "")
+ message(WARNING "OpenMP not found")
+@@ -96,8 +112,12 @@ function(ggml_add_cpu_backend_variant_impl tag_name)
+ target_compile_definitions(${GGML_CPU_NAME} PRIVATE GGML_USE_CPU_HBM)
+
+ target_link_libraries(${GGML_CPU_NAME} PUBLIC memkind)
++ string(APPEND libs_private " -lmemkind")
+ endif()
+
++ set(GGML_PKGCONFIG_CFLAGS "${GGML_PKGCONFIG_CFLAGS}${pkgconfig_cflags}" PARENT_SCOPE)
++ set(GGML_PKGCONFIG_LIBS_PRIVATE "${GGML_PKGCONFIG_LIBS_PRIVATE}${libs_private}" PARENT_SCOPE)
++
+ if (GGML_SYSTEM_ARCH STREQUAL "ARM")
+ message(STATUS "ARM detected")
+ list(APPEND GGML_CPU_SOURCES
+diff --git a/src/ggml-metal/CMakeLists.txt b/src/ggml-metal/CMakeLists.txt
+index 63418fe1..138996a1 100644
+--- a/src/ggml-metal/CMakeLists.txt
++++ b/src/ggml-metal/CMakeLists.txt
+@@ -19,6 +19,11 @@ target_link_libraries(ggml-metal PRIVATE
+ ${METALKIT_FRAMEWORK}
+ )
+
++set(GGML_PKGCONFIG_LIBS_PRIVATE
++ "${GGML_PKGCONFIG_LIBS_PRIVATE} -framework Foundation -framework Metal -framework MetalKit"
++ PARENT_SCOPE
++)
++
+ if (GGML_METAL_NDEBUG)
+ add_compile_definitions(GGML_METAL_NDEBUG)
+ endif()
+diff --git a/src/ggml-opencl/CMakeLists.txt b/src/ggml-opencl/CMakeLists.txt
+index 7e6c8438..de676a79 100644
+--- a/src/ggml-opencl/CMakeLists.txt
++++ b/src/ggml-opencl/CMakeLists.txt
+@@ -7,6 +7,7 @@ ggml_add_backend_library(${TARGET_NAME}
+ ggml-opencl.cpp
+ ../../include/ggml-opencl.h)
+ target_link_libraries(${TARGET_NAME} PRIVATE ${OpenCL_LIBRARIES})
++set(GGML_PKGCONFIG_REQUIRES_PRIVATE "${GGML_PKGCONFIG_REQUIRES_PRIVATE} OpenCL" PARENT_SCOPE)
+ target_include_directories(${TARGET_NAME} PRIVATE ${OpenCL_INCLUDE_DIRS})
+
+ if (GGML_OPENCL_PROFILING)
+diff --git a/src/ggml-vulkan/CMakeLists.txt b/src/ggml-vulkan/CMakeLists.txt
+index b97e7bf9..ec194126 100644
+--- a/src/ggml-vulkan/CMakeLists.txt
++++ b/src/ggml-vulkan/CMakeLists.txt
+@@ -77,6 +77,11 @@ if (Vulkan_FOUND)
+ )
+
+ target_link_libraries(ggml-vulkan PRIVATE Vulkan::Vulkan)
++ if(ANDROID)
++ set(GGML_PKGCONFIG_LIBS_PRIVATE "${GGML_PKGCONFIG_LIBS_PRIVATE} -lvulkan" PARENT_SCOPE)
++ else()
++ set(GGML_PKGCONFIG_REQUIRES_PRIVATE "${GGML_PKGCONFIG_REQUIRES_PRIVATE} vulkan" PARENT_SCOPE)
++ endif()
+ target_include_directories(ggml-vulkan PRIVATE ${CMAKE_CURRENT_BINARY_DIR})
+
+ # Workaround to the "can't dereference invalidated vector iterator" bug in clang-cl debug build
diff --git a/vcpkg/ports/ggml/portfile.cmake b/vcpkg/ports/ggml/portfile.cmake
new file mode 100644
index 0000000..bbe31f0
--- /dev/null
+++ b/vcpkg/ports/ggml/portfile.cmake
@@ -0,0 +1,98 @@
+vcpkg_from_github(
+ OUT_SOURCE_PATH SOURCE_PATH
+ REPO ggml-org/ggml
+ REF v${VERSION}
+ SHA512 e2c47e5bcdf3eda66757e63b93f4adf56e7894edeed0d39f182c850cae4dddb49f3cf82ac9e8546dfcd48abf02b7bf0a64d22bacba4360b2f7ef2cb09855eadb
+ HEAD_REF master
+ PATCHES
+ cmake-config.diff
+ pkgconfig.diff
+ relax-link-options.diff
+ vulkan-shaders-gen.diff
+)
+
+vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS
+ FEATURES
+ blas GGML_BLAS
+ cuda GGML_CUDA
+ metal GGML_METAL
+ opencl GGML_OPENCL
+ openmp GGML_OPENMP
+ vulkan GGML_VULKAN
+)
+
+if("blas" IN_LIST FEATURES)
+ vcpkg_find_acquire_program(PKGCONFIG)
+ list(APPEND FEATURE_OPTIONS
+ "-DCMAKE_REQUIRE_FIND_PACKAGE_BLAS=ON" # workaround message(ERROR ...)
+ "-DPKG_CONFIG_EXECUTABLE=${PKGCONFIG}"
+ )
+endif()
+
+if("cuda" IN_LIST FEATURES)
+ vcpkg_find_cuda(OUT_CUDA_TOOLKIT_ROOT cuda_toolkit_root)
+ list(APPEND FEATURE_OPTIONS
+ "-DCMAKE_CUDA_COMPILER=${NVCC}"
+ "-DCUDAToolkit_ROOT=${cuda_toolkit_root}"
+ )
+endif()
+
+if("opencl" IN_LIST FEATURES)
+ vcpkg_find_acquire_program(PYTHON3)
+ list(APPEND FEATURE_OPTIONS
+ "-DPython3_EXECUTABLE=${PYTHON3}"
+ )
+endif()
+
+if(VCPKG_TARGET_IS_WINDOWS AND NOT VCPKG_TARGET_IS_MINGW AND VCPKG_TARGET_ARCHITECTURE STREQUAL "arm64")
+ message(STATUS "The CPU backend is not supported for arm64 with MSVC.")
+ list(APPEND FEATURE_OPTIONS
+ "-DGGML_CPU=OFF"
+ )
+ if(FEATURES STREQUAL "core")
+ message(WARNING "No backend enabled!")
+ endif()
+endif()
+
+if("vulkan" IN_LIST FEATURES AND VCPKG_CROSSCOMPILING)
+ list(APPEND FEATURE_OPTIONS
+ "-DVulkan_GLSLC_EXECUTABLE=${CURRENT_HOST_INSTALLED_DIR}/tools/shaderc/glslc${VCPKG_HOST_EXECUTABLE_SUFFIX}"
+ "-DVULKAN_SHADERS_GEN_EXECUTABLE=${CURRENT_HOST_INSTALLED_DIR}/tools/${PORT}/vulkan-shaders-gen${VCPKG_HOST_EXECUTABLE_SUFFIX}"
+ )
+endif()
+
+string(COMPARE EQUAL "${VCPKG_LIBRARY_LINKAGE}" "static" GGML_STATIC)
+
+vcpkg_cmake_configure(
+ SOURCE_PATH "${SOURCE_PATH}"
+ OPTIONS
+ -DGGML_STATIC=${GGML_STATIC}
+ -DGGML_CCACHE=OFF
+ -DGGML_BUILD_NUMBER=1
+ -DGGML_BUILD_TESTS=OFF
+ -DGGML_BUILD_EXAMPLES=OFF
+ -DGGML_HIP=OFF
+ -DGGML_SYCL=OFF
+ ${FEATURE_OPTIONS}
+ MAYBE_UNUSED_VARIABLES
+ PKG_CONFIG_EXECUTABLE
+)
+
+vcpkg_cmake_install()
+vcpkg_copy_pdbs()
+vcpkg_cmake_config_fixup(PACKAGE_NAME ggml CONFIG_PATH "lib/cmake/ggml")
+vcpkg_fixup_pkgconfig()
+
+if(VCPKG_LIBRARY_LINKAGE STREQUAL "dynamic")
+ vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/include/ggml.h" "#ifdef GGML_SHARED" "#if 1")
+ vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/include/ggml-backend.h" "#ifdef GGML_BACKEND_SHARED" "#if 1")
+endif()
+
+if("vulkan" IN_LIST FEATURES AND NOT VCPKG_CROSSCOMPILING)
+ vcpkg_copy_tools(TOOL_NAMES vulkan-shaders-gen AUTO_CLEAN)
+endif()
+
+file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include")
+file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/share")
+
+vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/LICENSE")
diff --git a/vcpkg/ports/ggml/relax-link-options.diff b/vcpkg/ports/ggml/relax-link-options.diff
new file mode 100644
index 0000000..8ecfdda
--- /dev/null
+++ b/vcpkg/ports/ggml/relax-link-options.diff
@@ -0,0 +1,14 @@
+diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
+index c8f3d859..8aa425f6 100644
+--- a/src/CMakeLists.txt
++++ b/src/CMakeLists.txt
+@@ -117,9 +117,7 @@ if (NOT MSVC)
+ if (UNIX AND NOT APPLE)
+ set(CMAKE_FIND_LIBRARY_SUFFIXES ".a;.so")
+ endif()
+- add_link_options(-static)
+ if (MINGW)
+- add_link_options(-static-libgcc -static-libstdc++)
+ endif()
+ endif()
+ if (GGML_GPROF)
diff --git a/vcpkg/ports/ggml/vcpkg.json b/vcpkg/ports/ggml/vcpkg.json
new file mode 100644
index 0000000..8ee70b4
--- /dev/null
+++ b/vcpkg/ports/ggml/vcpkg.json
@@ -0,0 +1,68 @@
+{
+ "name": "ggml",
+ "version": "0.9.4",
+ "port-version": 1,
+ "description": "Tensor library for machine learning",
+ "homepage": "https://github.com/ggml-org/ggml",
+ "license": "MIT",
+ "supports": "!uwp",
+ "dependencies": [
+ {
+ "name": "vcpkg-cmake",
+ "host": true
+ },
+ {
+ "name": "vcpkg-cmake-config",
+ "host": true
+ }
+ ],
+ "features": {
+ "blas": {
+ "description": "Enable BLAS support",
+ "dependencies": [
+ "blas",
+ "cblas"
+ ]
+ },
+ "cuda": {
+ "description": "Enable CUDA support",
+ "supports": "!(windows & staticcrt)",
+ "dependencies": [
+ "cuda"
+ ]
+ },
+ "metal": {
+ "description": "Enable Metal support",
+ "supports": "osx"
+ },
+ "opencl": {
+ "description": "Enable OpenCL support",
+ "supports": "!arm32",
+ "dependencies": [
+ "opencl"
+ ]
+ },
+ "openmp": {
+ "description": "Enable OpenMP support",
+ "supports": "!osx"
+ },
+ "vulkan": {
+ "description": "Enable Vulkan support",
+ "dependencies": [
+ {
+ "name": "ggml",
+ "host": true,
+ "default-features": false,
+ "features": [
+ "vulkan"
+ ]
+ },
+ {
+ "name": "shaderc",
+ "host": true
+ },
+ "vulkan"
+ ]
+ }
+ }
+}
diff --git a/vcpkg/ports/ggml/vulkan-shaders-gen.diff b/vcpkg/ports/ggml/vulkan-shaders-gen.diff
new file mode 100644
index 0000000..2b63b1c
--- /dev/null
+++ b/vcpkg/ports/ggml/vulkan-shaders-gen.diff
@@ -0,0 +1,26 @@
+diff --git a/src/ggml-vulkan/CMakeLists.txt b/src/ggml-vulkan/CMakeLists.txt
+index b97e7bf9..0ba5fcdd 100644
+--- a/src/ggml-vulkan/CMakeLists.txt
++++ b/src/ggml-vulkan/CMakeLists.txt
+@@ -110,6 +110,12 @@ if (Vulkan_FOUND)
+ add_compile_definitions(GGML_VULKAN_RUN_TESTS)
+ endif()
+
++ if(DEFINED VULKAN_SHADERS_GEN_EXECUTABLE)
++ add_executable(vulkan-shaders-gen IMPORTED)
++ set_target_properties(vulkan-shaders-gen PROPERTIES IMPORTED_LOCATION "${VULKAN_SHADERS_GEN_EXECUTABLE}")
++ elseif(1)
++ add_subdirectory(vulkan-shaders)
++ elseif(0)
+ # Set up toolchain for host compilation whether cross-compiling or not
+ if (CMAKE_CROSSCOMPILING)
+ if (GGML_VULKAN_SHADERS_GEN_TOOLCHAIN)
+@@ -159,6 +165,8 @@ if (Vulkan_FOUND)
+ set (_ggml_vk_host_suffix $<IF:$<STREQUAL:${CMAKE_HOST_SYSTEM_NAME},Windows>,.exe,>)
+ set (_ggml_vk_genshaders_dir "${CMAKE_BINARY_DIR}/$<CONFIG>")
+ set (_ggml_vk_genshaders_cmd "${_ggml_vk_genshaders_dir}/vulkan-shaders-gen${_ggml_vk_host_suffix}")
++ endif()
++ set (_ggml_vk_genshaders_cmd "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")