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
package/package.json
ADDED
|
@@ -0,0 +1,281 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "llama-cpp-pro",
|
|
3
|
+
"version": "0.2.2",
|
|
4
|
+
"description": "Pro llama.cpp Capacitor plugin for offline AI on iOS, Android, Web/PWA, and Desktop — text generation, chat, multimodal, TTS, LoRA, embeddings, and more.",
|
|
5
|
+
"main": "dist/plugin.cjs",
|
|
6
|
+
"type": "module",
|
|
7
|
+
"module": "dist/esm/index.js",
|
|
8
|
+
"types": "dist/esm/index.d.ts",
|
|
9
|
+
"exports": {
|
|
10
|
+
".": {
|
|
11
|
+
"types": "./dist/esm/index.d.ts",
|
|
12
|
+
"import": "./dist/esm/index.js",
|
|
13
|
+
"require": "./dist/plugin.cjs",
|
|
14
|
+
"default": "./dist/esm/index.js"
|
|
15
|
+
},
|
|
16
|
+
"./wasm/llama_engine.js": {
|
|
17
|
+
"types": "./dist/wasm/llama_engine.d.ts",
|
|
18
|
+
"default": "./dist/wasm/llama_engine.js"
|
|
19
|
+
},
|
|
20
|
+
"./wasm/llama_engine.wasm": "./dist/wasm/llama_engine.wasm",
|
|
21
|
+
"./wasm/llama_engine_emscripten.mjs": "./dist/wasm/llama_engine_emscripten.mjs",
|
|
22
|
+
"./wasm/package.json": "./dist/wasm/package.json",
|
|
23
|
+
"./dist/*": "./dist/*",
|
|
24
|
+
"./desktop": "./desktop/src/main/index.cjs",
|
|
25
|
+
"./desktop/electron-builder": "./desktop/electron-builder.config.cjs",
|
|
26
|
+
"./desktop/resolve-package-root": "./desktop/resolve-package-root.cjs",
|
|
27
|
+
"./desktop/ipc-handlers": "./desktop/src/main/ipc-handlers.cjs",
|
|
28
|
+
"./desktop/preload": "./desktop/src/main/preload.cjs",
|
|
29
|
+
"./desktop/entitlements.mac.plist": "./desktop/entitlements.mac.plist",
|
|
30
|
+
"./package.json": "./package.json"
|
|
31
|
+
},
|
|
32
|
+
"unpkg": "dist/plugin.js",
|
|
33
|
+
"files": [
|
|
34
|
+
"README.md",
|
|
35
|
+
"LICENSE",
|
|
36
|
+
"CHANGELOG.md",
|
|
37
|
+
"android/src/main/",
|
|
38
|
+
"android/build.gradle",
|
|
39
|
+
"build-native.sh",
|
|
40
|
+
"cpp/",
|
|
41
|
+
"dist/",
|
|
42
|
+
"ios/CMakeLists.txt",
|
|
43
|
+
"ios/CMakeLists-arm64.txt",
|
|
44
|
+
"ios/CMakeLists-x86_64.txt",
|
|
45
|
+
"ios/metal-embed.cmake",
|
|
46
|
+
"ios/embed-metal-shaders.sh",
|
|
47
|
+
"ios/Sources",
|
|
48
|
+
"ios/Frameworks",
|
|
49
|
+
"scripts/ensure-llama-ios-xcframework.sh",
|
|
50
|
+
"scripts/embed-llama-ios-app-framework.sh",
|
|
51
|
+
"Package.swift",
|
|
52
|
+
"LlamaCpp.podspec",
|
|
53
|
+
"LlamaCppCapacitor.podspec",
|
|
54
|
+
"types/",
|
|
55
|
+
"desktop/",
|
|
56
|
+
"sidecar/CMakeLists.txt",
|
|
57
|
+
"sidecar/cap-sidecar-main.cpp",
|
|
58
|
+
"cmake/",
|
|
59
|
+
"extraResources/",
|
|
60
|
+
"scripts/stage-desktop-resources.cjs",
|
|
61
|
+
"scripts/ensure-desktop-sidecar-bundle.cjs",
|
|
62
|
+
"scripts/build-sidecar.sh",
|
|
63
|
+
"scripts/build-sidecar-linux.sh",
|
|
64
|
+
"scripts/build-sidecar-win.bat",
|
|
65
|
+
"scripts/build-js-preserve-wasm.cjs",
|
|
66
|
+
"scripts/fix-esm-extensions.cjs",
|
|
67
|
+
"scripts/prepare-js-dist.cjs"
|
|
68
|
+
],
|
|
69
|
+
"readme": "README.md",
|
|
70
|
+
"author": "Mr. Yakub Mohammad <yakub@annadata.ai> (yakub@arusatech.com, yakub@arusallc.com)",
|
|
71
|
+
"license": "MIT",
|
|
72
|
+
"repository": {
|
|
73
|
+
"type": "git",
|
|
74
|
+
"url": "git+https://github.com/arusatech/llama-cpp-pro.git"
|
|
75
|
+
},
|
|
76
|
+
"bugs": {
|
|
77
|
+
"url": "https://github.com/arusatech/llama-cpp-pro/issues"
|
|
78
|
+
},
|
|
79
|
+
"homepage": "https://annadata.ai",
|
|
80
|
+
"keywords": [
|
|
81
|
+
"capacitor",
|
|
82
|
+
"plugin",
|
|
83
|
+
"native",
|
|
84
|
+
"ios",
|
|
85
|
+
"rocm",
|
|
86
|
+
"intel",
|
|
87
|
+
"amd",
|
|
88
|
+
"nvidia",
|
|
89
|
+
"cuda",
|
|
90
|
+
"vulkan",
|
|
91
|
+
"metal",
|
|
92
|
+
"opengl",
|
|
93
|
+
"webgpu",
|
|
94
|
+
"webgl",
|
|
95
|
+
"webassembly",
|
|
96
|
+
"wasm",
|
|
97
|
+
"beaglebone",
|
|
98
|
+
"raspberry-pi",
|
|
99
|
+
"android",
|
|
100
|
+
"llama",
|
|
101
|
+
"llama-cpp",
|
|
102
|
+
"llama.cpp",
|
|
103
|
+
"bindings",
|
|
104
|
+
"ai",
|
|
105
|
+
"cmake",
|
|
106
|
+
"cmake-js",
|
|
107
|
+
"prebuilt-binaries",
|
|
108
|
+
"llm",
|
|
109
|
+
"gguf",
|
|
110
|
+
"grammar",
|
|
111
|
+
"embedding",
|
|
112
|
+
"rerank",
|
|
113
|
+
"reranking",
|
|
114
|
+
"json-grammar",
|
|
115
|
+
"json-schema-grammar",
|
|
116
|
+
"functions",
|
|
117
|
+
"function-calling",
|
|
118
|
+
"token-prediction",
|
|
119
|
+
"speculative-decoding",
|
|
120
|
+
"temperature",
|
|
121
|
+
"minP",
|
|
122
|
+
"topK",
|
|
123
|
+
"topP",
|
|
124
|
+
"seed",
|
|
125
|
+
"xtc",
|
|
126
|
+
"json-schema",
|
|
127
|
+
"self-hosted",
|
|
128
|
+
"local",
|
|
129
|
+
"catai",
|
|
130
|
+
"mistral",
|
|
131
|
+
"deepseek",
|
|
132
|
+
"qwen",
|
|
133
|
+
"qwq",
|
|
134
|
+
"gpt",
|
|
135
|
+
"gpt-oss",
|
|
136
|
+
"typescript",
|
|
137
|
+
"lora",
|
|
138
|
+
"batching",
|
|
139
|
+
"gpu",
|
|
140
|
+
"machine-learning",
|
|
141
|
+
"offline-ai",
|
|
142
|
+
"text-generation",
|
|
143
|
+
"multimodal",
|
|
144
|
+
"tts",
|
|
145
|
+
"text-to-speech",
|
|
146
|
+
"embeddings",
|
|
147
|
+
"chat-completion",
|
|
148
|
+
"annadata",
|
|
149
|
+
"annadata.ai",
|
|
150
|
+
"llama-cpp-pro",
|
|
151
|
+
"llama-cpp-capacitor",
|
|
152
|
+
"large-language-model"
|
|
153
|
+
],
|
|
154
|
+
"scripts": {
|
|
155
|
+
"verify": "npm run verify:ios && npm run verify:android && npm run verify:web",
|
|
156
|
+
"verify:ios": "xcodebuild -scheme LlamaCpp -destination generic/platform=iOS",
|
|
157
|
+
"verify:android": "cd android && gradlew.bat clean build test && cd ..",
|
|
158
|
+
"verify:web": "npm run build",
|
|
159
|
+
"lint": "npm run eslint && npm run prettier -- --check && npm run swiftlint -- lint",
|
|
160
|
+
"fmt": "npm run eslint -- --fix && npm run prettier -- --write && npm run swiftlint -- --fix --format",
|
|
161
|
+
"eslint": "eslint . --ext ts",
|
|
162
|
+
"prettier": "prettier \"**/*.{css,html,ts,js,java}\" --plugin=prettier-plugin-java",
|
|
163
|
+
"swiftlint": "node-swiftlint",
|
|
164
|
+
"docgen": "npx docgen --api LlamaCppPlugin --output-readme README.md --output-json dist/docs.json",
|
|
165
|
+
"build": "npm run clean && npm run docgen && tsc && rollup -c rollup.config.mjs",
|
|
166
|
+
"build:js": "node ./scripts/build-js-preserve-wasm.cjs",
|
|
167
|
+
"prepare": "node ./scripts/prepare-js-dist.cjs",
|
|
168
|
+
"build:wasm": "LLAMA_WASM_JSPI=1 LLAMA_WASM_PTHREAD=0 ./scripts/build-wasm.sh",
|
|
169
|
+
"build:wasm:jspi": "LLAMA_WASM_JSPI=1 LLAMA_WASM_PTHREAD=0 ./scripts/build-wasm.sh",
|
|
170
|
+
"build:wasm:pthreads": "LLAMA_WASM_JSPI=1 LLAMA_WASM_PTHREAD=1 ./scripts/build-wasm.sh",
|
|
171
|
+
"build:wasm:full": "LLAMA_WASM_JSPI=1 LLAMA_WASM_PTHREAD=0 ./scripts/build-wasm.sh",
|
|
172
|
+
"build:worker": "node ./scripts/build-worker.mjs",
|
|
173
|
+
"build:wasm:assets": "node ./scripts/copy-wasm-assets.mjs",
|
|
174
|
+
"build:native": "./build-native.sh",
|
|
175
|
+
"build:sidecar": "./scripts/build-sidecar.sh",
|
|
176
|
+
"build:sidecar:metal": "./scripts/build-sidecar.sh metal-coreml",
|
|
177
|
+
"build:sidecar:cpu": "./scripts/build-sidecar.sh cpu",
|
|
178
|
+
"build:sidecar:linux": "bash ./scripts/build-sidecar-linux.sh",
|
|
179
|
+
"build:sidecar:win": "scripts\\build-sidecar-win.bat",
|
|
180
|
+
"build:sidecar:cuda": "./scripts/build-sidecar.sh cuda",
|
|
181
|
+
"build:sidecar:rocm": "./scripts/build-sidecar.sh rocm",
|
|
182
|
+
"build:sidecar:vulkan": "./scripts/build-sidecar.sh vulkan-openblas",
|
|
183
|
+
"build:sidecar:intel": "./scripts/build-sidecar.sh vulkan",
|
|
184
|
+
"build:sidecar:darwin-x64": "./scripts/build-sidecar.sh darwin-x64",
|
|
185
|
+
"build:sidecar:universal": "./scripts/build-sidecar.sh universal",
|
|
186
|
+
"stage:desktop": "node ./scripts/stage-desktop-resources.cjs",
|
|
187
|
+
"verify:desktop:bundle": "node ./scripts/ensure-desktop-sidecar-bundle.cjs",
|
|
188
|
+
"build:desktop": "npm run build:pwa && npm run build:sidecar && npm run stage:desktop",
|
|
189
|
+
"build:desktop:universal": "npm run build:pwa && npm run build:sidecar:universal && npm run stage:desktop",
|
|
190
|
+
"build:all": "npm run build && npm run build:native",
|
|
191
|
+
"build:pwa": "npm run build:wasm && npm run build:worker && npm run build:wasm:assets",
|
|
192
|
+
"build:pwa:full": "npm run build:wasm:full && npm run build:worker && npm run build:wasm:assets",
|
|
193
|
+
"build:ios:xcframework": "bash ./scripts/ensure-llama-ios-xcframework.sh",
|
|
194
|
+
"ios:prepare": "npm run build:ios:xcframework",
|
|
195
|
+
"build:package": "npm run build && npm run build:native && npm run build:pwa",
|
|
196
|
+
"build:package:full": "npm run build && npm run build:native && npm run build:pwa:full",
|
|
197
|
+
"verify:pack:artifacts": "node ./scripts/verify-pack-artifacts.mjs",
|
|
198
|
+
"build:ios": "cd ios && cmake -B build -S . && cmake --build build --config Release",
|
|
199
|
+
"build:android": "cd android && gradlew.bat assembleRelease",
|
|
200
|
+
"prepack": "npm run build:package && npm run verify:pack:artifacts",
|
|
201
|
+
"pack": "npm pack --dry-run",
|
|
202
|
+
"pack:full": "npm run build:package:full && npm run verify:pack:artifacts && npm pack --ignore-scripts",
|
|
203
|
+
"release:pack": "npm run build:wasm:assets && npm run verify:pack:artifacts && npm pack --ignore-scripts",
|
|
204
|
+
"release:0.2.0": "npm run build:package:full && npm run verify:pwa && npm run release:pack",
|
|
205
|
+
"test": "jest",
|
|
206
|
+
"test:pwa:smoke": "jest --config test/jest.pwa.config.cjs",
|
|
207
|
+
"verify:pwa": "npx tsc -p tsconfig.json --noEmit && npm run test:pwa:smoke",
|
|
208
|
+
"release:gate:pwa": "./scripts/pwa-release-gate.sh",
|
|
209
|
+
"test:integration": "./scripts/test-integration.sh",
|
|
210
|
+
"test:integration:jest": "jest --config test/jest.integration.config.js",
|
|
211
|
+
"test:integration:custom": "ts-node test/integration/test-runner.ts",
|
|
212
|
+
"test:unit": "jest --testPathIgnorePatterns=test/integration",
|
|
213
|
+
"test:coverage": "jest --coverage",
|
|
214
|
+
"clean": "rimraf ./dist",
|
|
215
|
+
"clean:native": "rimraf ios/build ios/Frameworks android/build android/src/main/jniLibs",
|
|
216
|
+
"clean:wasm": "rimraf src-rust/target src-rust/pkg dist/wasm",
|
|
217
|
+
"clean:all": "npm run clean && npm run clean:native && npm run clean:wasm",
|
|
218
|
+
"clean:test": "rimraf test/output test/coverage",
|
|
219
|
+
"watch": "tsc --watch",
|
|
220
|
+
"prepublishOnly": "npm run build"
|
|
221
|
+
},
|
|
222
|
+
"devDependencies": {
|
|
223
|
+
"@capacitor/android": "^8.0.0",
|
|
224
|
+
"@capacitor/core": "^8.0.0",
|
|
225
|
+
"@capacitor/docgen": "^0.3.0",
|
|
226
|
+
"@capacitor/ios": "^8.0.0",
|
|
227
|
+
"@ionic/eslint-config": "^0.4.0",
|
|
228
|
+
"@ionic/prettier-config": "^4.0.0",
|
|
229
|
+
"@ionic/swiftlint-config": "^2.0.0",
|
|
230
|
+
"@types/jest": "^30.0.0",
|
|
231
|
+
"eslint": "^8.57.0",
|
|
232
|
+
"jest": "^30.4.2",
|
|
233
|
+
"prettier": "^3.4.2",
|
|
234
|
+
"prettier-plugin-java": "^2.6.6",
|
|
235
|
+
"rimraf": "^6.0.1",
|
|
236
|
+
"rollup": "^4.30.1",
|
|
237
|
+
"swiftlint": "^2.0.0",
|
|
238
|
+
"ts-jest": "^29.4.11",
|
|
239
|
+
"typescript": "^5.0.0"
|
|
240
|
+
},
|
|
241
|
+
"peerDependencies": {
|
|
242
|
+
"@capacitor/core": ">=6.0.0"
|
|
243
|
+
},
|
|
244
|
+
"peerDependenciesMeta": {
|
|
245
|
+
"@capacitor/core": {
|
|
246
|
+
"optional": false
|
|
247
|
+
}
|
|
248
|
+
},
|
|
249
|
+
"prettier": "@ionic/prettier-config",
|
|
250
|
+
"swiftlint": "@ionic/swiftlint-config",
|
|
251
|
+
"eslintConfig": {
|
|
252
|
+
"extends": "@ionic/eslint-config/recommended"
|
|
253
|
+
},
|
|
254
|
+
"jest": {
|
|
255
|
+
"preset": "ts-jest",
|
|
256
|
+
"testEnvironment": "node",
|
|
257
|
+
"roots": [
|
|
258
|
+
"<rootDir>/test"
|
|
259
|
+
],
|
|
260
|
+
"testMatch": [
|
|
261
|
+
"**/*.test.ts"
|
|
262
|
+
],
|
|
263
|
+
"moduleFileExtensions": [
|
|
264
|
+
"ts",
|
|
265
|
+
"js",
|
|
266
|
+
"json"
|
|
267
|
+
],
|
|
268
|
+
"collectCoverageFrom": [
|
|
269
|
+
"src/**/*.ts",
|
|
270
|
+
"!src/**/*.d.ts"
|
|
271
|
+
]
|
|
272
|
+
},
|
|
273
|
+
"capacitor": {
|
|
274
|
+
"ios": {
|
|
275
|
+
"src": "ios"
|
|
276
|
+
},
|
|
277
|
+
"android": {
|
|
278
|
+
"src": "android"
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Build TypeScript + Rollup JS without wiping dist/wasm (or workers).
|
|
3
|
+
*/
|
|
4
|
+
const { existsSync, mkdirSync, rmSync, renameSync, cpSync } = require('node:fs');
|
|
5
|
+
const { join } = require('node:path');
|
|
6
|
+
const { spawnSync } = require('node:child_process');
|
|
7
|
+
|
|
8
|
+
const root = join(__dirname, '..');
|
|
9
|
+
const dist = join(root, 'dist');
|
|
10
|
+
const stash = join(root, '.dist-stash');
|
|
11
|
+
|
|
12
|
+
const run = (cmd, args) => {
|
|
13
|
+
const r = spawnSync(cmd, args, { cwd: root, stdio: 'inherit', shell: process.platform === 'win32' });
|
|
14
|
+
if (r.status !== 0) process.exit(r.status ?? 1);
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
// Stash large assets if present.
|
|
18
|
+
if (existsSync(stash)) rmSync(stash, { recursive: true, force: true });
|
|
19
|
+
mkdirSync(stash, { recursive: true });
|
|
20
|
+
for (const name of ['wasm', 'workers']) {
|
|
21
|
+
const from = join(dist, name);
|
|
22
|
+
if (existsSync(from)) {
|
|
23
|
+
renameSync(from, join(stash, name));
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
for (const name of [
|
|
28
|
+
'esm',
|
|
29
|
+
'plugin.js',
|
|
30
|
+
'plugin.cjs',
|
|
31
|
+
'plugin.cjs.js',
|
|
32
|
+
'plugin.js.map',
|
|
33
|
+
'plugin.cjs.map',
|
|
34
|
+
'plugin.cjs.js.map',
|
|
35
|
+
'docs.json',
|
|
36
|
+
]) {
|
|
37
|
+
const p = join(dist, name);
|
|
38
|
+
if (existsSync(p)) rmSync(p, { recursive: true, force: true });
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
run(join(root, 'node_modules', '.bin', 'tsc'), []);
|
|
42
|
+
run(process.execPath, [join(root, 'scripts', 'fix-esm-extensions.cjs')]);
|
|
43
|
+
run(join(root, 'node_modules', '.bin', 'rollup'), ['-c', 'rollup.config.mjs']);
|
|
44
|
+
mkdirSync(dist, { recursive: true });
|
|
45
|
+
for (const name of ['wasm', 'workers']) {
|
|
46
|
+
const from = join(stash, name);
|
|
47
|
+
if (existsSync(from)) {
|
|
48
|
+
cpSync(from, join(dist, name), { recursive: true });
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
rmSync(stash, { recursive: true, force: true });
|
|
52
|
+
|
|
53
|
+
console.log('[llama-cpp-pro] build:js complete (wasm preserved if present)');
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
@echo off
|
|
2
|
+
REM Build llama-cpp sidecar for Windows x64 (Vulkan + OpenBLAS default)
|
|
3
|
+
setlocal
|
|
4
|
+
set ROOT=%~dp0..
|
|
5
|
+
set VARIANT=%1
|
|
6
|
+
if "%VARIANT%"=="" set VARIANT=vulkan-openblas
|
|
7
|
+
|
|
8
|
+
if not exist "%ROOT%\sidecar\build" mkdir "%ROOT%\sidecar\build"
|
|
9
|
+
|
|
10
|
+
cmake -B "%ROOT%\sidecar\build" -S "%ROOT%\sidecar" ^
|
|
11
|
+
-DCMAKE_BUILD_TYPE=Release ^
|
|
12
|
+
-DSIDECAR_VARIANT=%VARIANT%
|
|
13
|
+
|
|
14
|
+
cmake --build "%ROOT%\sidecar\build" --config Release -j
|
|
15
|
+
|
|
16
|
+
if not exist "%ROOT%\sidecar\bin" mkdir "%ROOT%\sidecar\bin"
|
|
17
|
+
copy /Y "%ROOT%\sidecar\build\bin\*" "%ROOT%\sidecar\bin\"
|
|
18
|
+
|
|
19
|
+
echo Sidecar built: %ROOT%\sidecar\bin
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# Build the llama-cpp desktop sidecar for the current host platform.
|
|
3
|
+
#
|
|
4
|
+
# Usage:
|
|
5
|
+
# ./scripts/build-sidecar.sh [variant]
|
|
6
|
+
# ./scripts/build-sidecar.sh [variant] --arch arm64|x64|host
|
|
7
|
+
# ./scripts/build-sidecar.sh darwin-x64 # cross-build Intel Mac binary
|
|
8
|
+
# ./scripts/build-sidecar.sh universal # arm64 + x64 on macOS
|
|
9
|
+
#
|
|
10
|
+
# Variants: metal-coreml | metal | vulkan-openblas | cuda | rocm | cpu | openblas | vulkan
|
|
11
|
+
#
|
|
12
|
+
# Optional env:
|
|
13
|
+
# LLAMA_CPP_UPSTREAM=/path/to/llama.cpp — also build ggml GPU backend plugins
|
|
14
|
+
# OPENBLAS_ROOT=/path/to/openblas
|
|
15
|
+
# SIDECAR_ARCH=arm64|x64 — same as --arch
|
|
16
|
+
|
|
17
|
+
set -euo pipefail
|
|
18
|
+
|
|
19
|
+
ROOT="$(cd "$(dirname "$0")/.." && pwd)"
|
|
20
|
+
VARIANT=""
|
|
21
|
+
ARCH_OPT="${SIDECAR_ARCH:-host}"
|
|
22
|
+
|
|
23
|
+
while [[ $# -gt 0 ]]; do
|
|
24
|
+
case "$1" in
|
|
25
|
+
--arch)
|
|
26
|
+
shift
|
|
27
|
+
ARCH_OPT="${1:-}"
|
|
28
|
+
if [[ -z "${ARCH_OPT}" ]]; then
|
|
29
|
+
echo "error: --arch requires arm64|x64|host" >&2
|
|
30
|
+
exit 1
|
|
31
|
+
fi
|
|
32
|
+
;;
|
|
33
|
+
--arch=*)
|
|
34
|
+
ARCH_OPT="${1#--arch=}"
|
|
35
|
+
;;
|
|
36
|
+
-h|--help)
|
|
37
|
+
sed -n '2,16p' "$0"
|
|
38
|
+
exit 0
|
|
39
|
+
;;
|
|
40
|
+
*)
|
|
41
|
+
if [[ -z "${VARIANT}" ]]; then
|
|
42
|
+
VARIANT="$1"
|
|
43
|
+
else
|
|
44
|
+
echo "error: unexpected argument: $1" >&2
|
|
45
|
+
exit 1
|
|
46
|
+
fi
|
|
47
|
+
;;
|
|
48
|
+
esac
|
|
49
|
+
shift
|
|
50
|
+
done
|
|
51
|
+
|
|
52
|
+
# Aliases that imply arch + Metal backend on macOS
|
|
53
|
+
if [[ "${VARIANT}" == "darwin-x64" ]]; then
|
|
54
|
+
VARIANT="metal"
|
|
55
|
+
ARCH_OPT="x64"
|
|
56
|
+
elif [[ "${VARIANT}" == "darwin-arm64" ]]; then
|
|
57
|
+
if [[ "$(uname -m)" == "arm64" ]]; then
|
|
58
|
+
VARIANT="metal-coreml"
|
|
59
|
+
else
|
|
60
|
+
VARIANT="metal"
|
|
61
|
+
fi
|
|
62
|
+
ARCH_OPT="arm64"
|
|
63
|
+
elif [[ "${VARIANT}" == "universal" ]]; then
|
|
64
|
+
if [[ "$(uname -s)" != "Darwin" ]]; then
|
|
65
|
+
echo "error: universal sidecar builds are only supported on macOS" >&2
|
|
66
|
+
exit 1
|
|
67
|
+
fi
|
|
68
|
+
echo "==> Building universal macOS sidecars (arm64 + x64)"
|
|
69
|
+
"$0" metal-coreml --arch=arm64
|
|
70
|
+
"$0" metal --arch=x64
|
|
71
|
+
echo "==> Universal sidecar binaries:"
|
|
72
|
+
ls -la "${ROOT}/sidecar/bin"/darwin-* || true
|
|
73
|
+
exit 0
|
|
74
|
+
fi
|
|
75
|
+
|
|
76
|
+
if [[ -z "${VARIANT}" ]]; then
|
|
77
|
+
case "$(uname -s)" in
|
|
78
|
+
Darwin)
|
|
79
|
+
if [[ "$(uname -m)" == "arm64" && "${ARCH_OPT}" != "x64" ]]; then
|
|
80
|
+
VARIANT="metal-coreml"
|
|
81
|
+
else
|
|
82
|
+
VARIANT="metal"
|
|
83
|
+
fi
|
|
84
|
+
;;
|
|
85
|
+
Linux) VARIANT="vulkan-openblas" ;;
|
|
86
|
+
*) VARIANT="cpu" ;;
|
|
87
|
+
esac
|
|
88
|
+
fi
|
|
89
|
+
|
|
90
|
+
# Resolve arch → CMAKE_OSX_ARCHITECTURES / build dir suffix
|
|
91
|
+
HOST_ARCH="$(uname -m)"
|
|
92
|
+
case "${ARCH_OPT}" in
|
|
93
|
+
host|"")
|
|
94
|
+
if [[ "${HOST_ARCH}" == "arm64" ]]; then
|
|
95
|
+
TARGET_ARCH="arm64"
|
|
96
|
+
OSX_ARCH="arm64"
|
|
97
|
+
else
|
|
98
|
+
TARGET_ARCH="x64"
|
|
99
|
+
OSX_ARCH="x86_64"
|
|
100
|
+
fi
|
|
101
|
+
;;
|
|
102
|
+
arm64)
|
|
103
|
+
TARGET_ARCH="arm64"
|
|
104
|
+
OSX_ARCH="arm64"
|
|
105
|
+
;;
|
|
106
|
+
x64|x86_64|amd64)
|
|
107
|
+
TARGET_ARCH="x64"
|
|
108
|
+
OSX_ARCH="x86_64"
|
|
109
|
+
;;
|
|
110
|
+
*)
|
|
111
|
+
echo "error: unknown arch '${ARCH_OPT}' (use arm64|x64|host)" >&2
|
|
112
|
+
exit 1
|
|
113
|
+
;;
|
|
114
|
+
esac
|
|
115
|
+
|
|
116
|
+
# metal-coreml is Apple Silicon only
|
|
117
|
+
if [[ "${VARIANT}" == "metal-coreml" && "${TARGET_ARCH}" == "x64" ]]; then
|
|
118
|
+
echo "==> Note: metal-coreml is arm64-only; using metal for darwin-x64"
|
|
119
|
+
VARIANT="metal"
|
|
120
|
+
fi
|
|
121
|
+
|
|
122
|
+
BUILD_DIR="${ROOT}/sidecar/build-${TARGET_ARCH}"
|
|
123
|
+
BIN_DIR="${ROOT}/sidecar/bin"
|
|
124
|
+
mkdir -p "${BIN_DIR}"
|
|
125
|
+
|
|
126
|
+
CMAKE_ARGS=(
|
|
127
|
+
-B "${BUILD_DIR}"
|
|
128
|
+
-S "${ROOT}/sidecar"
|
|
129
|
+
-DCMAKE_BUILD_TYPE=Release
|
|
130
|
+
"-DSIDECAR_VARIANT=${VARIANT}"
|
|
131
|
+
)
|
|
132
|
+
|
|
133
|
+
if [[ "$(uname -s)" == "Darwin" ]]; then
|
|
134
|
+
CMAKE_ARGS+=("-DCMAKE_OSX_ARCHITECTURES=${OSX_ARCH}")
|
|
135
|
+
fi
|
|
136
|
+
|
|
137
|
+
if [[ -n "${LLAMA_CPP_UPSTREAM:-}" ]]; then
|
|
138
|
+
CMAKE_ARGS+=("-DLLAMA_CPP_UPSTREAM=${LLAMA_CPP_UPSTREAM}")
|
|
139
|
+
fi
|
|
140
|
+
|
|
141
|
+
echo "==> Configuring sidecar (variant=${VARIANT} arch=${TARGET_ARCH})"
|
|
142
|
+
cmake "${CMAKE_ARGS[@]}"
|
|
143
|
+
|
|
144
|
+
echo "==> Building sidecar"
|
|
145
|
+
cmake --build "${BUILD_DIR}" --config Release -j"$(nproc 2>/dev/null || sysctl -n hw.ncpu 2>/dev/null || echo 4)"
|
|
146
|
+
|
|
147
|
+
echo "==> Staging binaries to sidecar/bin/"
|
|
148
|
+
# Prefer the expected named binary; fall back to copying executables from build/bin
|
|
149
|
+
EXPECTED_NAME=""
|
|
150
|
+
if [[ "$(uname -s)" == "Darwin" ]]; then
|
|
151
|
+
EXPECTED_NAME="darwin-${TARGET_ARCH}"
|
|
152
|
+
elif [[ "$(uname -s)" == "Linux" ]]; then
|
|
153
|
+
if [[ "${VARIANT}" == "vulkan-openblas" ]]; then
|
|
154
|
+
EXPECTED_NAME="linux-${TARGET_ARCH}"
|
|
155
|
+
else
|
|
156
|
+
EXPECTED_NAME="linux-${TARGET_ARCH}-${VARIANT}"
|
|
157
|
+
fi
|
|
158
|
+
fi
|
|
159
|
+
|
|
160
|
+
if [[ -n "${EXPECTED_NAME}" && -f "${BUILD_DIR}/bin/${EXPECTED_NAME}" ]]; then
|
|
161
|
+
cp -f "${BUILD_DIR}/bin/${EXPECTED_NAME}" "${BIN_DIR}/"
|
|
162
|
+
elif [[ -n "${EXPECTED_NAME}" && -f "${BUILD_DIR}/bin/${EXPECTED_NAME}.exe" ]]; then
|
|
163
|
+
cp -f "${BUILD_DIR}/bin/${EXPECTED_NAME}.exe" "${BIN_DIR}/"
|
|
164
|
+
else
|
|
165
|
+
find "${BUILD_DIR}/bin" -maxdepth 1 -type f -perm +111 2>/dev/null | while read -r f; do
|
|
166
|
+
cp -f "$f" "${BIN_DIR}/"
|
|
167
|
+
done
|
|
168
|
+
fi
|
|
169
|
+
|
|
170
|
+
find "${BUILD_DIR}/bin" -maxdepth 1 -type f \( -name "*.exe" -o -name "*.dll" -o -name "*.so" -o -name "libggml-*" -o -name "ggml-*" \) 2>/dev/null | while read -r f; do
|
|
171
|
+
cp -f "$f" "${BIN_DIR}/" || true
|
|
172
|
+
done
|
|
173
|
+
|
|
174
|
+
if [[ -n "${EXPECTED_NAME}" ]]; then
|
|
175
|
+
STAGED="${BIN_DIR}/${EXPECTED_NAME}"
|
|
176
|
+
if [[ -f "${STAGED}" ]]; then
|
|
177
|
+
echo "==> Built $(file "${STAGED}")"
|
|
178
|
+
else
|
|
179
|
+
echo "warning: expected ${EXPECTED_NAME} not found in ${BIN_DIR}" >&2
|
|
180
|
+
fi
|
|
181
|
+
fi
|
|
182
|
+
|
|
183
|
+
echo "==> Done. Binaries in ${BIN_DIR}:"
|
|
184
|
+
ls -la "${BIN_DIR}" || true
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# Copy the correct llama-cpp.xcframework slice into App.app/Frameworks for dlopen.
|
|
3
|
+
# Invoked from the iOS app Xcode target (Run Script) or manually with Xcode env vars set.
|
|
4
|
+
set -euo pipefail
|
|
5
|
+
|
|
6
|
+
if [ -z "${TARGET_BUILD_DIR:-}" ] || [ -z "${FRAMEWORKS_FOLDER_PATH:-}" ]; then
|
|
7
|
+
echo "embed-llama-ios-app-framework: skip (not running inside an Xcode build)."
|
|
8
|
+
exit 0
|
|
9
|
+
fi
|
|
10
|
+
|
|
11
|
+
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
|
12
|
+
PLUGIN_DIR="$(cd "$SCRIPT_DIR/.." && pwd)"
|
|
13
|
+
XCF="$PLUGIN_DIR/ios/Frameworks/llama-cpp.xcframework"
|
|
14
|
+
|
|
15
|
+
if [ ! -d "$XCF" ]; then
|
|
16
|
+
echo "error: missing $XCF" >&2
|
|
17
|
+
echo " From your app root run: npm run ios:prepare-llama-cpp" >&2
|
|
18
|
+
exit 1
|
|
19
|
+
fi
|
|
20
|
+
|
|
21
|
+
pick_slice() {
|
|
22
|
+
case "${PLATFORM_NAME:-}" in
|
|
23
|
+
iphoneos)
|
|
24
|
+
echo "ios-arm64"
|
|
25
|
+
;;
|
|
26
|
+
iphonesimulator)
|
|
27
|
+
if [ -d "$XCF/ios-arm64-simulator" ]; then
|
|
28
|
+
echo "ios-arm64-simulator"
|
|
29
|
+
elif [ -d "$XCF/ios-x86_64-simulator" ]; then
|
|
30
|
+
echo "ios-x86_64-simulator"
|
|
31
|
+
else
|
|
32
|
+
echo "error: no simulator slice in $XCF" >&2
|
|
33
|
+
exit 1
|
|
34
|
+
fi
|
|
35
|
+
;;
|
|
36
|
+
*)
|
|
37
|
+
echo "error: unsupported PLATFORM_NAME=${PLATFORM_NAME:-}" >&2
|
|
38
|
+
exit 1
|
|
39
|
+
;;
|
|
40
|
+
esac
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
SLICE="$(pick_slice)"
|
|
44
|
+
SRC_FW="$XCF/$SLICE/llama-cpp.framework"
|
|
45
|
+
DEST_DIR="${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
|
|
46
|
+
DEST_FW="$DEST_DIR/llama-cpp.framework"
|
|
47
|
+
DEST_BIN="$DEST_FW/llama-cpp"
|
|
48
|
+
|
|
49
|
+
if [ ! -f "$SRC_FW/llama-cpp" ]; then
|
|
50
|
+
echo "error: xcframework slice binary missing: $SRC_FW/llama-cpp" >&2
|
|
51
|
+
exit 1
|
|
52
|
+
fi
|
|
53
|
+
|
|
54
|
+
mkdir -p "$DEST_DIR"
|
|
55
|
+
rm -rf "$DEST_FW"
|
|
56
|
+
ditto "$SRC_FW" "$DEST_FW"
|
|
57
|
+
|
|
58
|
+
if [ -n "${EXPANDED_CODE_SIGN_IDENTITY:-}" ] && [ "${CODE_SIGNING_ALLOWED:-}" != "NO" ]; then
|
|
59
|
+
/usr/bin/codesign --force --sign "${EXPANDED_CODE_SIGN_IDENTITY}" \
|
|
60
|
+
--preserve-metadata=identifier,entitlements,flags "$DEST_BIN" 2>/dev/null || true
|
|
61
|
+
fi
|
|
62
|
+
|
|
63
|
+
echo "Embedded llama-cpp.framework ($SLICE) -> $DEST_FW"
|