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