Skip to content

Commit 97d0fdb

Browse files
committed
Add new CI job for android vulkan builds
Signed-off-by: Andre Moreira Magalhaes <[email protected]>
1 parent 8201586 commit 97d0fdb

File tree

2 files changed

+76
-1
lines changed

2 files changed

+76
-1
lines changed

.github/workflows/build.yml

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1423,6 +1423,57 @@ jobs:
14231423
path: llama-${{ steps.tag.outputs.name }}-bin-android-build.zip
14241424
name: llama-bin-android-build.zip
14251425

1426+
android-ndk-build:
1427+
runs-on: ubuntu-latest
1428+
1429+
env:
1430+
VULKAN_SDK_VERSION: 1.4.328.1
1431+
1432+
strategy:
1433+
matrix:
1434+
include:
1435+
- build: 'arm64-snapdragon-vulkan'
1436+
defines: '--preset arm64-android-snapdragon-vulkan-release'
1437+
1438+
steps:
1439+
- name: Clone
1440+
id: checkout
1441+
uses: actions/checkout@v4
1442+
1443+
- name: Install Vulkan Headers
1444+
id: install_vulkan
1445+
if: ${{ matrix.build == 'arm64-snapdragon-vulkan' }}
1446+
run: |
1447+
curl -L -o vulkansdk-linux-x86_64.tar.xz https://sdk.lunarg.com/sdk/download/${VULKAN_SDK_VERSION}/linux/vulkansdk-linux-x86_64-${VULKAN_SDK_VERSION}.tar.xz
1448+
mkdir vulkansdk-linux-x86_64
1449+
tar -xaf vulkansdk-linux-x86_64.tar.xz -C vulkansdk-linux-x86_64
1450+
sudo cp -r vulkansdk-linux-x86_64/${VULKAN_SDK_VERSION}/x86_64/include/vulkan/* ${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include/vulkan
1451+
sudo cp -r vulkansdk-linux-x86_64/${VULKAN_SDK_VERSION}/x86_64/include/vk_video ${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include
1452+
1453+
- name: Build
1454+
id: ndk_build
1455+
run: |
1456+
# set PATH for `glslc`
1457+
export PATH=$PATH:${ANDROID_NDK_ROOT}/shader-tools/linux-x86_64/
1458+
cmake ${{ matrix.defines }} -B build
1459+
cmake --build build
1460+
1461+
- name: Determine tag name
1462+
id: tag
1463+
uses: ./.github/actions/get-tag-name
1464+
1465+
- name: Pack artifacts
1466+
id: pack_artifacts
1467+
run: |
1468+
cp LICENSE ./build/bin/
1469+
zip -r llama-${{ steps.tag.outputs.name }}-bin-android-ndk-build-${{ matrix.build }}.zip ./build/bin/*
1470+
1471+
- name: Upload artifacts
1472+
uses: actions/upload-artifact@v4
1473+
with:
1474+
path: llama-${{ steps.tag.outputs.name }}-bin-android-ndk-build-${{ matrix.build }}.zip
1475+
name: llama-bin-android-ndk-build-${{ matrix.build }}.zip
1476+
14261477
openEuler-latest-cmake-cann:
14271478
if: ${{ github.event_name != 'pull_request' || contains(github.event.pull_request.labels.*.name, 'Ascend NPU') }}
14281479
defaults:

CMakePresets.json

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,30 @@
9090
{ "name": "x64-windows-sycl-release-f16", "inherits": [ "sycl-base", "release", "sycl_f16" ] },
9191

9292
{ "name": "x64-windows-vulkan-debug", "inherits": [ "base", "vulkan", "debug" ] },
93-
{ "name": "x64-windows-vulkan-release", "inherits": [ "base", "vulkan", "release" ] }
93+
{ "name": "x64-windows-vulkan-release", "inherits": [ "base", "vulkan", "release" ] },
94+
95+
{
96+
"name": "arm64-android-snapdragon",
97+
"hidden": true,
98+
"architecture": { "value": "arm64", "strategy": "external" },
99+
"toolset": { "value": "host=x86_64", "strategy": "external" },
100+
"cacheVariables": {
101+
"ANDROID_ABI": "arm64-v8a",
102+
"ANDROID_PLATFORM": "android-31",
103+
"CMAKE_TOOLCHAIN_FILE": "$env{ANDROID_NDK_ROOT}/build/cmake/android.toolchain.cmake",
104+
"CMAKE_C_FLAGS": "-march=armv8.7a+fp16 -fvectorize -ffp-model=fast -fno-finite-math-only -flto -D_GNU_SOURCE",
105+
"CMAKE_CXX_FLAGS": "-march=armv8.7a+fp16 -fvectorize -ffp-model=fast -fno-finite-math-only -flto -D_GNU_SOURCE",
106+
"CMAKE_C_FLAGS_RELEASE": "-O3 -DNDEBUG",
107+
"CMAKE_CXX_FLAGS_RELEASE": "-O3 -DNDEBUG",
108+
"CMAKE_C_FLAGS_RELWITHDEBINFO": "-O3 -DNDEBUG -g",
109+
"CMAKE_CXX_FLAGS_RELWITHDEBINFO": "-O3 -DNDEBUG -g",
110+
"GGML_OPENMP": "OFF",
111+
"GGML_LLAMAFILE": "OFF",
112+
"LLAMA_CURL": "OFF"
113+
}
114+
},
115+
116+
{ "name": "arm64-android-snapdragon-vulkan-debug" , "inherits": [ "base", "arm64-android-snapdragon", "vulkan", "debug" ] },
117+
{ "name": "arm64-android-snapdragon-vulkan-release", "inherits": [ "base", "arm64-android-snapdragon", "vulkan", "release" ] }
94118
]
95119
}

0 commit comments

Comments
 (0)