Commit 0ee9435b8 for llama.cpp
commit 0ee9435b8f9143b002dcb485f169aa5070ff6809
Author: Yuri Khrustalev <ykhrustalev@users.noreply.github.com>
Date: Tue Sep 22 03:35:03 2026 -0400
ci : publish snapdragon builds in release workflow (#29007)
The snapdragon CI builds packages only to feed the QDC device tests, so
Hexagon NPU binaries never reached the releases page. Build both targets
in release.yml and attach them as release assets.
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index 363227f52..be13d9118 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -544,6 +544,120 @@ jobs:
path: llama-${{ steps.tag.outputs.name }}-bin-android-arm64.tar.gz
name: llama-bin-android-arm64.tar.gz
+ android-arm64-snapdragon:
+ needs: [check-release, ui-build]
+ if: ${{ needs.check-release.outputs.should_release == 'true' }}
+
+ runs-on: ubuntu-latest
+ container: 'ghcr.io/snapdragon-toolchain/arm64-android:v0.7'
+
+ defaults:
+ run:
+ shell: bash
+
+ steps:
+ - name: Clone
+ id: checkout
+ uses: actions/checkout@v6
+ with:
+ fetch-depth: 0
+
+ # checkout runs as the host user; in-container steps run as root, so git
+ # refuses to touch a repo it does not own. Mark the workspace as safe.
+ - name: Git safe directory
+ run: git config --global --add safe.directory "$GITHUB_WORKSPACE"
+
+ - name: Download UI build
+ uses: actions/download-artifact@v7
+ with:
+ name: llama-ui.zip
+ path: tools/ui/dist
+
+ - name: Build
+ id: cmake_build
+ run: |
+ cp docs/backend/snapdragon/CMakeUserPresets.json .
+ cmake --preset arm64-android-snapdragon-release -B build \
+ -DCMAKE_INSTALL_RPATH='$ORIGIN;$ORIGIN/../lib' \
+ -DCMAKE_BUILD_WITH_INSTALL_RPATH=ON \
+ -DLLAMA_BUILD_BORINGSSL=ON \
+ ${{ env.CMAKE_ARGS }}
+ cmake --build build -j $(nproc)
+ cmake --install build --prefix pkg-snapdragon/llama.cpp
+
+ - name: Determine tag name
+ id: tag
+ uses: ./.github/actions/get-tag-name
+
+ - name: Pack artifacts
+ id: pack_artifacts
+ run: |
+ cp LICENSE pkg-snapdragon/llama.cpp/
+ tar -czvf llama-${{ steps.tag.outputs.name }}-bin-android-arm64-snapdragon.tar.gz --transform "s,^\.,llama-${{ steps.tag.outputs.name }}," -C pkg-snapdragon/llama.cpp .
+
+ - name: Upload artifacts
+ uses: actions/upload-artifact@v6
+ with:
+ path: llama-${{ steps.tag.outputs.name }}-bin-android-arm64-snapdragon.tar.gz
+ name: llama-bin-android-arm64-snapdragon.tar.gz
+
+ linux-arm64-snapdragon:
+ needs: [check-release, ui-build]
+ if: ${{ needs.check-release.outputs.should_release == 'true' }}
+
+ runs-on: ubuntu-latest
+ container: 'ghcr.io/snapdragon-toolchain/arm64-linux:v0.7'
+
+ defaults:
+ run:
+ shell: bash
+
+ steps:
+ - name: Clone
+ id: checkout
+ uses: actions/checkout@v6
+ with:
+ fetch-depth: 0
+
+ # checkout runs as the host user; in-container steps run as root, so git
+ # refuses to touch a repo it does not own. Mark the workspace as safe.
+ - name: Git safe directory
+ run: git config --global --add safe.directory "$GITHUB_WORKSPACE"
+
+ - name: Download UI build
+ uses: actions/download-artifact@v7
+ with:
+ name: llama-ui.zip
+ path: tools/ui/dist
+
+ - name: Build
+ id: cmake_build
+ run: |
+ cp docs/backend/snapdragon/CMakeUserPresets.json .
+ cmake --preset arm64-linux-snapdragon-release -B build -DGGML_OPENCL=ON \
+ -DCMAKE_INSTALL_RPATH='$ORIGIN;$ORIGIN/../lib' \
+ -DCMAKE_BUILD_WITH_INSTALL_RPATH=ON \
+ -DLLAMA_BUILD_BORINGSSL=ON \
+ ${{ env.CMAKE_ARGS }}
+ cmake --build build -j $(nproc)
+ cmake --install build --prefix pkg-snapdragon/llama.cpp
+
+ - name: Determine tag name
+ id: tag
+ uses: ./.github/actions/get-tag-name
+
+ - name: Pack artifacts
+ id: pack_artifacts
+ run: |
+ cp LICENSE pkg-snapdragon/llama.cpp/
+ tar -czvf llama-${{ steps.tag.outputs.name }}-bin-linux-arm64-snapdragon.tar.gz --transform "s,^\.,llama-${{ steps.tag.outputs.name }}," -C pkg-snapdragon/llama.cpp .
+
+ - name: Upload artifacts
+ uses: actions/upload-artifact@v6
+ with:
+ path: llama-${{ steps.tag.outputs.name }}-bin-linux-arm64-snapdragon.tar.gz
+ name: llama-bin-linux-arm64-snapdragon.tar.gz
+
ubuntu-24-openvino:
needs: [check-release, ui-build]
if: ${{ needs.check-release.outputs.should_release == 'true' }}
@@ -1725,6 +1839,8 @@ jobs:
- ubuntu-24-openvino
- ubuntu-24-sycl
- android-arm64
+ - android-arm64-snapdragon
+ - linux-arm64-snapdragon
- macos-cpu
- ios-xcode
#- openEuler-cann
@@ -1860,9 +1976,11 @@ jobs:
- [Ubuntu x64 (OpenVINO)](https://github.com/ggml-org/llama.cpp/releases/download/${{ steps.tag.outputs.name }}/llama-${{ steps.tag.outputs.name }}-bin-ubuntu-openvino-${{ needs.ubuntu-24-openvino.outputs.openvino_version }}-x64.tar.gz)
- [Ubuntu x64 (SYCL FP32)](https://github.com/ggml-org/llama.cpp/releases/download/${{ steps.tag.outputs.name }}/llama-${{ steps.tag.outputs.name }}-bin-ubuntu-sycl-fp32-x64.tar.gz)
- [Ubuntu x64 (SYCL FP16)](https://github.com/ggml-org/llama.cpp/releases/download/${{ steps.tag.outputs.name }}/llama-${{ steps.tag.outputs.name }}-bin-ubuntu-sycl-fp16-x64.tar.gz)
+ - [Linux arm64 (Snapdragon: CPU, Adreno GPU, Hexagon NPU)](https://github.com/ggml-org/llama.cpp/releases/download/${{ steps.tag.outputs.name }}/llama-${{ steps.tag.outputs.name }}-bin-linux-arm64-snapdragon.tar.gz) - [setup guide](https://github.com/ggml-org/llama.cpp/blob/master/docs/backend/snapdragon/linux.md)
**Android:**
- [Android arm64 (CPU)](https://github.com/ggml-org/llama.cpp/releases/download/${{ steps.tag.outputs.name }}/llama-${{ steps.tag.outputs.name }}-bin-android-arm64.tar.gz)
+ - [Android arm64 (Snapdragon: CPU, Adreno GPU, Hexagon NPU)](https://github.com/ggml-org/llama.cpp/releases/download/${{ steps.tag.outputs.name }}/llama-${{ steps.tag.outputs.name }}-bin-android-arm64-snapdragon.tar.gz) - [setup guide](https://github.com/ggml-org/llama.cpp/blob/master/docs/backend/snapdragon/README.md)
**Windows:**
- [Windows x64 (CPU)](https://github.com/ggml-org/llama.cpp/releases/download/${{ steps.tag.outputs.name }}/llama-${{ steps.tag.outputs.name }}-bin-win-cpu-x64.zip)