@@ -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