Skip to content

Commit f1a996c

Browse files
authored
Merge pull request #861 from martindevans/android-build
Android Build
2 parents d8f5172 + b1ef59a commit f1a996c

File tree

1 file changed

+67
-4
lines changed

1 file changed

+67
-4
lines changed

.github/workflows/compile.yml

Lines changed: 67 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -298,7 +298,6 @@ jobs:
298298
name: llava-bin-linux-cublas-cu${{ matrix.cuda }}-x64.so
299299
if-no-files-found: error
300300

301-
302301
compile-macos:
303302
name: Compile (MacOS)
304303
strategy:
@@ -355,16 +354,67 @@ jobs:
355354
name: ggml-metal.metal
356355
if-no-files-found: error
357356

357+
compile-android:
358+
strategy:
359+
fail-fast: true
360+
matrix:
361+
include:
362+
- build: 'x86'
363+
defines: '-DANDROID_ABI=x86'
364+
- build: 'x86_64'
365+
defines: '-DANDROID_ABI=x86_64'
366+
- build: 'arm64-v8a'
367+
defines: '-DANDROID_ABI=arm64-v8a'
368+
runs-on: ubuntu-20.04
369+
steps:
370+
- uses: actions/checkout@v4
371+
with:
372+
repository: ggerganov/llama.cpp
373+
fetch-depth: 0
374+
ref: '${{ github.event.inputs.llama_cpp_commit }}'
375+
- uses: nttld/setup-ndk@v1
376+
id: setup-ndk
377+
with:
378+
ndk-version: r26d
379+
add-to-path: false
380+
- name: Build
381+
id: cmake_build
382+
env:
383+
CMAKE_FLAGS: '-DCMAKE_TOOLCHAIN_FILE=${{ steps.setup-ndk.outputs.ndk-path }}/build/cmake/android.toolchain.cmake -DANDROID_PLATFORM=android-23'
384+
run: |
385+
mkdir build
386+
cd build
387+
cmake .. ${{ env.COMMON_DEFINE }} ${{ env.CMAKE_FLAGS }} ${{ matrix.defines }}
388+
cmake --build . --config Release -j ${env:NUMBER_OF_PROCESSORS}
389+
cd ..
390+
ls -R
391+
- name: Upload Llama
392+
uses: actions/upload-artifact@v4
393+
with:
394+
path: ./build/src/libllama.so
395+
name: llama-bin-android-${{ matrix.build }}.so
396+
- uses: actions/upload-artifact@v4
397+
with:
398+
path: ./build/ggml/src/libggml.so
399+
name: ggml-bin-android-${{ matrix.build }}.so
400+
if-no-files-found: error
401+
- name: Upload Llava
402+
uses: actions/upload-artifact@v4
403+
with:
404+
path: ./build/examples/llava/libllava_shared.so
405+
name: llava-bin-android-${{ matrix.build }}.so
406+
358407
build-deps:
359408
runs-on: ubuntu-latest
360409
name: "Gather Binaries"
361410
if: ${{ always() }}
362411
needs: [
363412
"compile-linux",
364-
"compile-macos",
365413
"compile-windows",
414+
"compile-vulkan",
366415
"compile-cublas",
367-
"compile-vulkan"
416+
"compile-macos",
417+
"compile-android"
368418
]
369419
steps:
370420
- uses: actions/download-artifact@v4
@@ -375,7 +425,7 @@ jobs:
375425
- name: Rearrange Files
376426
run: |
377427
# Make all directories at once
378-
mkdir --parents deps/{avx,avx2,avx512,osx-arm64,osx-x64,osx-x64-rosetta2,cu11.7.1,cu12.2.0,vulkan}
428+
mkdir --parents deps/{avx,avx2,avx512,osx-arm64,osx-x64,osx-x64-rosetta2,cu11.7.1,cu12.2.0,vulkan,android-arm64-v8a,android-x86,android-x86_64}
379429
380430
# Linux
381431
cp artifacts/ggml-bin-linux-noavx-x64.so/libggml.so deps/libggml.so
@@ -425,6 +475,19 @@ jobs:
425475
cp artifacts/llama-bin-osx-x64-rosetta2.dylib/libllama.dylib deps/osx-x64-rosetta2/libllama.dylib
426476
cp artifacts/llava-bin-osx-x64-rosetta2.dylib/libllava_shared.dylib deps/osx-x64-rosetta2/libllava_shared.dylib
427477
478+
# Android
479+
cp artifacts/ggml-bin-android-arm64-v8a.so/libggml.so deps/android-arm64-v8a/libggml.so
480+
cp artifacts/llama-bin-android-arm64-v8a.so/libllama.so deps/android-arm64-v8a/libllama.so
481+
cp artifacts/llava-bin-android-arm64-v8a.so/libllava_shared.so deps/android-arm64-v8a/libllava_shared.so
482+
483+
cp artifacts/ggml-bin-android-x86.so/libggml.so deps/android-x86/libggml.so
484+
cp artifacts/llama-bin-android-x86.so/libllama.so deps/android-x86/libllama.so
485+
cp artifacts/llava-bin-android-x86.so/libllava_shared.so deps/android-x86/libllava_shared.so
486+
487+
cp artifacts/ggml-bin-android-x86_64.so/libggml.so deps/android-x86_64/libggml.so
488+
cp artifacts/llama-bin-android-x86_64.so/libllama.so deps/android-x86_64/libllama.so
489+
cp artifacts/llava-bin-android-x86_64.so/libllava_shared.so deps/android-x86_64/libllava_shared.so
490+
428491
# Windows CUDA
429492
cp artifacts/ggml-bin-win-cublas-cu11.7.1-x64.dll/ggml.dll deps/cu11.7.1/ggml.dll
430493
cp artifacts/llama-bin-win-cublas-cu11.7.1-x64.dll/llama.dll deps/cu11.7.1/llama.dll

0 commit comments

Comments
 (0)