You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Add Linux Vulkan classifiers + Windows arm64 CPU to the build matrix
Extends the artifact matrix toward upstream llama.cpp's release set with three
new native builds (all wired for CI; the user runs CI to validate on the GPU/
arm runners this environment lacks):
1. vulkan-linux-x86-64 — Linux x86_64 Vulkan classifier JAR
2. vulkan-linux-aarch64 — Linux aarch64 Vulkan classifier JAR
3. Windows arm64 CPU — folded into the DEFAULT JAR (no classifier)
Linux Vulkan (vendor-neutral GPU jar, no CUDA toolkit) — the intersection of
the existing Vulkan-Windows and CUDA-Linux wiring:
- CMakeLists: the elseif(GGML_VULKAN) branch is now OS-aware like GGML_CUDA
(Windows -> resources_windows_vulkan, else resources_linux_vulkan/.../Linux/
${OS_ARCH}); one tree holds both arches.
- pom.xml: profiles vulkan-linux / vulkan-linux-aarch64, both reading the shared
resources_linux_vulkan tree with an arch-scoped resource-copy <includes>
(Linux/x86_64 vs Linux/aarch64), so each classifier JAR carries only its arch.
Verified locally with staged dummy natives: each jar contains exactly one
libjllama.so for its arch.
- publish.yml: build-linux-x86_64-vulkan (native ubuntu-latest) +
build-linux-aarch64-vulkan (ubuntu-24.04-arm, GCC 14); both apt-install the
Vulkan SDK, build -DGGML_VULKAN=ON -DGGML_NATIVE=OFF, build-only (GPU-less
runners). Artifacts merge into one resources_linux_vulkan tree in package/
publish; profiles added to the three -P lists.
- .gitignore: ignore resources_linux_vulkan (also fixed the pre-existing
resources_cuda_linux -> resources_linux_cuda typo).
Windows arm64 CPU (default JAR):
- build-windows-arm64 on the free windows-11-arm runner (msvc-dev-cmd arch:arm64,
Ninja Multi-Config, -DOS_ARCH=aarch64, build + ctest), emitting to the canonical
resources/.../Windows/aarch64 and uploading Windows-aarch64-libraries, which the
*-libraries glob merges into the default tree. No Java change: OSInfo already
maps a Windows-on-ARM JVM (os.arch=aarch64) to Windows/aarch64. Matches the
existing Windows CPU jobs (committed jllama.h + bundled JNI headers, so no
mvn compile / setup-java needed).
All three added to package.needs. Runtime GPU libs are never bundled (driver
supplies libvulkan.so.1) — same policy as every GPU classifier.
Local verification (CI does the real GPU/arm builds): CMake configures clean and
the CPU branch still routes correctly; pom.xml is well-formed and both new
profiles are recognized and activate; the per-arch classifier split was proven by
packaging staged dummy natives; the workflow YAML parses (40 jobs) with all needs
resolving and all -P lists updated. README classifier table + snippets and CLAUDE.md
document the additions.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HL7d4uQ3cKR5HwYFPvZvv7
0 commit comments