llama-cpp-pro 0.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +295 -0
- package/LICENSE +21 -0
- package/LlamaCpp.podspec +33 -0
- package/LlamaCppCapacitor.podspec +33 -0
- package/Package.swift +29 -0
- package/README.md +93 -0
- package/android/build.gradle +88 -0
- package/android/src/main/AndroidManifest.xml +4 -0
- package/android/src/main/CMakeLists-arm64.txt +138 -0
- package/android/src/main/CMakeLists-x86_64.txt +141 -0
- package/android/src/main/CMakeLists.txt +138 -0
- package/android/src/main/java/ai/annadata/plugin/capacitor/LlamaCpp.java +1340 -0
- package/android/src/main/java/ai/annadata/plugin/capacitor/LlamaCppPlugin.java +814 -0
- package/android/src/main/java/ai/annadata/plugin/capacitor/ModelAdmissionController.java +214 -0
- package/android/src/main/jni-chat-session.cpp +261 -0
- package/android/src/main/jni-lora.cpp +197 -0
- package/android/src/main/jni-multimodal.cpp +167 -0
- package/android/src/main/jni-tts.cpp +290 -0
- package/android/src/main/jni-utils.h +148 -0
- package/android/src/main/jni.cpp +1808 -0
- package/android/src/main/jniLibs/arm64-v8a/libllama-cpp-arm64.so +0 -0
- package/android/src/main/res/.gitkeep +0 -0
- package/build-native.sh +280 -0
- package/cmake/desktop-metal-embed.cmake +30 -0
- package/cmake/desktop-sources.cmake +100 -0
- package/cmake/ggml-backends.cmake +44 -0
- package/cpp/LICENSE +21 -0
- package/cpp/README.md +15 -0
- package/cpp/anyascii.c +22223 -0
- package/cpp/anyascii.h +42 -0
- package/cpp/cap-completion.cpp +942 -0
- package/cpp/cap-completion.h +127 -0
- package/cpp/cap-embedding.cpp +193 -0
- package/cpp/cap-embedding.h +35 -0
- package/cpp/cap-ios-bridge.cpp +1810 -0
- package/cpp/cap-ios-bridge.h +61 -0
- package/cpp/cap-llama.cpp +412 -0
- package/cpp/cap-llama.h +161 -0
- package/cpp/cap-mtmd.hpp +602 -0
- package/cpp/cap-native-server.cpp +1095 -0
- package/cpp/cap-native-server.h +40 -0
- package/cpp/cap-tts.cpp +591 -0
- package/cpp/cap-tts.h +59 -0
- package/cpp/cap-wasm-fs.cpp +156 -0
- package/cpp/cap-wasm-jspi.cpp +19 -0
- package/cpp/cap-wasm-jspi.h +30 -0
- package/cpp/cap-wasm-vfs.cpp +22 -0
- package/cpp/chat-parser.cpp +393 -0
- package/cpp/chat-parser.h +120 -0
- package/cpp/chat.cpp +2315 -0
- package/cpp/chat.h +221 -0
- package/cpp/common.cpp +1664 -0
- package/cpp/common.h +744 -0
- package/cpp/ggml-alloc.c +1028 -0
- package/cpp/ggml-alloc.h +76 -0
- package/cpp/ggml-backend-impl.h +255 -0
- package/cpp/ggml-backend-reg.cpp +600 -0
- package/cpp/ggml-backend.cpp +2121 -0
- package/cpp/ggml-backend.h +354 -0
- package/cpp/ggml-common.h +1878 -0
- package/cpp/ggml-cpp.h +39 -0
- package/cpp/ggml-cpu/amx/amx.cpp +221 -0
- package/cpp/ggml-cpu/amx/amx.h +8 -0
- package/cpp/ggml-cpu/amx/common.h +91 -0
- package/cpp/ggml-cpu/amx/mmq.cpp +2512 -0
- package/cpp/ggml-cpu/amx/mmq.h +10 -0
- package/cpp/ggml-cpu/arch/arm/cpu-feats.cpp +94 -0
- package/cpp/ggml-cpu/arch/arm/quants.c +3650 -0
- package/cpp/ggml-cpu/arch/arm/repack.cpp +1891 -0
- package/cpp/ggml-cpu/arch/x86/cpu-feats.cpp +327 -0
- package/cpp/ggml-cpu/arch/x86/quants.c +3820 -0
- package/cpp/ggml-cpu/arch/x86/repack.cpp +6307 -0
- package/cpp/ggml-cpu/arch-fallback.h +215 -0
- package/cpp/ggml-cpu/binary-ops.cpp +158 -0
- package/cpp/ggml-cpu/binary-ops.h +16 -0
- package/cpp/ggml-cpu/common.h +73 -0
- package/cpp/ggml-cpu/ggml-cpu-impl.h +559 -0
- package/cpp/ggml-cpu/ggml-cpu.c +3578 -0
- package/cpp/ggml-cpu/ggml-cpu.cpp +672 -0
- package/cpp/ggml-cpu/ops.cpp +10587 -0
- package/cpp/ggml-cpu/ops.h +114 -0
- package/cpp/ggml-cpu/quants.c +1193 -0
- package/cpp/ggml-cpu/quants.h +97 -0
- package/cpp/ggml-cpu/repack.cpp +1982 -0
- package/cpp/ggml-cpu/repack.h +120 -0
- package/cpp/ggml-cpu/simd-mappings.h +1184 -0
- package/cpp/ggml-cpu/traits.cpp +36 -0
- package/cpp/ggml-cpu/traits.h +38 -0
- package/cpp/ggml-cpu/unary-ops.cpp +186 -0
- package/cpp/ggml-cpu/unary-ops.h +28 -0
- package/cpp/ggml-cpu/vec.cpp +348 -0
- package/cpp/ggml-cpu/vec.h +1121 -0
- package/cpp/ggml-cpu.h +145 -0
- package/cpp/ggml-impl.h +622 -0
- package/cpp/ggml-metal-impl.h +688 -0
- package/cpp/ggml-metal.h +66 -0
- package/cpp/ggml-metal.m +6833 -0
- package/cpp/ggml-metal.metal +10754 -0
- package/cpp/ggml-opt.cpp +1093 -0
- package/cpp/ggml-opt.h +256 -0
- package/cpp/ggml-quants.c +5324 -0
- package/cpp/ggml-quants.h +106 -0
- package/cpp/ggml-threading.cpp +12 -0
- package/cpp/ggml-threading.h +14 -0
- package/cpp/ggml.c +7108 -0
- package/cpp/ggml.h +2492 -0
- package/cpp/gguf.cpp +1358 -0
- package/cpp/gguf.h +202 -0
- package/cpp/json-partial.cpp +256 -0
- package/cpp/json-partial.h +38 -0
- package/cpp/json-schema-to-grammar.cpp +985 -0
- package/cpp/json-schema-to-grammar.h +21 -0
- package/cpp/llama-adapter.cpp +388 -0
- package/cpp/llama-adapter.h +76 -0
- package/cpp/llama-arch.cpp +2355 -0
- package/cpp/llama-arch.h +499 -0
- package/cpp/llama-batch.cpp +875 -0
- package/cpp/llama-batch.h +160 -0
- package/cpp/llama-chat.cpp +783 -0
- package/cpp/llama-chat.h +65 -0
- package/cpp/llama-context.cpp +2788 -0
- package/cpp/llama-context.h +306 -0
- package/cpp/llama-cparams.cpp +5 -0
- package/cpp/llama-cparams.h +41 -0
- package/cpp/llama-cpp.h +30 -0
- package/cpp/llama-grammar.cpp +1229 -0
- package/cpp/llama-grammar.h +173 -0
- package/cpp/llama-graph.cpp +1891 -0
- package/cpp/llama-graph.h +810 -0
- package/cpp/llama-hparams.cpp +180 -0
- package/cpp/llama-hparams.h +233 -0
- package/cpp/llama-impl.cpp +167 -0
- package/cpp/llama-impl.h +61 -0
- package/cpp/llama-io.cpp +15 -0
- package/cpp/llama-io.h +35 -0
- package/cpp/llama-kv-cache-iswa.cpp +318 -0
- package/cpp/llama-kv-cache-iswa.h +135 -0
- package/cpp/llama-kv-cache.cpp +2059 -0
- package/cpp/llama-kv-cache.h +374 -0
- package/cpp/llama-kv-cells.h +491 -0
- package/cpp/llama-memory-hybrid.cpp +258 -0
- package/cpp/llama-memory-hybrid.h +137 -0
- package/cpp/llama-memory-recurrent.cpp +1146 -0
- package/cpp/llama-memory-recurrent.h +179 -0
- package/cpp/llama-memory.cpp +59 -0
- package/cpp/llama-memory.h +119 -0
- package/cpp/llama-mmap.cpp +609 -0
- package/cpp/llama-mmap.h +68 -0
- package/cpp/llama-model-loader.cpp +1166 -0
- package/cpp/llama-model-loader.h +170 -0
- package/cpp/llama-model-saver.cpp +282 -0
- package/cpp/llama-model-saver.h +37 -0
- package/cpp/llama-model.cpp +19061 -0
- package/cpp/llama-model.h +491 -0
- package/cpp/llama-sampling.cpp +2575 -0
- package/cpp/llama-sampling.h +32 -0
- package/cpp/llama-vocab.cpp +3792 -0
- package/cpp/llama-vocab.h +176 -0
- package/cpp/llama.cpp +358 -0
- package/cpp/llama.h +1373 -0
- package/cpp/log.cpp +428 -0
- package/cpp/log.h +103 -0
- package/cpp/minja/chat-template.hpp +550 -0
- package/cpp/minja/minja.hpp +3009 -0
- package/cpp/nlohmann/json.hpp +25526 -0
- package/cpp/nlohmann/json_fwd.hpp +187 -0
- package/cpp/regex-partial.cpp +204 -0
- package/cpp/regex-partial.h +56 -0
- package/cpp/sampling.cpp +579 -0
- package/cpp/sampling.h +107 -0
- package/cpp/tools/mtmd/clip-impl.h +473 -0
- package/cpp/tools/mtmd/clip.cpp +4322 -0
- package/cpp/tools/mtmd/clip.h +106 -0
- package/cpp/tools/mtmd/miniaudio/miniaudio.h +93468 -0
- package/cpp/tools/mtmd/mtmd-audio.cpp +769 -0
- package/cpp/tools/mtmd/mtmd-audio.h +47 -0
- package/cpp/tools/mtmd/mtmd-helper.cpp +460 -0
- package/cpp/tools/mtmd/mtmd-helper.h +95 -0
- package/cpp/tools/mtmd/mtmd.cpp +1066 -0
- package/cpp/tools/mtmd/mtmd.h +302 -0
- package/cpp/tools/mtmd/stb/stb_image.h +7988 -0
- package/cpp/unicode-data.cpp +7034 -0
- package/cpp/unicode-data.h +20 -0
- package/cpp/unicode.cpp +1061 -0
- package/cpp/unicode.h +68 -0
- package/cpp/vendor/cpp-httplib/httplib.cpp +16509 -0
- package/cpp/vendor/cpp-httplib/httplib.h +3883 -0
- package/desktop/electron-builder.config.cjs +157 -0
- package/desktop/entitlements.mac.plist +12 -0
- package/desktop/package.json +11 -0
- package/desktop/resolve-package-root.cjs +88 -0
- package/desktop/src/main/backend-selector.cjs +148 -0
- package/desktop/src/main/gpu-probe.cjs +142 -0
- package/desktop/src/main/index.cjs +58 -0
- package/desktop/src/main/ipc-handlers.cjs +212 -0
- package/desktop/src/main/model-store.cjs +50 -0
- package/desktop/src/main/preload.cjs +39 -0
- package/desktop/src/main/sidecar-client.cjs +76 -0
- package/desktop/src/main/sidecar-manager.cjs +364 -0
- package/dist/docs.json +14357 -0
- package/dist/esm/definitions.d.ts +731 -0
- package/dist/esm/definitions.js +2 -0
- package/dist/esm/definitions.js.map +1 -0
- package/dist/esm/desktop.d.ts +37 -0
- package/dist/esm/desktop.js +133 -0
- package/dist/esm/desktop.js.map +1 -0
- package/dist/esm/index.d.ts +200 -0
- package/dist/esm/index.js +612 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/isomorphic/desktop.runtime.d.ts +37 -0
- package/dist/esm/isomorphic/desktop.runtime.js +36 -0
- package/dist/esm/isomorphic/desktop.runtime.js.map +1 -0
- package/dist/esm/isomorphic/errors.d.ts +6 -0
- package/dist/esm/isomorphic/errors.js +9 -0
- package/dist/esm/isomorphic/errors.js.map +1 -0
- package/dist/esm/isomorphic/model.admission.d.ts +17 -0
- package/dist/esm/isomorphic/model.admission.js +27 -0
- package/dist/esm/isomorphic/model.admission.js.map +1 -0
- package/dist/esm/isomorphic/model.scheduler.d.ts +31 -0
- package/dist/esm/isomorphic/model.scheduler.js +95 -0
- package/dist/esm/isomorphic/model.scheduler.js.map +1 -0
- package/dist/esm/isomorphic/provider.desktop.d.ts +40 -0
- package/dist/esm/isomorphic/provider.desktop.js +411 -0
- package/dist/esm/isomorphic/provider.desktop.js.map +1 -0
- package/dist/esm/isomorphic/provider.factory.d.ts +2 -0
- package/dist/esm/isomorphic/provider.factory.js +16 -0
- package/dist/esm/isomorphic/provider.factory.js.map +1 -0
- package/dist/esm/isomorphic/provider.interface.d.ts +76 -0
- package/dist/esm/isomorphic/provider.interface.js +2 -0
- package/dist/esm/isomorphic/provider.interface.js.map +1 -0
- package/dist/esm/isomorphic/provider.native.d.ts +18 -0
- package/dist/esm/isomorphic/provider.native.js +173 -0
- package/dist/esm/isomorphic/provider.native.js.map +1 -0
- package/dist/esm/isomorphic/provider.web.d.ts +88 -0
- package/dist/esm/isomorphic/provider.web.js +573 -0
- package/dist/esm/isomorphic/provider.web.js.map +1 -0
- package/dist/esm/isomorphic/sidecar-sse.d.ts +14 -0
- package/dist/esm/isomorphic/sidecar-sse.js +76 -0
- package/dist/esm/isomorphic/sidecar-sse.js.map +1 -0
- package/dist/esm/isomorphic/wasmMemoryCalibration.d.ts +26 -0
- package/dist/esm/isomorphic/wasmMemoryCalibration.js +60 -0
- package/dist/esm/isomorphic/wasmMemoryCalibration.js.map +1 -0
- package/dist/esm/isomorphic/wasmMemoryPolicy.d.ts +55 -0
- package/dist/esm/isomorphic/wasmMemoryPolicy.js +93 -0
- package/dist/esm/isomorphic/wasmMemoryPolicy.js.map +1 -0
- package/dist/esm/storage/manifest.d.ts +13 -0
- package/dist/esm/storage/manifest.js +87 -0
- package/dist/esm/storage/manifest.js.map +1 -0
- package/dist/esm/storage/opfs.store.d.ts +31 -0
- package/dist/esm/storage/opfs.store.js +241 -0
- package/dist/esm/storage/opfs.store.js.map +1 -0
- package/dist/esm/web.d.ts +206 -0
- package/dist/esm/web.js +521 -0
- package/dist/esm/web.js.map +1 -0
- package/dist/esm/workers/async-file.d.ts +13 -0
- package/dist/esm/workers/async-file.js +12 -0
- package/dist/esm/workers/async-file.js.map +1 -0
- package/dist/esm/workers/heapfs.d.ts +55 -0
- package/dist/esm/workers/heapfs.js +115 -0
- package/dist/esm/workers/heapfs.js.map +1 -0
- package/dist/esm/workers/wasm.engine.d.ts +86 -0
- package/dist/esm/workers/wasm.engine.js +504 -0
- package/dist/esm/workers/wasm.engine.js.map +1 -0
- package/dist/esm/workers/worker.protocol.d.ts +160 -0
- package/dist/esm/workers/worker.protocol.js +2 -0
- package/dist/esm/workers/worker.protocol.js.map +1 -0
- package/dist/plugin.cjs +3179 -0
- package/dist/plugin.cjs.map +1 -0
- package/dist/plugin.js +3181 -0
- package/dist/plugin.js.map +1 -0
- package/dist/wasm/llama_engine.d.ts +74 -0
- package/dist/wasm/llama_engine.js +1829 -0
- package/dist/wasm/llama_engine.wasm +0 -0
- package/dist/wasm/llama_engine_emscripten.mjs +2 -0
- package/dist/wasm/package.json +16 -0
- package/dist/workers/llm.worker.js +1226 -0
- package/dist/workers/llm.worker.js.map +7 -0
- package/extraResources/llama-wasm/llama_engine.d.ts +74 -0
- package/extraResources/llama-wasm/llama_engine.js +1829 -0
- package/extraResources/llama-wasm/llama_engine.wasm +0 -0
- package/extraResources/llama-wasm/llama_engine_emscripten.mjs +2 -0
- package/extraResources/llama-wasm/package.json +16 -0
- package/extraResources/sidecar/README.md +11 -0
- package/extraResources/sidecar/darwin-arm64 +0 -0
- package/extraResources/sidecar/darwin-x64 +0 -0
- package/ios/CMakeLists-arm64.txt +161 -0
- package/ios/CMakeLists-x86_64.txt +188 -0
- package/ios/CMakeLists.txt +161 -0
- package/ios/Frameworks/llama-cpp.framework/Info.plist +28 -0
- package/ios/Frameworks/llama-cpp.framework/llama-cpp +0 -0
- package/ios/Sources/LlamaCppCapacitor/LlamaCpp.swift +1365 -0
- package/ios/Sources/LlamaCppCapacitor/LlamaCppPlugin.swift +694 -0
- package/ios/Sources/LlamaCppCapacitor/LlamaNativeBridge.swift +349 -0
- package/ios/Sources/LlamaCppCapacitor/ModelAdmissionController.swift +177 -0
- package/ios/embed-metal-shaders.sh +24 -0
- package/ios/metal-embed.cmake +29 -0
- package/package.json +281 -0
- package/scripts/build-js-preserve-wasm.cjs +53 -0
- package/scripts/build-sidecar-linux.sh +6 -0
- package/scripts/build-sidecar-win.bat +19 -0
- package/scripts/build-sidecar.sh +184 -0
- package/scripts/embed-llama-ios-app-framework.sh +63 -0
- package/scripts/ensure-desktop-sidecar-bundle.cjs +103 -0
- package/scripts/ensure-llama-ios-xcframework.sh +108 -0
- package/scripts/fix-esm-extensions.cjs +45 -0
- package/scripts/prepare-js-dist.cjs +28 -0
- package/scripts/stage-desktop-resources.cjs +116 -0
- package/sidecar/CMakeLists.txt +192 -0
- package/sidecar/cap-sidecar-main.cpp +68 -0
- package/types/llama-cpp-pro.d.ts +441 -0
|
Binary file
|
|
File without changes
|
package/build-native.sh
ADDED
|
@@ -0,0 +1,280 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
|
|
3
|
+
# Build script for llama-cpp Capacitor plugin
|
|
4
|
+
# This script compiles the native llama.cpp library for iOS and Android
|
|
5
|
+
|
|
6
|
+
set -e
|
|
7
|
+
|
|
8
|
+
# Colors for output
|
|
9
|
+
RED='\033[0;31m'
|
|
10
|
+
GREEN='\033[0;32m'
|
|
11
|
+
YELLOW='\033[1;33m'
|
|
12
|
+
BLUE='\033[0;34m'
|
|
13
|
+
NC='\033[0m' # No Color
|
|
14
|
+
|
|
15
|
+
# Function to print colored output
|
|
16
|
+
print_status() {
|
|
17
|
+
echo -e "${BLUE}[INFO]${NC} $1"
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
print_success() {
|
|
21
|
+
echo -e "${GREEN}[SUCCESS]${NC} $1"
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
print_warning() {
|
|
25
|
+
echo -e "${YELLOW}[WARNING]${NC} $1"
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
print_error() {
|
|
29
|
+
echo -e "${RED}[ERROR]${NC} $1"
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
bytes_to_mb() {
|
|
33
|
+
awk -v bytes="$1" 'BEGIN { printf "%.2f", bytes / 1048576 }'
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
# Check if we're on macOS for iOS builds
|
|
37
|
+
check_macos() {
|
|
38
|
+
if [[ "$OSTYPE" != "darwin"* ]]; then
|
|
39
|
+
print_warning "iOS builds require macOS. Skipping iOS build."
|
|
40
|
+
return 1
|
|
41
|
+
fi
|
|
42
|
+
return 0
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
# Check if Android SDK is available
|
|
46
|
+
check_android_sdk() {
|
|
47
|
+
if [ -z "$ANDROID_HOME" ] && [ -z "$ANDROID_SDK_ROOT" ]; then
|
|
48
|
+
print_warning "Android SDK not found. Please set ANDROID_HOME or ANDROID_SDK_ROOT."
|
|
49
|
+
print_warning "Skipping Android build."
|
|
50
|
+
return 1
|
|
51
|
+
fi
|
|
52
|
+
return 0
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
# Detect NDK path: ndk/<version>/build/cmake/android.toolchain.cmake
|
|
56
|
+
# Uses latest versioned NDK under $ANDROID_SDK/ndk/ (e.g. ndk/29.0.13113456).
|
|
57
|
+
detect_ndk() {
|
|
58
|
+
local sdk="${ANDROID_HOME:-$ANDROID_SDK_ROOT}"
|
|
59
|
+
local ndk_root="$sdk/ndk"
|
|
60
|
+
if [ ! -d "$ndk_root" ]; then
|
|
61
|
+
echo ""
|
|
62
|
+
return 1
|
|
63
|
+
fi
|
|
64
|
+
local latest=""
|
|
65
|
+
local latest_ver=0
|
|
66
|
+
for v in "$ndk_root"/*; do
|
|
67
|
+
[ -d "$v" ] || continue
|
|
68
|
+
local base=$(basename "$v")
|
|
69
|
+
if [[ "$base" =~ ^[0-9] ]]; then
|
|
70
|
+
local ver=$(echo "$base" | sed 's/[^0-9]//g' | head -c 10)
|
|
71
|
+
ver=${ver:-0}
|
|
72
|
+
if [ "$ver" -gt "$latest_ver" ] 2>/dev/null; then
|
|
73
|
+
latest_ver=$ver
|
|
74
|
+
latest=$v
|
|
75
|
+
fi
|
|
76
|
+
fi
|
|
77
|
+
done
|
|
78
|
+
if [ -n "$latest" ] && [ -f "$latest/build/cmake/android.toolchain.cmake" ]; then
|
|
79
|
+
echo "$latest"
|
|
80
|
+
return 0
|
|
81
|
+
fi
|
|
82
|
+
echo ""
|
|
83
|
+
return 1
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
# Build iOS library
|
|
87
|
+
build_ios() {
|
|
88
|
+
print_status "Building iOS library..."
|
|
89
|
+
|
|
90
|
+
if ! check_macos; then
|
|
91
|
+
return 1
|
|
92
|
+
fi
|
|
93
|
+
|
|
94
|
+
# Always start from a clean iOS build directory to avoid stale Xcode settings
|
|
95
|
+
rm -rf ios/build
|
|
96
|
+
mkdir -p ios/build
|
|
97
|
+
cd ios/build
|
|
98
|
+
|
|
99
|
+
# Configure with CMake
|
|
100
|
+
# IMPORTANT: CMAKE_OSX_SYSROOT=iphoneos ensures we build for iOS, not macOS.
|
|
101
|
+
# Without it, the framework would be built for macOS and fail to link in an iOS app.
|
|
102
|
+
# IMPORTANT: build iOS framework as **ARM64-only**.
|
|
103
|
+
# Including x86_64 here makes CMake/Xcode try to link an x86_64 slice,
|
|
104
|
+
# but we only compile ARM-specific kernels (arch/arm), which leads to
|
|
105
|
+
# undefined symbols like lm_ggml_gemm_* for x86_64.
|
|
106
|
+
cmake .. \
|
|
107
|
+
-DCMAKE_BUILD_TYPE=Release \
|
|
108
|
+
-DCMAKE_OSX_SYSROOT=iphoneos \
|
|
109
|
+
-DCMAKE_OSX_ARCHITECTURES="arm64" \
|
|
110
|
+
-DCMAKE_OSX_DEPLOYMENT_TARGET=13.0 \
|
|
111
|
+
-DCMAKE_XCODE_ATTRIBUTE_ENABLE_BITCODE=NO
|
|
112
|
+
|
|
113
|
+
# Build (parallel: -j uses available CPU cores)
|
|
114
|
+
JOBS=$(sysctl -n hw.ncpu 2>/dev/null || nproc 2>/dev/null || echo 4)
|
|
115
|
+
cmake --build . --config Release -- -j"$JOBS"
|
|
116
|
+
|
|
117
|
+
# CMake builds the framework directly (FRAMEWORK TRUE in CMakeLists.txt)
|
|
118
|
+
# Verify the framework was created
|
|
119
|
+
if [ -d "llama-cpp.framework" ]; then
|
|
120
|
+
print_success "iOS framework built successfully at: $(pwd)/llama-cpp.framework"
|
|
121
|
+
|
|
122
|
+
# Binary location: CMake may produce flat (llama-cpp) or Versions/A/ layout
|
|
123
|
+
BINARY=""
|
|
124
|
+
if [ -f "llama-cpp.framework/llama-cpp" ]; then
|
|
125
|
+
BINARY="llama-cpp.framework/llama-cpp"
|
|
126
|
+
elif [ -f "llama-cpp.framework/Versions/A/llama-cpp" ]; then
|
|
127
|
+
BINARY="llama-cpp.framework/Versions/A/llama-cpp"
|
|
128
|
+
fi
|
|
129
|
+
if [ -n "$BINARY" ]; then
|
|
130
|
+
if xcrun strip -x -S "$BINARY" 2>/dev/null; then
|
|
131
|
+
print_status "Stripped debug symbols from iOS framework"
|
|
132
|
+
fi
|
|
133
|
+
fi
|
|
134
|
+
|
|
135
|
+
# Build flat framework (single binary, no duplication) for npm publishing
|
|
136
|
+
if [ -z "$BINARY" ] || [ ! -f "$BINARY" ]; then
|
|
137
|
+
print_error "iOS framework binary not found"
|
|
138
|
+
cd ../..
|
|
139
|
+
return 1
|
|
140
|
+
fi
|
|
141
|
+
rm -rf ../Frameworks/llama-cpp.framework
|
|
142
|
+
mkdir -p ../Frameworks/llama-cpp.framework/Resources
|
|
143
|
+
cp "$BINARY" ../Frameworks/llama-cpp.framework/llama-cpp
|
|
144
|
+
[ -f llama-cpp.framework/Info.plist ] && cp llama-cpp.framework/Info.plist ../Frameworks/llama-cpp.framework/
|
|
145
|
+
[ -f llama-cpp.framework/Versions/A/Resources/Info.plist ] && cp llama-cpp.framework/Versions/A/Resources/Info.plist ../Frameworks/llama-cpp.framework/Resources/
|
|
146
|
+
print_success "iOS framework copied to ios/Frameworks/ for npm package (flat, no duplication)"
|
|
147
|
+
else
|
|
148
|
+
print_error "iOS framework not found after build"
|
|
149
|
+
cd ../..
|
|
150
|
+
return 1
|
|
151
|
+
fi
|
|
152
|
+
|
|
153
|
+
cd ../..
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
# Build Android library
|
|
157
|
+
build_android() {
|
|
158
|
+
print_status "Building Android library..."
|
|
159
|
+
|
|
160
|
+
if ! check_android_sdk; then
|
|
161
|
+
return 1
|
|
162
|
+
fi
|
|
163
|
+
|
|
164
|
+
ANDROID_NDK=$(detect_ndk)
|
|
165
|
+
if [ -z "$ANDROID_NDK" ]; then
|
|
166
|
+
print_error "Android NDK not found. Install NDK via Android Studio (SDK Manager → NDK)."
|
|
167
|
+
print_error "Expected: \$ANDROID_HOME/ndk/<version>/build/cmake/android.toolchain.cmake"
|
|
168
|
+
return 1
|
|
169
|
+
fi
|
|
170
|
+
print_status "Using NDK: $ANDROID_NDK"
|
|
171
|
+
|
|
172
|
+
TOOLCHAIN_FILE="$ANDROID_NDK/build/cmake/android.toolchain.cmake"
|
|
173
|
+
if [ ! -f "$TOOLCHAIN_FILE" ]; then
|
|
174
|
+
print_error "Toolchain file not found: $TOOLCHAIN_FILE"
|
|
175
|
+
return 1
|
|
176
|
+
fi
|
|
177
|
+
|
|
178
|
+
rm -rf android/build
|
|
179
|
+
mkdir -p android/build
|
|
180
|
+
cd android/build
|
|
181
|
+
|
|
182
|
+
# Build only arm64-v8a to minimize app store size.
|
|
183
|
+
# build.gradle uses abiFilters 'arm64-v8a'; armeabi-v7a is not included in the app.
|
|
184
|
+
# Skipping armeabi-v7a saves ~25–48 MB in package and keeps app size minimal.
|
|
185
|
+
arch="arm64-v8a"
|
|
186
|
+
print_status "Building for $arch (only ABI shipped in app)..."
|
|
187
|
+
rm -rf CMakeCache.txt CMakeFiles Makefile cmake_install.cmake 2>/dev/null || true
|
|
188
|
+
find . -maxdepth 1 -name '*.so' -delete 2>/dev/null || true
|
|
189
|
+
|
|
190
|
+
cmake ../src/main \
|
|
191
|
+
-DCMAKE_BUILD_TYPE=Release \
|
|
192
|
+
-DANDROID_ABI=$arch \
|
|
193
|
+
-DANDROID_PLATFORM=android-21 \
|
|
194
|
+
-DCMAKE_TOOLCHAIN_FILE="$TOOLCHAIN_FILE" \
|
|
195
|
+
-DANDROID_STL=c++_shared
|
|
196
|
+
|
|
197
|
+
JOBS=$(sysctl -n hw.ncpu 2>/dev/null || nproc 2>/dev/null || echo 4)
|
|
198
|
+
cmake --build . --config Release -- -j"$JOBS"
|
|
199
|
+
|
|
200
|
+
FINAL_SO="../src/main/jniLibs/$arch/libllama-cpp-arm64.so"
|
|
201
|
+
if [ -f "$FINAL_SO" ]; then
|
|
202
|
+
PREBUILT="$ANDROID_NDK/toolchains/llvm/prebuilt"
|
|
203
|
+
TOOL_BIN=""
|
|
204
|
+
if [ -d "$PREBUILT/darwin-x86_64" ]; then
|
|
205
|
+
TOOL_BIN="$PREBUILT/darwin-x86_64/bin"
|
|
206
|
+
elif [ -d "$PREBUILT/darwin-aarch64" ]; then
|
|
207
|
+
TOOL_BIN="$PREBUILT/darwin-aarch64/bin"
|
|
208
|
+
fi
|
|
209
|
+
if [ -n "$TOOL_BIN" ]; then
|
|
210
|
+
STRIP_TOOL="$TOOL_BIN/llvm-strip"
|
|
211
|
+
OBJCOPY_TOOL="$TOOL_BIN/llvm-objcopy"
|
|
212
|
+
else
|
|
213
|
+
STRIP_TOOL=$(find "$ANDROID_NDK/toolchains" -name "llvm-strip" -type f 2>/dev/null | head -1)
|
|
214
|
+
OBJCOPY_TOOL=$(find "$ANDROID_NDK/toolchains" -name "llvm-objcopy" -type f 2>/dev/null | head -1)
|
|
215
|
+
fi
|
|
216
|
+
|
|
217
|
+
BEFORE_SIZE=$(wc -c < "$FINAL_SO")
|
|
218
|
+
SYMBOLS_DIR="../symbols/$arch"
|
|
219
|
+
SYMBOL_FILE="$SYMBOLS_DIR/libllama-cpp-arm64.so.debug"
|
|
220
|
+
mkdir -p "$SYMBOLS_DIR"
|
|
221
|
+
|
|
222
|
+
if [ -f "$OBJCOPY_TOOL" ]; then
|
|
223
|
+
"$OBJCOPY_TOOL" --only-keep-debug "$FINAL_SO" "$SYMBOL_FILE"
|
|
224
|
+
print_status "Saved Android debug symbols to: $SYMBOL_FILE"
|
|
225
|
+
else
|
|
226
|
+
cp "$FINAL_SO" "$SYMBOL_FILE"
|
|
227
|
+
print_warning "llvm-objcopy not found; copied unstripped library as debug symbol file"
|
|
228
|
+
fi
|
|
229
|
+
|
|
230
|
+
if [ -f "$STRIP_TOOL" ]; then
|
|
231
|
+
"$STRIP_TOOL" --strip-unneeded "$FINAL_SO"
|
|
232
|
+
if [ -f "$OBJCOPY_TOOL" ]; then
|
|
233
|
+
"$OBJCOPY_TOOL" --add-gnu-debuglink="$SYMBOL_FILE" "$FINAL_SO" || true
|
|
234
|
+
fi
|
|
235
|
+
AFTER_SIZE=$(wc -c < "$FINAL_SO")
|
|
236
|
+
print_status "Stripped Android release library (--strip-unneeded): $(bytes_to_mb "$BEFORE_SIZE") MB -> $(bytes_to_mb "$AFTER_SIZE") MB"
|
|
237
|
+
fi
|
|
238
|
+
else
|
|
239
|
+
print_warning "Expected Android library not found at $FINAL_SO"
|
|
240
|
+
fi
|
|
241
|
+
print_success "Built for $arch"
|
|
242
|
+
|
|
243
|
+
print_success "Android library built successfully"
|
|
244
|
+
cd ../..
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
# Main build function
|
|
248
|
+
main() {
|
|
249
|
+
print_status "Starting llama-cpp Capacitor plugin build..."
|
|
250
|
+
|
|
251
|
+
# Always start clean - remove previous build outputs
|
|
252
|
+
rm -rf ios/build ios/Frameworks android/build
|
|
253
|
+
print_status "Cleaned build directories"
|
|
254
|
+
|
|
255
|
+
# Check dependencies
|
|
256
|
+
if ! command -v cmake &> /dev/null; then
|
|
257
|
+
print_error "CMake is required but not installed"
|
|
258
|
+
exit 1
|
|
259
|
+
fi
|
|
260
|
+
|
|
261
|
+
if ! command -v make &> /dev/null; then
|
|
262
|
+
print_error "Make is required but not installed"
|
|
263
|
+
exit 1
|
|
264
|
+
fi
|
|
265
|
+
|
|
266
|
+
# Build iOS
|
|
267
|
+
if check_macos; then
|
|
268
|
+
build_ios
|
|
269
|
+
fi
|
|
270
|
+
|
|
271
|
+
# Build Android
|
|
272
|
+
if check_android_sdk; then
|
|
273
|
+
build_android
|
|
274
|
+
fi
|
|
275
|
+
|
|
276
|
+
print_success "Build completed successfully!"
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
# Run main function (ignore any args npm may pass)
|
|
280
|
+
main
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# Embed ggml-metal.metal for desktop sidecar builds.
|
|
2
|
+
# Same as ios/metal-embed.cmake but paths are relative to this repo root.
|
|
3
|
+
|
|
4
|
+
set(SOURCE_DIR "${ANNADATA_CPP_DIR}")
|
|
5
|
+
set(METALLIB_COMMON "${SOURCE_DIR}/ggml-common.h")
|
|
6
|
+
set(METALLIB_SOURCE "${SOURCE_DIR}/ggml-metal.metal")
|
|
7
|
+
set(METALLIB_IMPL "${SOURCE_DIR}/ggml-metal-impl.h")
|
|
8
|
+
set(METALLIB_EMBED_SCRIPT "${CMAKE_CURRENT_LIST_DIR}/../ios/embed-metal-shaders.sh")
|
|
9
|
+
|
|
10
|
+
file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/autogenerated")
|
|
11
|
+
|
|
12
|
+
set(METALLIB_EMBED_ASM "${CMAKE_CURRENT_BINARY_DIR}/autogenerated/ggml-metal-embed.s")
|
|
13
|
+
set(METALLIB_SOURCE_EMBED "${CMAKE_CURRENT_BINARY_DIR}/autogenerated/ggml-metal-embed.metal")
|
|
14
|
+
|
|
15
|
+
add_custom_command(
|
|
16
|
+
OUTPUT "${METALLIB_EMBED_ASM}"
|
|
17
|
+
COMMAND "${METALLIB_EMBED_SCRIPT}"
|
|
18
|
+
"${METALLIB_COMMON}"
|
|
19
|
+
"${METALLIB_SOURCE}"
|
|
20
|
+
"${METALLIB_IMPL}"
|
|
21
|
+
"${METALLIB_EMBED_ASM}"
|
|
22
|
+
"${METALLIB_SOURCE_EMBED}"
|
|
23
|
+
DEPENDS
|
|
24
|
+
"${METALLIB_EMBED_SCRIPT}"
|
|
25
|
+
"${METALLIB_COMMON}"
|
|
26
|
+
"${METALLIB_SOURCE}"
|
|
27
|
+
"${METALLIB_IMPL}"
|
|
28
|
+
COMMENT "Generate assembly for embedded Metal shader source (desktop sidecar)"
|
|
29
|
+
VERBATIM
|
|
30
|
+
)
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
# Shared llama.cpp / cap-* source list for desktop sidecar builds.
|
|
2
|
+
# Included by sidecar/CMakeLists.txt.
|
|
3
|
+
|
|
4
|
+
set(ANNADATA_CPP_DIR "${CMAKE_CURRENT_LIST_DIR}/../cpp")
|
|
5
|
+
|
|
6
|
+
set(ANNADATA_DESKTOP_CORE_SOURCES
|
|
7
|
+
${ANNADATA_CPP_DIR}/ggml.c
|
|
8
|
+
${ANNADATA_CPP_DIR}/ggml-alloc.c
|
|
9
|
+
${ANNADATA_CPP_DIR}/ggml-backend.cpp
|
|
10
|
+
${ANNADATA_CPP_DIR}/ggml-backend-reg.cpp
|
|
11
|
+
${ANNADATA_CPP_DIR}/ggml-cpu/amx/amx.cpp
|
|
12
|
+
${ANNADATA_CPP_DIR}/ggml-cpu/amx/mmq.cpp
|
|
13
|
+
${ANNADATA_CPP_DIR}/ggml-cpu/ggml-cpu.c
|
|
14
|
+
${ANNADATA_CPP_DIR}/ggml-cpu/ggml-cpu.cpp
|
|
15
|
+
${ANNADATA_CPP_DIR}/ggml-cpu/quants.c
|
|
16
|
+
${ANNADATA_CPP_DIR}/ggml-cpu/traits.cpp
|
|
17
|
+
${ANNADATA_CPP_DIR}/ggml-cpu/repack.cpp
|
|
18
|
+
${ANNADATA_CPP_DIR}/ggml-cpu/unary-ops.cpp
|
|
19
|
+
${ANNADATA_CPP_DIR}/ggml-cpu/binary-ops.cpp
|
|
20
|
+
${ANNADATA_CPP_DIR}/ggml-cpu/vec.cpp
|
|
21
|
+
${ANNADATA_CPP_DIR}/ggml-cpu/ops.cpp
|
|
22
|
+
${ANNADATA_CPP_DIR}/ggml-opt.cpp
|
|
23
|
+
${ANNADATA_CPP_DIR}/ggml-threading.cpp
|
|
24
|
+
${ANNADATA_CPP_DIR}/ggml-quants.c
|
|
25
|
+
${ANNADATA_CPP_DIR}/gguf.cpp
|
|
26
|
+
${ANNADATA_CPP_DIR}/log.cpp
|
|
27
|
+
${ANNADATA_CPP_DIR}/llama-impl.cpp
|
|
28
|
+
${ANNADATA_CPP_DIR}/chat-parser.cpp
|
|
29
|
+
${ANNADATA_CPP_DIR}/json-partial.cpp
|
|
30
|
+
${ANNADATA_CPP_DIR}/regex-partial.cpp
|
|
31
|
+
${ANNADATA_CPP_DIR}/tools/mtmd/mtmd.cpp
|
|
32
|
+
${ANNADATA_CPP_DIR}/tools/mtmd/mtmd-audio.cpp
|
|
33
|
+
${ANNADATA_CPP_DIR}/tools/mtmd/clip.cpp
|
|
34
|
+
${ANNADATA_CPP_DIR}/tools/mtmd/mtmd-helper.cpp
|
|
35
|
+
${ANNADATA_CPP_DIR}/llama-grammar.cpp
|
|
36
|
+
${ANNADATA_CPP_DIR}/llama-sampling.cpp
|
|
37
|
+
${ANNADATA_CPP_DIR}/llama-vocab.cpp
|
|
38
|
+
${ANNADATA_CPP_DIR}/llama-adapter.cpp
|
|
39
|
+
${ANNADATA_CPP_DIR}/llama-chat.cpp
|
|
40
|
+
${ANNADATA_CPP_DIR}/llama-context.cpp
|
|
41
|
+
${ANNADATA_CPP_DIR}/llama-arch.cpp
|
|
42
|
+
${ANNADATA_CPP_DIR}/llama-batch.cpp
|
|
43
|
+
${ANNADATA_CPP_DIR}/llama-cparams.cpp
|
|
44
|
+
${ANNADATA_CPP_DIR}/llama-hparams.cpp
|
|
45
|
+
${ANNADATA_CPP_DIR}/llama.cpp
|
|
46
|
+
${ANNADATA_CPP_DIR}/llama-model.cpp
|
|
47
|
+
${ANNADATA_CPP_DIR}/llama-model-loader.cpp
|
|
48
|
+
${ANNADATA_CPP_DIR}/llama-model-saver.cpp
|
|
49
|
+
${ANNADATA_CPP_DIR}/llama-kv-cache.cpp
|
|
50
|
+
${ANNADATA_CPP_DIR}/llama-kv-cache-iswa.cpp
|
|
51
|
+
${ANNADATA_CPP_DIR}/llama-memory-hybrid.cpp
|
|
52
|
+
${ANNADATA_CPP_DIR}/llama-memory-recurrent.cpp
|
|
53
|
+
${ANNADATA_CPP_DIR}/llama-mmap.cpp
|
|
54
|
+
${ANNADATA_CPP_DIR}/llama-memory.cpp
|
|
55
|
+
${ANNADATA_CPP_DIR}/llama-io.cpp
|
|
56
|
+
${ANNADATA_CPP_DIR}/llama-graph.cpp
|
|
57
|
+
${ANNADATA_CPP_DIR}/sampling.cpp
|
|
58
|
+
${ANNADATA_CPP_DIR}/unicode-data.cpp
|
|
59
|
+
${ANNADATA_CPP_DIR}/unicode.cpp
|
|
60
|
+
${ANNADATA_CPP_DIR}/common.cpp
|
|
61
|
+
${ANNADATA_CPP_DIR}/chat.cpp
|
|
62
|
+
${ANNADATA_CPP_DIR}/json-schema-to-grammar.cpp
|
|
63
|
+
${ANNADATA_CPP_DIR}/anyascii.c
|
|
64
|
+
${ANNADATA_CPP_DIR}/cap-llama.cpp
|
|
65
|
+
${ANNADATA_CPP_DIR}/cap-completion.cpp
|
|
66
|
+
${ANNADATA_CPP_DIR}/cap-tts.cpp
|
|
67
|
+
${ANNADATA_CPP_DIR}/cap-embedding.cpp
|
|
68
|
+
${ANNADATA_CPP_DIR}/cap-ios-bridge.cpp
|
|
69
|
+
${ANNADATA_CPP_DIR}/cap-native-server.cpp
|
|
70
|
+
${ANNADATA_CPP_DIR}/vendor/cpp-httplib/httplib.cpp
|
|
71
|
+
)
|
|
72
|
+
|
|
73
|
+
# Architecture-specific CPU kernels
|
|
74
|
+
set(_DESKTOP_IS_ARM64 OFF)
|
|
75
|
+
if(APPLE)
|
|
76
|
+
if(CMAKE_OSX_ARCHITECTURES MATCHES "arm64")
|
|
77
|
+
set(_DESKTOP_IS_ARM64 ON)
|
|
78
|
+
elseif(NOT CMAKE_OSX_ARCHITECTURES OR CMAKE_OSX_ARCHITECTURES STREQUAL "")
|
|
79
|
+
execute_process(COMMAND uname -m OUTPUT_VARIABLE _UNAME_M OUTPUT_STRIP_TRAILING_WHITESPACE)
|
|
80
|
+
if(_UNAME_M STREQUAL "arm64")
|
|
81
|
+
set(_DESKTOP_IS_ARM64 ON)
|
|
82
|
+
endif()
|
|
83
|
+
endif()
|
|
84
|
+
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64|arm64|ARM64")
|
|
85
|
+
set(_DESKTOP_IS_ARM64 ON)
|
|
86
|
+
endif()
|
|
87
|
+
|
|
88
|
+
if(_DESKTOP_IS_ARM64)
|
|
89
|
+
list(APPEND ANNADATA_DESKTOP_CORE_SOURCES
|
|
90
|
+
${ANNADATA_CPP_DIR}/ggml-cpu/arch/arm/quants.c
|
|
91
|
+
${ANNADATA_CPP_DIR}/ggml-cpu/arch/arm/repack.cpp
|
|
92
|
+
${ANNADATA_CPP_DIR}/ggml-cpu/arch/arm/cpu-feats.cpp
|
|
93
|
+
)
|
|
94
|
+
else()
|
|
95
|
+
list(APPEND ANNADATA_DESKTOP_CORE_SOURCES
|
|
96
|
+
${ANNADATA_CPP_DIR}/ggml-cpu/arch/x86/quants.c
|
|
97
|
+
${ANNADATA_CPP_DIR}/ggml-cpu/arch/x86/repack.cpp
|
|
98
|
+
${ANNADATA_CPP_DIR}/ggml-cpu/arch/x86/cpu-feats.cpp
|
|
99
|
+
)
|
|
100
|
+
endif()
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# Optional ggml GPU backend plugin builds
|
|
2
|
+
#
|
|
3
|
+
# Requires LLAMA_CPP_UPSTREAM pointing at a full upstream llama.cpp checkout.
|
|
4
|
+
# Produces libggml-vulkan.so, libggml-cuda.so, libggml-hip.so next to the sidecar.
|
|
5
|
+
#
|
|
6
|
+
# Usage:
|
|
7
|
+
# cmake -B sidecar/build -DLLAMA_CPP_UPSTREAM=/path/to/llama.cpp -DSIDECAR_VARIANT=vulkan-openblas
|
|
8
|
+
# cmake --build sidecar/build --target ggml-backends
|
|
9
|
+
|
|
10
|
+
if(NOT LLAMA_CPP_UPSTREAM OR NOT EXISTS "${LLAMA_CPP_UPSTREAM}/ggml/CMakeLists.txt")
|
|
11
|
+
message(STATUS "ggml-backends: LLAMA_CPP_UPSTREAM not set — skipping GPU plugin build")
|
|
12
|
+
return()
|
|
13
|
+
endif()
|
|
14
|
+
|
|
15
|
+
message(STATUS "ggml-backends: building plugins from ${LLAMA_CPP_UPSTREAM}")
|
|
16
|
+
|
|
17
|
+
set(GGML_BUILD_TESTS OFF CACHE BOOL "" FORCE)
|
|
18
|
+
set(GGML_BUILD_EXAMPLES OFF CACHE BOOL "" FORCE)
|
|
19
|
+
set(BUILD_SHARED_LIBS ON CACHE BOOL "" FORCE)
|
|
20
|
+
|
|
21
|
+
set(_GGML_VULKAN OFF)
|
|
22
|
+
set(_GGML_CUDA OFF)
|
|
23
|
+
set(_GGML_HIP OFF)
|
|
24
|
+
|
|
25
|
+
if(SIDECAR_VARIANT MATCHES "vulkan")
|
|
26
|
+
set(_GGML_VULKAN ON)
|
|
27
|
+
elseif(SIDECAR_VARIANT STREQUAL "cuda")
|
|
28
|
+
set(_GGML_CUDA ON)
|
|
29
|
+
elseif(SIDECAR_VARIANT STREQUAL "rocm")
|
|
30
|
+
set(_GGML_HIP ON)
|
|
31
|
+
elseif(SIDECAR_VARIANT STREQUAL "vulkan-openblas")
|
|
32
|
+
set(_GGML_VULKAN ON)
|
|
33
|
+
endif()
|
|
34
|
+
|
|
35
|
+
set(GGML_VULKAN ${_GGML_VULKAN} CACHE BOOL "" FORCE)
|
|
36
|
+
set(GGML_CUDA ${_GGML_CUDA} CACHE BOOL "" FORCE)
|
|
37
|
+
set(GGML_HIP ${_GGML_HIP} CACHE BOOL "" FORCE)
|
|
38
|
+
|
|
39
|
+
add_subdirectory("${LLAMA_CPP_UPSTREAM}/ggml" "${CMAKE_BINARY_DIR}/ggml-upstream")
|
|
40
|
+
|
|
41
|
+
add_custom_target(ggml-backends ALL
|
|
42
|
+
DEPENDS ggml
|
|
43
|
+
COMMENT "ggml GPU backend plugins built into ${CMAKE_BINARY_DIR}/bin"
|
|
44
|
+
)
|
package/cpp/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2023-2024 The ggml authors
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/cpp/README.md
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# Note
|
|
2
|
+
|
|
3
|
+
- The **project-specific** files in this folder (never overwritten by bootstrap) are:
|
|
4
|
+
- `cap-llama.cpp` / `cap-llama.h` – Capacitor bridge (context, model load)
|
|
5
|
+
- `cap-completion.cpp` / `cap-completion.h` – completion
|
|
6
|
+
- `cap-tts.cpp` / `cap-tts.h` – TTS
|
|
7
|
+
- `cap-embedding.cpp` / `cap-embedding.h` – embeddings
|
|
8
|
+
- `cap-mtmd.hpp` – multimodal/vision
|
|
9
|
+
- `tools/mtmd/` – multimodal/vision tooling
|
|
10
|
+
- All other sources are synced from [llama.cpp](https://github.com/ggerganov/llama.cpp).
|
|
11
|
+
- **Update native source** (e.g. for a newer llama.cpp or vision support): run from repo root:
|
|
12
|
+
```bash
|
|
13
|
+
./scripts/bootstrap.sh [branch-or-tag-or-commit]
|
|
14
|
+
```
|
|
15
|
+
See [scripts/bootstrap.sh](../scripts/bootstrap.sh) and [docs/IOS_IMPLEMENTATION_GUIDE.md](../docs/IOS_IMPLEMENTATION_GUIDE.md).
|