Skip to content

Commit 345de3c

Browse files
shreyajnmax-krasnyanskyCISC
authored
Use docker in build-android.yml (#20928)
* use docker instead of SDK separately * fix whitespaces * Update .github/workflows/build-android.yml Co-authored-by: Sigbjørn Skjæret <sigbjorn.skjaeret@scala.com> --------- Co-authored-by: Max Krasnyansky <maxk@qti.qualcomm.com> Co-authored-by: Sigbjørn Skjæret <sigbjorn.skjaeret@scala.com>
1 parent 9c600bc commit 345de3c

1 file changed

Lines changed: 22 additions & 61 deletions

File tree

.github/workflows/build-android.yml

Lines changed: 22 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -40,13 +40,9 @@ jobs:
4040
steps:
4141
- name: Clone
4242
uses: actions/checkout@v6
43-
44-
# Disabled due to size (400MB) and always 0 cache hits
45-
# - name: ccache
46-
# uses: ggml-org/ccache-action@v1.2.16
47-
# with:
48-
# key: android-build
49-
# evict-old-files: 1d
43+
with:
44+
fetch-depth: 0
45+
lfs: false
5046

5147
- name: Set up JDK
5248
uses: actions/setup-java@v5
@@ -66,10 +62,11 @@ jobs:
6662
6763
android-ndk:
6864
runs-on: ubuntu-latest
69-
70-
env:
71-
OPENCL_VERSION: 2025.07.22
72-
65+
container:
66+
image: 'ghcr.io/snapdragon-toolchain/arm64-android:v0.3'
67+
defaults:
68+
run:
69+
shell: bash
7370
strategy:
7471
matrix:
7572
include:
@@ -82,59 +79,23 @@ jobs:
8279
- name: Clone
8380
id: checkout
8481
uses: actions/checkout@v6
82+
with:
83+
fetch-depth: 0
84+
lfs: false
8585

86-
- name: Install OpenCL Headers and Libs
87-
id: install_opencl
88-
if: ${{ matrix.build == 'arm64-snapdragon' }}
89-
run: |
90-
mkdir opencl
91-
curl -L -o opencl/clhpp.tar.gz https://github.com/KhronosGroup/OpenCL-CLHPP/archive/refs/tags/v${OPENCL_VERSION}.tar.gz
92-
curl -L -o opencl/headers.tar.gz https://github.com/KhronosGroup/OpenCL-Headers/archive/refs/tags/v${OPENCL_VERSION}.tar.gz
93-
curl -L -o opencl/icd-loader.tar.gz https://github.com/KhronosGroup/OpenCL-ICD-Loader/archive/refs/tags/v${OPENCL_VERSION}.tar.gz
94-
tar -xaf opencl/headers.tar.gz -C opencl
95-
tar -xaf opencl/clhpp.tar.gz -C opencl
96-
tar -xaf opencl/icd-loader.tar.gz -C opencl
97-
sudo cp -r opencl/OpenCL-Headers-${OPENCL_VERSION}/CL ${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include
98-
sudo cp -r opencl/OpenCL-CLHPP-${OPENCL_VERSION}/include/CL/* ${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include/CL
99-
cd opencl/OpenCL-ICD-Loader-${OPENCL_VERSION}
100-
cmake -B build -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_TOOLCHAIN_FILE=${ANDROID_NDK_ROOT}/build/cmake/android.toolchain.cmake -DOPENCL_ICD_LOADER_HEADERS_DIR=${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include -DANDROID_ABI=arm64-v8a -DANDROID_PLATFORM=31 -DANDROID_STL=c++_shared
101-
cmake --build build
102-
sudo cp build/libOpenCL.so ${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/aarch64-linux-android
103-
rm -rf opencl
104-
105-
- name: Install Hexagon SDK
106-
id: install_hexsdk
107-
if: ${{ matrix.build == 'arm64-snapdragon' }}
108-
env:
109-
HEXSDK_VER: 6.4.0.2
110-
HEXTLS_VER: 19.0.04
111-
run: |
112-
curl -L -o hex-sdk.tar.gz https://github.com/snapdragon-toolchain/hexagon-sdk/releases/download/v$HEXSDK_VER/hexagon-sdk-v$HEXSDK_VER-amd64-lnx.tar.xz
113-
mkdir hex-sdk
114-
tar -xaf hex-sdk.tar.gz -C hex-sdk
115-
ls -l hex-sdk
116-
sudo mv hex-sdk /opt/hexagon
117-
echo "HEXAGON_SDK_ROOT=/opt/hexagon/$HEXSDK_VER" >> "$GITHUB_ENV"
118-
echo "HEXAGON_TOOLS_ROOT=/opt/hexagon/$HEXSDK_VER/tools/HEXAGON_Tools/$HEXTLS_VER" >> "$GITHUB_ENV"
119-
echo "DEFAULT_HLOS_ARCH=64" >> "$GITHUB_ENV"
120-
echo "DEFAULT_TOOLS_VARIANT=toolv19" >> "$GITHUB_ENV"
121-
echo "DEFAULT_NO_QURT_INC=0" >> "$GITHUB_ENV"
122-
echo "DEFAULT_DSP_ARCH=v73" >> "$GITHUB_ENV"
123-
124-
- name: Update CMake presets
125-
id: update_presets
126-
if: ${{ matrix.build == 'arm64-snapdragon' }}
127-
run: |
128-
cp docs/backend/snapdragon/CMakeUserPresets.json .
129-
130-
- name: Build
131-
id: ndk_build
86+
- name: Build Llama.CPP for Hexagon Android
87+
id: build_llama_cpp_hexagon_android
13288
run: |
89+
if [[ "${{ matrix.build }}" == "arm64-snapdragon" ]]; then
90+
cp docs/backend/snapdragon/CMakeUserPresets.json .
91+
fi
13392
cmake ${{ matrix.defines }} -B build
13493
cmake --build build
13594
cmake --install build --prefix pkg-adb/llama.cpp
13695
137-
- name: Test
138-
id: cmake_test
139-
run: |
140-
echo "FIXME: test on devices"
96+
- name: Upload Llama.CPP Hexagon Android Build Artifact
97+
if: ${{ always() && steps.build_llama_cpp_hexagon_android.outcome == 'success' }}
98+
uses: actions/upload-artifact@v6
99+
with:
100+
name: llama-cpp-android-${{ matrix.build }}
101+
path: pkg-adb/llama.cpp

0 commit comments

Comments
 (0)