Skip to content

Commit a279d0f

Browse files
ykhrustalevCISC
andauthored
ci : add android arm64 build and release (ggml-org#21647)
* server: respect the ignore eos flag * ci: add android arm64 build and release * patch * pin android-setup actions to v4 * Apply suggestions from code review Co-authored-by: Sigbjørn Skjæret <sigbjorn.skjaeret@scala.com> * lf in the suggestion --------- Co-authored-by: Sigbjørn Skjæret <sigbjorn.skjaeret@scala.com>
1 parent 268d61e commit a279d0f

4 files changed

Lines changed: 129 additions & 1 deletion

File tree

.github/workflows/build-android.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ jobs:
5151
distribution: zulu
5252

5353
- name: Setup Android SDK
54-
uses: android-actions/setup-android@9fc6c4e9069bf8d3d10b2204b1fb8f6ef7065407 # v3
54+
uses: android-actions/setup-android@40fd30fb8d7440372e1316f5d1809ec01dcd3699 # v4.0.1
5555
with:
5656
log-accepted-android-sdk-licenses: false
5757

.github/workflows/build.yml

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -267,6 +267,56 @@ jobs:
267267
wget https://huggingface.co/ggml-org/models/resolve/main/tinyllamas/stories260K-be.gguf
268268
./bin/llama-completion -m stories260K-be.gguf -p "One day, Lily met a Shoggoth" -n 500 -c 256
269269
270+
android-arm64:
271+
runs-on: ubuntu-latest
272+
273+
env:
274+
NDK_VERSION: "29.0.14206865"
275+
276+
steps:
277+
- name: Clone
278+
id: checkout
279+
uses: actions/checkout@v6
280+
281+
- name: ccache
282+
uses: ggml-org/ccache-action@v1.2.21
283+
with:
284+
key: android-arm64
285+
evict-old-files: 1d
286+
save: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' }}
287+
288+
- name: Set up JDK
289+
uses: actions/setup-java@v5
290+
with:
291+
java-version: 17
292+
distribution: temurin
293+
294+
- name: Setup Android SDK
295+
uses: android-actions/setup-android@40fd30fb8d7440372e1316f5d1809ec01dcd3699 # v4.0.1
296+
with:
297+
log-accepted-android-sdk-licenses: false
298+
299+
- name: Install NDK
300+
run: |
301+
sdkmanager "ndk;${{ env.NDK_VERSION }}"
302+
echo "ANDROID_NDK=${ANDROID_SDK_ROOT}/ndk/${{ env.NDK_VERSION }}" >> $GITHUB_ENV
303+
304+
- name: Build
305+
id: cmake_build
306+
run: |
307+
cmake -B build \
308+
-DCMAKE_TOOLCHAIN_FILE=${ANDROID_NDK}/build/cmake/android.toolchain.cmake \
309+
-DANDROID_ABI=arm64-v8a \
310+
-DANDROID_PLATFORM=android-28 \
311+
-DLLAMA_FATAL_WARNINGS=ON \
312+
-DGGML_BACKEND_DL=ON \
313+
-DGGML_NATIVE=OFF \
314+
-DGGML_CPU_ALL_VARIANTS=ON \
315+
-DGGML_OPENMP=OFF \
316+
-DLLAMA_BUILD_BORINGSSL=ON \
317+
-DGGML_RPC=ON
318+
time cmake --build build --config Release -j $(nproc)
319+
270320
ubuntu-latest-rpc:
271321
runs-on: ubuntu-latest
272322

.github/workflows/release.yml

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -236,6 +236,75 @@ jobs:
236236
path: llama-${{ steps.tag.outputs.name }}-bin-ubuntu-vulkan-${{ matrix.build }}.tar.gz
237237
name: llama-bin-ubuntu-vulkan-${{ matrix.build }}.tar.gz
238238

239+
android-arm64:
240+
runs-on: ubuntu-latest
241+
242+
env:
243+
NDK_VERSION: "29.0.14206865"
244+
245+
steps:
246+
- name: Clone
247+
id: checkout
248+
uses: actions/checkout@v6
249+
with:
250+
fetch-depth: 0
251+
252+
- name: ccache
253+
uses: ggml-org/ccache-action@v1.2.21
254+
with:
255+
key: android-arm64
256+
evict-old-files: 1d
257+
258+
- name: Set up JDK
259+
uses: actions/setup-java@v5
260+
with:
261+
java-version: 17
262+
distribution: temurin
263+
264+
- name: Setup Android SDK
265+
uses: android-actions/setup-android@40fd30fb8d7440372e1316f5d1809ec01dcd3699 # v4.0.1
266+
with:
267+
log-accepted-android-sdk-licenses: false
268+
269+
- name: Install NDK
270+
run: |
271+
sdkmanager "ndk;${{ env.NDK_VERSION }}"
272+
echo "ANDROID_NDK=${ANDROID_SDK_ROOT}/ndk/${{ env.NDK_VERSION }}" >> $GITHUB_ENV
273+
274+
- name: Build
275+
id: cmake_build
276+
run: |
277+
cmake -B build \
278+
-DCMAKE_TOOLCHAIN_FILE=${ANDROID_NDK}/build/cmake/android.toolchain.cmake \
279+
-DANDROID_ABI=arm64-v8a \
280+
-DANDROID_PLATFORM=android-28 \
281+
-DCMAKE_INSTALL_RPATH='$ORIGIN' \
282+
-DCMAKE_BUILD_WITH_INSTALL_RPATH=ON \
283+
-DGGML_BACKEND_DL=ON \
284+
-DGGML_NATIVE=OFF \
285+
-DGGML_CPU_ALL_VARIANTS=ON \
286+
-DLLAMA_FATAL_WARNINGS=ON \
287+
-DGGML_OPENMP=OFF \
288+
-DLLAMA_BUILD_BORINGSSL=ON \
289+
${{ env.CMAKE_ARGS }}
290+
cmake --build build --config Release -j $(nproc)
291+
292+
- name: Determine tag name
293+
id: tag
294+
uses: ./.github/actions/get-tag-name
295+
296+
- name: Pack artifacts
297+
id: pack_artifacts
298+
run: |
299+
cp LICENSE ./build/bin/
300+
tar -czvf llama-${{ steps.tag.outputs.name }}-bin-android-arm64.tar.gz --transform "s,./,llama-${{ steps.tag.outputs.name }}/," -C ./build/bin .
301+
302+
- name: Upload artifacts
303+
uses: actions/upload-artifact@v6
304+
with:
305+
path: llama-${{ steps.tag.outputs.name }}-bin-android-arm64.tar.gz
306+
name: llama-bin-android-arm64.tar.gz
307+
239308
ubuntu-24-openvino:
240309
runs-on: ubuntu-24.04
241310

@@ -971,6 +1040,7 @@ jobs:
9711040
- ubuntu-cpu
9721041
- ubuntu-vulkan
9731042
- ubuntu-24-openvino
1043+
- android-arm64
9741044
- macOS-cpu
9751045
- ios-xcode-build
9761046
- openEuler-cann
@@ -1059,6 +1129,9 @@ jobs:
10591129
- [Ubuntu x64 (ROCm 7.2)](https://github.com/ggml-org/llama.cpp/releases/download/${{ steps.tag.outputs.name }}/llama-${{ steps.tag.outputs.name }}-bin-ubuntu-rocm-7.2-x64.tar.gz)
10601130
- [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)
10611131
1132+
**Android:**
1133+
- [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)
1134+
10621135
**Windows:**
10631136
- [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)
10641137
- [Windows arm64 (CPU)](https://github.com/ggml-org/llama.cpp/releases/download/${{ steps.tag.outputs.name }}/llama-${{ steps.tag.outputs.name }}-bin-win-cpu-arm64.zip)

tools/mtmd/CMakeLists.txt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,11 @@ if (NOT MSVC)
8181
target_compile_options(mtmd PRIVATE -Wno-cast-qual)
8282
endif()
8383

84+
if (ANDROID)
85+
# miniaudio.h defines ma_android_sdk_version() without a prior prototype
86+
target_compile_options(mtmd PRIVATE -Wno-missing-prototypes)
87+
endif()
88+
8489
if (TARGET BUILD_INFO)
8590
add_dependencies(mtmd BUILD_INFO)
8691
add_dependencies(mtmd-helper BUILD_INFO)

0 commit comments

Comments
 (0)