diff --git a/ports/ggml/android-vulkan.diff b/ports/ggml/android-vulkan.diff new file mode 100644 index 0000000000..177a8de87c --- /dev/null +++ b/ports/ggml/android-vulkan.diff @@ -0,0 +1,14 @@ +diff --git a/src/ggml-vulkan/CMakeLists.txt b/src/ggml-vulkan/CMakeLists.txt +index b97e7bf9..6de2b2fc 100644 +--- a/src/ggml-vulkan/CMakeLists.txt ++++ b/src/ggml-vulkan/CMakeLists.txt +@@ -48,6 +48,9 @@ if (Vulkan_FOUND) + ggml-vulkan.cpp + ../../include/ggml-vulkan.h + ) ++ if(ANDROID) ++ target_compile_definitions(ggml-vulkan PUBLIC VULKAN_HPP_DISPATCH_LOADER_DYNAMIC=1) ++ endif() + + set(VULKAN_SHADER_GEN_CMAKE_ARGS "") + diff --git a/ports/ggml/blas.diff b/ports/ggml/blas.diff new file mode 100644 index 0000000000..dd9230ffdc --- /dev/null +++ b/ports/ggml/blas.diff @@ -0,0 +1,15 @@ +diff --git a/cmake/ggml-config.cmake.in b/cmake/ggml-config.cmake.in +index fe34cda4..2322c6cd 100644 +--- a/cmake/ggml-config.cmake.in ++++ b/cmake/ggml-config.cmake.in +@@ -34,8 +34,8 @@ if (NOT GGML_SHARED_LIB) + + if (GGML_BLAS) + find_dependency(BLAS) +- list(APPEND GGML_CPU_INTERFACE_LINK_LIBRARIES ${BLAS_LIBRARIES}) +- list(APPEND GGML_CPU_INTERFACE_LINK_OPTIONS ${BLAS_LINKER_FLAGS}) ++ list(APPEND GGML_BLAS_INTERFACE_LINK_LIBRARIES ${BLAS_LIBRARIES}) ++ list(APPEND GGML_BLAS_INTERFACE_LINK_OPTIONS ${BLAS_LINKER_FLAGS}) + endif() + + if (GGML_CUDA) diff --git a/ports/ggml/cmake-config.diff b/ports/ggml/cmake-config.diff index a9053eaca8..3c1887218d 100644 --- a/ports/ggml/cmake-config.diff +++ b/ports/ggml/cmake-config.diff @@ -1,54 +1,21 @@ diff --git a/cmake/ggml-config.cmake.in b/cmake/ggml-config.cmake.in -index 8c2dc31c..d6470b79 100644 +index fe34cda4..723acac4 100644 --- a/cmake/ggml-config.cmake.in +++ b/cmake/ggml-config.cmake.in -@@ -4,9 +4,11 @@ - @PACKAGE_INIT@ +@@ -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) -+ - find_package(Threads REQUIRED) + 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_LIBRARY ggml -@@ -53,6 +55,17 @@ if (NOT GGML_SHARED_LIB) - - if (GGML_CUDA) - find_package(CUDAToolkit REQUIRED) -+ if (GGML_STATIC) -+ list(APPEND GGML_CUDA_INTERFACE_LINK_LIBRARIES $) -+ if (WIN32) -+ list(APPEND GGML_CUDA_INTERFACE_LINK_LIBRARIES $ $) -+ else() -+ list(APPEND GGML_CUDA_INTERFACE_LINK_LIBRARIES $ $) -+ endif() -+ endif() -+ if (NOT GGML_CUDA_NO_VMM) -+ list(APPEND GGML_CUDA_INTERFACE_LINK_LIBRARIES $) -+ endif() - endif() - - if (GGML_METAL) -@@ -64,6 +77,11 @@ if (NOT GGML_SHARED_LIB) - ${FOUNDATION_LIBRARY} ${METAL_FRAMEWORK} ${METALKIT_FRAMEWORK}) - endif() - -+ if (GGML_OPENCL) -+ find_package(OpenCL REQUIRED) -+ list(APPEND GGML_OPENCL_INTERFACE_LINK_LIBRARIES $) -+ endif() -+ - if (GGML_VULKAN) - find_package(Vulkan REQUIRED) - list(APPEND GGML_VULKAN_INTERFACE_LINK_LIBRARIES Vulkan::Vulkan) -@@ -149,4 +167,6 @@ set_target_properties(ggml::all - PROPERTIES - INTERFACE_LINK_LIBRARIES "${_ggml_all_targets}") - -+endif() # TARGET ggml::ggml -+ - check_required_components(ggml) + find_library(GGML_BASE_LIBRARY ggml-base diff --git a/ports/ggml/fix-32bit.diff b/ports/ggml/fix-32bit.diff new file mode 100644 index 0000000000..70ad3770e4 --- /dev/null +++ b/ports/ggml/fix-32bit.diff @@ -0,0 +1,13 @@ +diff --git a/src/ggml-vulkan/ggml-vulkan.cpp b/src/ggml-vulkan/ggml-vulkan.cpp +index 3019a545..b8e3a0e5 100644 +--- a/src/ggml-vulkan/ggml-vulkan.cpp ++++ b/src/ggml-vulkan/ggml-vulkan.cpp +@@ -1256,7 +1256,7 @@ static void ggml_vk_create_pipeline_func(vk_device& device, vk_pipeline& pipelin + vk::DebugUtilsObjectNameInfoEXT duoni; + duoni.objectType = vk::ObjectType::ePipeline; + duoni.pObjectName = pipeline->name.c_str(); +- duoni.objectHandle = reinterpret_cast(static_cast(pipeline->pipeline)); ++ duoni.objectHandle = /*reinterpret_cast*/(uint64_t)(static_cast(pipeline->pipeline)); + vk_instance.pfn_vkSetDebugUtilsObjectNameEXT(device->device, &static_cast(duoni)); + } + diff --git a/ports/ggml/portfile.cmake b/ports/ggml/portfile.cmake index f228a8b365..269dc0a69e 100644 --- a/ports/ggml/portfile.cmake +++ b/ports/ggml/portfile.cmake @@ -1,13 +1,16 @@ vcpkg_from_github( OUT_SOURCE_PATH SOURCE_PATH REPO ggml-org/ggml - REF 38648430fce1422694f2f349a5fe60d5969d6f49 # before ggml_backend_sched_new change - SHA512 6c51c4b4757aecea3f713b2ee8fb08992c2bdcc203f8e44e307ab8bcd5ed575f154d438c1d036251441aedef1eae812dc7114f6ca5da8314b8e415d92f02f33d + REF 44ea6eda2ad8a94663597cbe85e37de98bd99269 + SHA512 be93d44f87ef25f7c0bb37ca8020de7714ec89b4f92677d7b631a2dcad9db38789e59adb7a6af0d1f5f550c570d875ea9ed69833f7d7af76ef8cb9159f0a7c23 HEAD_REF master PATCHES + android-vulkan.diff cmake-config.diff + fix-32bit.diff relax-link-options.diff vulkan-shaders-gen.diff + blas.diff ) vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS @@ -43,6 +46,16 @@ if("opencl" IN_LIST FEATURES) ) 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}" diff --git a/ports/ggml/vcpkg.json b/ports/ggml/vcpkg.json index 6914fe75c6..cab8b99ce1 100644 --- a/ports/ggml/vcpkg.json +++ b/ports/ggml/vcpkg.json @@ -1,10 +1,10 @@ { "name": "ggml", - "version-date": "2025-05-13", + "version-date": "2025-07-23", "description": "Tensor library for machine learning", "homepage": "https://github.com/ggml-org/ggml", "license": "MIT", - "supports": "!(windows & arm) & !uwp", + "supports": "!uwp", "dependencies": [ { "name": "vcpkg-cmake", diff --git a/ports/ggml/vulkan-shaders-gen.diff b/ports/ggml/vulkan-shaders-gen.diff index d7e36e1842..2b63b1c436 100644 --- a/ports/ggml/vulkan-shaders-gen.diff +++ b/ports/ggml/vulkan-shaders-gen.diff @@ -1,27 +1,26 @@ diff --git a/src/ggml-vulkan/CMakeLists.txt b/src/ggml-vulkan/CMakeLists.txt -index 31816219..ae9c98d6 100644 +index b97e7bf9..0ba5fcdd 100644 --- a/src/ggml-vulkan/CMakeLists.txt +++ b/src/ggml-vulkan/CMakeLists.txt -@@ -124,7 +124,10 @@ if (Vulkan_FOUND) +@@ -110,6 +110,12 @@ if (Vulkan_FOUND) add_compile_definitions(GGML_VULKAN_RUN_TESTS) endif() -- if (NOT CMAKE_CROSSCOMPILING) + 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) # not crosscompiling - add_subdirectory(vulkan-shaders) - if (MSVC) - foreach(CONFIG ${CMAKE_CONFIGURATION_TYPES}) -@@ -175,7 +178,9 @@ if (Vulkan_FOUND) - file(GLOB _ggml_vk_shader_deps "${_ggml_vk_input_dir}/*.comp") - set (_ggml_vk_shader_deps ${_ggml_vk_shader_deps} vulkan-shaders-gen) - -- if (CMAKE_CROSSCOMPILING) -+ if(TARGET vulkan-shaders-gen) -+ set(_ggml_vk_genshaders_cmd vulkan-shaders-gen) ++ elseif(1) ++ add_subdirectory(vulkan-shaders) + elseif(0) - set(_ggml_vk_shader_deps ${_ggml_vk_shader_deps} vulkan-shaders-gen-build vulkan-shaders-gen-install) - endif() - + # 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 $,.exe,>) + set (_ggml_vk_genshaders_dir "${CMAKE_BINARY_DIR}/$") + 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") diff --git a/ports/llama-cpp/0001-external-ggml.patch b/ports/llama-cpp/0001-external-ggml.patch deleted file mode 100644 index 3a745b4c18..0000000000 --- a/ports/llama-cpp/0001-external-ggml.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -145,6 +145,8 @@ endif() - # 3rd-party - # - -+find_package(ggml CONFIG REQUIRED) -+add_library(ggml ALIAS ggml::ggml) - if (NOT TARGET ggml) - add_subdirectory(ggml) - # ... otherwise assume ggml is added by a parent CMakeLists.txt diff --git a/ports/llama-cpp/cmake-config.diff b/ports/llama-cpp/cmake-config.diff new file mode 100644 index 0000000000..a259a8e788 --- /dev/null +++ b/ports/llama-cpp/cmake-config.diff @@ -0,0 +1,33 @@ +diff --git a/cmake/llama-config.cmake.in b/cmake/llama-config.cmake.in +index 90cbec5..884938f 100644 +--- a/cmake/llama-config.cmake.in ++++ b/cmake/llama-config.cmake.in +@@ -6,10 +6,10 @@ set(LLAMA_SHARED_LIB @BUILD_SHARED_LIBS@) + @PACKAGE_INIT@ + + set_and_check(LLAMA_INCLUDE_DIR "@PACKAGE_LLAMA_INCLUDE_INSTALL_DIR@") +-set_and_check(LLAMA_LIB_DIR "@PACKAGE_LLAMA_LIB_INSTALL_DIR@") +-set_and_check(LLAMA_BIN_DIR "@PACKAGE_LLAMA_BIN_INSTALL_DIR@") ++#set_and_check(LLAMA_LIB_DIR "@PACKAGE_LLAMA_LIB_INSTALL_DIR@") ++#set_and_check(LLAMA_BIN_DIR "@PACKAGE_LLAMA_BIN_INSTALL_DIR@") + +-find_package(ggml REQUIRED HINTS ${LLAMA_LIB_DIR}/cmake) ++find_package(ggml REQUIRED CONFIG) + + find_library(llama_LIBRARY llama + REQUIRED +@@ -17,6 +17,7 @@ find_library(llama_LIBRARY llama + NO_CMAKE_FIND_ROOT_PATH + ) + ++if(NOT TARGET llama) + add_library(llama UNKNOWN IMPORTED) + set_target_properties(llama + PROPERTIES +@@ -26,5 +27,6 @@ set_target_properties(llama + IMPORTED_LOCATION "${llama_LIBRARY}" + INTERFACE_COMPILE_FEATURES c_std_90 + POSITION_INDEPENDENT_CODE ON) ++endif() + + check_required_components(Llama) diff --git a/ports/llama-cpp/portfile.cmake b/ports/llama-cpp/portfile.cmake index 4850025661..d5b902a11e 100644 --- a/ports/llama-cpp/portfile.cmake +++ b/ports/llama-cpp/portfile.cmake @@ -2,58 +2,65 @@ vcpkg_from_github( OUT_SOURCE_PATH SOURCE_PATH REPO ggml-org/llama.cpp REF b${VERSION} - SHA512 e093f4c7d4b2de425932bb4960683527a8a3bba242132c2f5e5bfed8480f0e336a06f97baf2d20ee591c6deee7535e159d40884a5e3f7caf0ae0967b8a046850 + SHA512 39c9a5358d561a4c6675e24c67d810573d7589f9936d7a32e19ea99a7393fa435223c60824c6dad9ac3f1507d327fff704a6000988ddf60faeb219dace876a51 HEAD_REF master PATCHES - 0001-external-ggml.patch + cmake-config.diff ) +file(REMOVE_RECURSE "${SOURCE_PATH}/ggml/include" "${SOURCE_PATH}/ggml/src") -file(REMOVE_RECURSE "${SOURCE_PATH}/ggml") +vcpkg_check_features(OUT_FEATURE_OPTIONS options + FEATURES + download LLAMA_CURL + tools LLAMA_BUILD_TOOLS +) vcpkg_cmake_configure( SOURCE_PATH "${SOURCE_PATH}" OPTIONS - -DGGML_CCACHE=OFF - -DLLAMA_BUILD_TESTS=OFF - -DLLAMA_BUILD_EXAMPLES=OFF - -DLLAMA_ALL_WARNINGS=OFF - ${FEATURE_OPTIONS} + ${options} + -DGGML_CCACHE=OFF + -DLLAMA_ALL_WARNINGS=OFF + -DLLAMA_BUILD_TESTS=OFF + -DLLAMA_BUILD_EXAMPLES=OFF + -DLLAMA_BUILD_SERVER=OFF + -DLLAMA_USE_SYSTEM_GGML=ON + -DVCPKG_LOCK_FIND_PACKAGE_Git=OFF ) vcpkg_cmake_install() -vcpkg_cmake_config_fixup(PACKAGE_NAME llama CONFIG_PATH "lib/cmake/llama") +vcpkg_cmake_config_fixup(CONFIG_PATH "lib/cmake/llama") vcpkg_copy_pdbs() vcpkg_fixup_pkgconfig() -if (VCPKG_LIBRARY_LINKAGE MATCHES "static") - vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/share/llama/llama-config.cmake" - "set_and_check(LLAMA_BIN_DIR \"${PACKAGE_PREFIX_DIR}/bin\")" - "" - IGNORE_UNCHANGED - ) -endif() - -vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/share/llama/llama-config.cmake" - "add_library(llama UNKNOWN IMPORTED)" - "if (NOT TARGET llama) - add_library(llama UNKNOWN IMPORTED) -endif() -" -) - -file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/tools/${PORT}") +file(INSTALL "${SOURCE_PATH}/gguf-py/gguf" DESTINATION "${CURRENT_PACKAGES_DIR}/tools/${PORT}/gguf-py") file(RENAME "${CURRENT_PACKAGES_DIR}/bin/convert_hf_to_gguf.py" "${CURRENT_PACKAGES_DIR}/tools/${PORT}/convert-hf-to-gguf.py") -file(INSTALL "${SOURCE_PATH}/gguf-py" DESTINATION "${CURRENT_PACKAGES_DIR}/tools/${PORT}") -if (NOT VCPKG_BUILD_TYPE) - file(REMOVE "${CURRENT_PACKAGES_DIR}/debug/bin/convert_hf_to_gguf.py") +file(REMOVE "${CURRENT_PACKAGES_DIR}/debug/bin/convert_hf_to_gguf.py") + +if("tools" IN_LIST FEATURES) + vcpkg_copy_tools( + TOOL_NAMES + llama-batched-bench + llama-bench + llama-cli + llama-cvector-generator + llama-export-lora + llama-gguf-split + llama-imatrix + llama-mtmd-cli + llama-perplexity + llama-quantize + llama-run + llama-tokenize + llama-tts + AUTO_CLEAN + ) endif() file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include") file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/share") +vcpkg_clean_executables_in_bin(FILE_NAMES none) -if (VCPKG_LIBRARY_LINKAGE MATCHES "static") - file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/bin") - file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/bin") -endif() - -vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/LICENSE") +set(gguf-py-license "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/gguf-py LICENSE") +file(COPY_FILE "${SOURCE_PATH}/gguf-py/LICENSE" "${gguf-py-license}") +vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/LICENSE" "${gguf-py-license}") diff --git a/ports/llama-cpp/vcpkg.json b/ports/llama-cpp/vcpkg.json index 6e6a132e1d..369ff34b42 100644 --- a/ports/llama-cpp/vcpkg.json +++ b/ports/llama-cpp/vcpkg.json @@ -1,7 +1,6 @@ { "name": "llama-cpp", - "version": "4743", - "port-version": 1, + "version": "5975", "description": "LLM inference in C/C++", "homepage": "https://github.com/ggml-org/llama.cpp", "license": "MIT", @@ -15,5 +14,19 @@ "name": "vcpkg-cmake-config", "host": true } - ] + ], + "features": { + "download": { + "description": "Support downloading a model from an URL", + "dependencies": [ + { + "name": "curl", + "default-features": false + } + ] + }, + "tools": { + "description": "Build tools" + } + } } diff --git a/ports/whisper-cpp/cmake-config.diff b/ports/whisper-cpp/cmake-config.diff new file mode 100644 index 0000000000..5c9133ca24 --- /dev/null +++ b/ports/whisper-cpp/cmake-config.diff @@ -0,0 +1,30 @@ +diff --git a/cmake/whisper-config.cmake.in b/cmake/whisper-config.cmake.in +index 6a3fa227..f1e06f6c 100644 +--- a/cmake/whisper-config.cmake.in ++++ b/cmake/whisper-config.cmake.in +@@ -12,8 +12,8 @@ set(GGML_ACCELERATE @GGML_ACCELERATE@) + @PACKAGE_INIT@ + + set_and_check(WHISPER_INCLUDE_DIR "@PACKAGE_WHISPER_INCLUDE_INSTALL_DIR@") +-set_and_check(WHISPER_LIB_DIR "@PACKAGE_WHISPER_LIB_INSTALL_DIR@") +-set_and_check(WHISPER_BIN_DIR "@PACKAGE_WHISPER_BIN_INSTALL_DIR@") ++#set_and_check(WHISPER_LIB_DIR "@PACKAGE_WHISPER_LIB_INSTALL_DIR@") ++#set_and_check(WHISPER_BIN_DIR "@PACKAGE_WHISPER_BIN_INSTALL_DIR@") + + # Ensure transient dependencies satisfied + +@@ -50,6 +50,7 @@ find_library(whisper_LIBRARY whisper + set(_whisper_link_deps "Threads::Threads" "@WHISPER_EXTRA_LIBS@") + set(_whisper_transient_defines "@WHISPER_TRANSIENT_DEFINES@") + ++if(NOT TARGET whisper) + add_library(whisper UNKNOWN IMPORTED) + + set_target_properties(whisper +@@ -61,5 +62,6 @@ set_target_properties(whisper + IMPORTED_LOCATION "${whisper_LIBRARY}" + INTERFACE_COMPILE_FEATURES cxx_std_11 + POSITION_INDEPENDENT_CODE ON ) ++endif() + + check_required_components(whisper) diff --git a/ports/whisper-cpp/portfile.cmake b/ports/whisper-cpp/portfile.cmake index 13699729ab..e141535ce5 100644 --- a/ports/whisper-cpp/portfile.cmake +++ b/ports/whisper-cpp/portfile.cmake @@ -2,8 +2,10 @@ vcpkg_from_github( OUT_SOURCE_PATH SOURCE_PATH REPO ggml-org/whisper.cpp REF v${VERSION} - SHA512 35efd976f60261e108972e3af7b322d723e36be30f5265db3be63752caaed0b52b9da3ece02975da2b83ff30f1eb32663e77fbaaf15f3037e35a525939071c0b + SHA512 7e0ec9d6afe234afaaa83d7d69051504252c27ecdacbedf3d70992429801bcd1078794a0bb76cf4dafb74131dd0f506bd24c3f3100815c35b8ac2b12336492ef HEAD_REF master + PATCHES + cmake-config.diff ) file(REMOVE_RECURSE "${SOURCE_PATH}/ggml") @@ -11,44 +13,22 @@ vcpkg_cmake_configure( SOURCE_PATH "${SOURCE_PATH}" DISABLE_PARALLEL_CONFIGURE # updating bindings/javascript/package.json OPTIONS - -DWHISPER_USE_SYSTEM_GGML=ON - -DWHISPER_CCACHE=OFF - -DWHISPER_BUILD_TESTS=OFF - -DWHISPER_BUILD_EXAMPLES=OFF - -DWHISPER_ALL_WARNINGS=OFF - ${FEATURE_OPTIONS} + -DWHISPER_CCACHE=OFF + -DWHISPER_ALL_WARNINGS=OFF + -DWHISPER_BUILD_EXAMPLES=OFF + -DWHISPER_BUILD_TESTS=OFF + -DWHISPER_USE_SYSTEM_GGML=ON ) vcpkg_cmake_install() -vcpkg_cmake_config_fixup(PACKAGE_NAME whisper CONFIG_PATH "lib/cmake/whisper") +vcpkg_cmake_config_fixup(CONFIG_PATH "lib/cmake/whisper") vcpkg_copy_pdbs() vcpkg_fixup_pkgconfig() -if (VCPKG_LIBRARY_LINKAGE MATCHES "static") - vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/share/whisper/whisper-config.cmake" - "set_and_check(WHISPER_BIN_DIR \"\${PACKAGE_PREFIX_DIR}/bin\")" - "" - IGNORE_UNCHANGED - ) -endif() - -vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/share/whisper/whisper-config.cmake" - "add_library(whisper UNKNOWN IMPORTED)" - "if (NOT TARGET whisper) - add_library(whisper UNKNOWN IMPORTED) -endif() -" -) - file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/tools/${PORT}") file(INSTALL "${SOURCE_PATH}/models/convert-pt-to-ggml.py" DESTINATION "${CURRENT_PACKAGES_DIR}/tools/${PORT}") file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include") file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/share") -if (VCPKG_LIBRARY_LINKAGE MATCHES "static") - file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/bin") - file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/bin") -endif() - -vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/LICENSE") \ No newline at end of file +vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/LICENSE") diff --git a/ports/whisper-cpp/vcpkg.json b/ports/whisper-cpp/vcpkg.json index bc0467db67..d7465b0c71 100644 --- a/ports/whisper-cpp/vcpkg.json +++ b/ports/whisper-cpp/vcpkg.json @@ -1,7 +1,6 @@ { "name": "whisper-cpp", - "version": "1.7.5", - "port-version": 1, + "version": "1.7.6", "description": "Port of OpenAI's Whisper model in C/C++", "homepage": "https://github.com/ggml-org/whisper.cpp", "license": "MIT", diff --git a/scripts/ci.feature.baseline.txt b/scripts/ci.feature.baseline.txt index a00fd8322a..c1ac04461f 100644 --- a/scripts/ci.feature.baseline.txt +++ b/scripts/ci.feature.baseline.txt @@ -2119,7 +2119,7 @@ gapp(android) = fail # requires c++20 gapp(osx) = fail # requires c++20 gegl(osx) = fail # meson bug on osx. See https://github.com/microsoft/vcpkg/issues/44411 geogram[graphics] = feature-fails # imgui not found. See https://github.com/microsoft/vcpkg/issues/32421 -ggml[blas](windows & static) = feature-fails +ggml[blas](x64 & windows & static) = feature-fails # 'cblas.h': No such file or directory ginkgo[openmp](osx) = feature-fails # No openmp on osx ginkgo[openmp](windows) = feature-fails # needs openmp 3.0 support but msvc only supports openmp 2.0 glib-networking[openssl, gnutls] = options # You have to select exactly one ssl backend @@ -2164,6 +2164,9 @@ libsbml[expat, libxml2] = options # have to select excatly one xml lib(they are libssh[core,openssl,mbedtls] = options # we have to select feature openssl or mbedtls libwebp[anim,cwebp,dwebp,extras,gif2webp,img2webp,info,mux,libwebpmux,nearlossless,swap16bitcsp,unicode,vwebp]:x64-android = no-separate-feature-test # Compiler crash without simd libwebp[anim,cwebp,dwebp,extras,img2webp](uwp) = feature-fails # linker error. See https://github.com/microsoft/vcpkg/issues/33603 +llama-cpp[tools]:arm-neon-android = feature-fails # int64_t vs. size_t +llama-cpp[tools](arm & windows & !uwp) = feature-fails # unresolved symbols +llama-cpp(uwp) = cascade llvm[core,flang] = options # exclude flang from all since it is not compatible with enable enable-eh llvm[enable-mlir-python-bindings](osx) = feature-fails # Could NOT find Python3 (missing: Development Development.Module Development.Embed) (found version "3.12"). Same as https://github.com/microsoft/vcpkg/issues/34779 llvm[libcxxabi](windows) = feature-fails # see https://github.com/microsoft/vcpkg/issues/31038 diff --git a/scripts/test_ports/vcpkg-ci-ggml/android-vulkan.diff b/scripts/test_ports/vcpkg-ci-ggml/android-vulkan.diff new file mode 100644 index 0000000000..534cce9a58 --- /dev/null +++ b/scripts/test_ports/vcpkg-ci-ggml/android-vulkan.diff @@ -0,0 +1,30 @@ +diff --git a/examples/test-cmake/CMakeLists.txt b/examples/test-cmake/CMakeLists.txt +index d6bc0cc4..395a63c7 100644 +--- a/examples/test-cmake/CMakeLists.txt ++++ b/examples/test-cmake/CMakeLists.txt +@@ -8,3 +8,9 @@ find_package(ggml CONFIG REQUIRED) + set(TEST_TARGET test-cmake) + add_executable(test-cmake test-cmake.cpp) + target_link_libraries(test-cmake PRIVATE ggml::ggml) ++ ++if(ANDROID AND TARGET ggml::ggml-vulkan) ++ # Instantiates VULKAN_HPP_DEFAULT_DISPATCH_LOADER_DYNAMIC_STORAGE ++ find_package(Vulkan REQUIRED) ++ target_link_libraries(test-cmake PRIVATE Vulkan::Vulkan) ++endif() +diff --git a/examples/test-cmake/test-cmake.cpp b/examples/test-cmake/test-cmake.cpp +index 029c8898..9d4bbe19 100644 +--- a/examples/test-cmake/test-cmake.cpp ++++ b/examples/test-cmake/test-cmake.cpp +@@ -1,5 +1,11 @@ + #include "ggml-backend.h" + ++#if defined(ANDROID) ++#define VULKAN_HPP_DISPATCH_LOADER_DYNAMIC 1 ++#include ++VULKAN_HPP_DEFAULT_DISPATCH_LOADER_DYNAMIC_STORAGE ++#endif ++ + int main(void) { + ggml_backend_load_all(); + return 0; diff --git a/scripts/test_ports/vcpkg-ci-ggml/portfile.cmake b/scripts/test_ports/vcpkg-ci-ggml/portfile.cmake index 41fb0362ae..238cf1fc2a 100644 --- a/scripts/test_ports/vcpkg-ci-ggml/portfile.cmake +++ b/scripts/test_ports/vcpkg-ci-ggml/portfile.cmake @@ -3,14 +3,14 @@ set(VCPKG_POLICY_EMPTY_PACKAGE enabled) vcpkg_from_github( OUT_SOURCE_PATH SOURCE_PATH REPO ggml-org/ggml - REF 9a4acb374565f4146b8d6eb1cffdcd7d437d1ba2 - SHA512 091a794baf669616ee20dc19d0232e64456c07cd50cbe6d81aa68b98f178801be1b62da9eea417e7a563a6b73bb3136777f860c756270569676fb760f2e751ed + REF 44ea6eda2ad8a94663597cbe85e37de98bd99269 + SHA512 be93d44f87ef25f7c0bb37ca8020de7714ec89b4f92677d7b631a2dcad9db38789e59adb7a6af0d1f5f550c570d875ea9ed69833f7d7af76ef8cb9159f0a7c23 HEAD_REF master PATCHES - ggml-test.diff + android-vulkan.diff ) vcpkg_cmake_configure( - SOURCE_PATH "${SOURCE_PATH}/examples/simple" + SOURCE_PATH "${SOURCE_PATH}/examples/test-cmake" ) vcpkg_cmake_build() diff --git a/scripts/test_ports/vcpkg-ci-ggml/vcpkg.json b/scripts/test_ports/vcpkg-ci-ggml/vcpkg.json index 5bcf5c80b3..5239306d87 100644 --- a/scripts/test_ports/vcpkg-ci-ggml/vcpkg.json +++ b/scripts/test_ports/vcpkg-ci-ggml/vcpkg.json @@ -6,8 +6,15 @@ "license": "MIT", "dependencies": [ { + "$comment": "Lacks default (CPU) backend on arm64 windows", "name": "ggml", - "default-features": false + "default-features": false, + "features": [ + { + "name": "vulkan", + "platform": "windows & arm64" + } + ] }, { "name": "vcpkg-cmake", @@ -27,7 +34,10 @@ "name": "metal", "platform": "osx" }, - "opencl", + { + "name": "opencl", + "platform": "!arm32" + }, { "name": "openmp", "platform": "!osx" diff --git a/versions/baseline.json b/versions/baseline.json index e15da7e678..aa7cad2fe9 100644 --- a/versions/baseline.json +++ b/versions/baseline.json @@ -3237,7 +3237,7 @@ "port-version": 9 }, "ggml": { - "baseline": "2025-05-13", + "baseline": "2025-07-23", "port-version": 0 }, "ghc-filesystem": { @@ -5821,8 +5821,8 @@ "port-version": 0 }, "llama-cpp": { - "baseline": "4743", - "port-version": 1 + "baseline": "5975", + "port-version": 0 }, "llfio": { "baseline": "2025-01-13", @@ -10225,8 +10225,8 @@ "port-version": 2 }, "whisper-cpp": { - "baseline": "1.7.5", - "port-version": 1 + "baseline": "1.7.6", + "port-version": 0 }, "wiiuse": { "baseline": "0.15.6", diff --git a/versions/g-/ggml.json b/versions/g-/ggml.json index fb6cf49ac2..21e7603944 100644 --- a/versions/g-/ggml.json +++ b/versions/g-/ggml.json @@ -1,5 +1,10 @@ { "versions": [ + { + "git-tree": "1dab58e6f2563f417018d3ed7f2093cb1a1d3b04", + "version-date": "2025-07-23", + "port-version": 0 + }, { "git-tree": "23d4e4ba6cacc185e6fae3238a1ce5d653c25c41", "version-date": "2025-05-13", diff --git a/versions/l-/llama-cpp.json b/versions/l-/llama-cpp.json index 3222fa2f59..6d029997d7 100644 --- a/versions/l-/llama-cpp.json +++ b/versions/l-/llama-cpp.json @@ -1,5 +1,10 @@ { "versions": [ + { + "git-tree": "a7fcf971485effd5de30746520b36009b9428bf4", + "version": "5975", + "port-version": 0 + }, { "git-tree": "fd2140391f703fc6ec9aba9f7c2d597b90ea5160", "version": "4743", diff --git a/versions/w-/whisper-cpp.json b/versions/w-/whisper-cpp.json index af6d0fa0cd..bd06e82f9c 100644 --- a/versions/w-/whisper-cpp.json +++ b/versions/w-/whisper-cpp.json @@ -1,5 +1,10 @@ { "versions": [ + { + "git-tree": "7920ab0d11ea7a4b094363f03229fd4a49e89c16", + "version": "1.7.6", + "port-version": 0 + }, { "git-tree": "e77b5abf50bb38089afe8dd5b02bd7ae9634c2a4", "version": "1.7.5",