Skip to content

update worklow

update worklow #6

Workflow file for this run

name: Build
on:
workflow_dispatch:
push:
branches: [ main ]
tags:
- v[0-9].**
pull_request:
branches: [ main ]
permissions:
contents: write
jobs:
android-build:
runs-on: ubuntu-latest
env:
OPENCL_VERSION: 2023.12.14
strategy:
matrix:
include:
- build: 'ndk-snapdragon'
defines: '-G "Ninja Multi-Config" -D LLAMA_CURL=OFF -D GGML_NATIVE=OFF'
steps:
- name: Clone
id: checkout
uses: actions/checkout@v4
- name: Env check-1
run: |
env
# Disabled due to size (400MB) and always 0 cache hits
# - name: ccache
# uses: ggml-org/ccache-action@v1.2.16
# with:
# key: android-build
# evict-old-files: 1d
# - name: Install Ninja
# id: install_ninja
# run: |
# sudo apt-get update
# sudo apt-get install -y --no-install-recommends \
# ninja-build \
- name: Install OpenCL Headers and Libs
id: install_opencl
if: ${{ matrix.build == 'ndk-snapdragon' }}
run: |
mkdir opencl
curl -L -o opencl/clhpp.tar.gz https://github.com/KhronosGroup/OpenCL-CLHPP/archive/refs/tags/v${OPENCL_VERSION}.tar.gz
curl -L -o opencl/headers.tar.gz https://github.com/KhronosGroup/OpenCL-Headers/archive/refs/tags/v${OPENCL_VERSION}.tar.gz
curl -L -o opencl/icd-loader.tar.gz https://github.com/KhronosGroup/OpenCL-ICD-Loader/archive/refs/tags/v${OPENCL_VERSION}.tar.gz
tar -xaf opencl/headers.tar.gz -C opencl
tar -xaf opencl/clhpp.tar.gz -C opencl
tar -xaf opencl/icd-loader.tar.gz -C opencl
# sudo cp -r opencl/OpenCL-Headers-${OPENCL_VERSION}/CL /usr/local/include
# sudo cp -r opencl/OpenCL-CLHPP-${OPENCL_VERSION}/include/CL/* /usr/local/include/CL
sudo cp -r opencl/OpenCL-Headers-${OPENCL_VERSION}/CL ${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include
sudo cp -r opencl/OpenCL-CLHPP-${OPENCL_VERSION}/include/CL/* ${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include/CL
cd opencl/OpenCL-ICD-Loader-${OPENCL_VERSION}
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
cmake --build build
sudo cp build/libOpenCL.so ${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/aarch64-linux-android
rm -rf opencl
- name: Install Hexagon SDK
id: install_hexsdk
if: ${{ matrix.build == 'ndk-snapdragon' }}
env:
HEXSDK_VER: 6.3.0
HEXTLS_VER: 19.0.04
run: |
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
mkdir hex-sdk
tar -xaf hex-sdk.tar.gz -C hex-sdk
sudo mv hex-sdk /opt/hexagon
echo "HEXAGON_SDK_ROOT=/opt/hexagon/$HEXSDK_VER" >> "$GITHUB_ENV"
echo "HEXAGON_TOOLS_ROOT=/opt/hexagon/$HEXSDK_VER/tools/HEXAGON_Tools/$HEXTLS_VER" >> "$GITHUB_ENV"
echo "DEFAULT_HLOS_ARCH=64" >> "$GITHUB_ENV"
echo "DEFAULT_TOOLS_VARIANT=toolv19" >> "$GITHUB_ENV"
echo "DEFAULT_NO_QURT_INC=0" >> "$GITHUB_ENV"
echo "DEFAULT_DSP_ARCH=v73" >> "$GITHUB_ENV"
rm -rf hexsdk
- name: Env check-2
run: |
env
- name: Build with Android NDK
if: ${{ matrix.build == 'ndk-snapdragon' }}
run: |
cp -f docs/backend/hexagon/CMakeUsersPresets.json .
cmake --preset arm64-android-snapdragon-release -B build ${{ matrix.defines }} .
- name: Test
id: cmake_test
if: ${{ matrix.build == 'ndk-snapdragon' }}
run: |
echo "FIXME: install and test on devices"