infra: add android CI build test with necessary cross build config.

This commit is contained in:
Hermet Park 2023-10-09 15:40:55 +09:00 committed by Hermet Park
parent 2dbecdfbb2
commit 8a5418ed8b
5 changed files with 104 additions and 2 deletions

70
.github/workflows/build_android.yml vendored Normal file
View file

@ -0,0 +1,70 @@
name: Android
on:
pull_request:
branches:
- main
push:
branches:
- main
jobs:
build_x86_64:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: nttld/setup-ndk@v1.3.1
id: setup-ndk
with:
submodules: true
ndk-version: r21e
local-cache: true
- name: Install Packages
run: |
sudo apt-get update
sudo pip3 install meson ninja
- name: Build
env:
NDK: ${{ steps.setup-ndk.outputs.ndk-path }}
API: 21
run: |
sed -e "s|NDK|$NDK|g" -e "s|API|$API|g" ./cross/android_x86_64.txt > /tmp/android_cross.txt
meson setup build -Dlog=true -Dloaders="all" -Dsavers="all" -Dbindings="capi" --cross-file /tmp/android_cross.txt
sudo ninja -C build install
- uses: actions/upload-artifact@v3
with:
name: result
path: build/src/libthorvg*
build_aarch64:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: nttld/setup-ndk@v1.3.1
id: setup-ndk
with:
submodules: true
ndk-version: r21e
local-cache: true
- name: Install Packages
run: |
sudo apt-get update
sudo pip3 install meson ninja
- name: Build
env:
NDK: ${{ steps.setup-ndk.outputs.ndk-path }}
API: 21
run: |
sed -e "s|NDK|$NDK|g" -e "s|API|$API|g" ./cross/android_aarch64.txt > /tmp/android_cross.txt
meson setup build -Dlog=true -Dloaders="all" -Dsavers="all" -Dbindings="capi" --cross-file /tmp/android_cross.txt
sudo ninja -C build install
- uses: actions/upload-artifact@v3
with:
name: result
path: build/src/libthorvg*

View file

@ -33,7 +33,7 @@ jobs:
name: result name: result
path: build/src/libthorvg* path: build/src/libthorvg*
build_armv64: build_aarch64:
runs-on: macos-latest runs-on: macos-latest
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v3

16
cross/android_aarch64.txt Normal file
View file

@ -0,0 +1,16 @@
[binaries]
cpp = 'NDK/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-androidAPI-clang++'
ar = 'NDK/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android-ar'
as = 'NDK/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android-as'
ranlib = 'NDK/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android-ranlib'
ld = 'NDK/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android-ld'
strip = 'NDK/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android-strip'
[properties]
sys_root = 'NDK/sysroot'
[host_machine]
system = 'android'
cpu_family = 'arm'
cpu = 'aarch64'
endian = 'little'

16
cross/android_x86_64.txt Normal file
View file

@ -0,0 +1,16 @@
[binaries]
cpp = 'NDK/toolchains/llvm/prebuilt/linux-x86_64/bin/x86_64-linux-androidAPI-clang++'
ar = 'NDK/toolchains/llvm/prebuilt/linux-x86_64/bin/x86_64-linux-android-ar'
as = 'NDK/toolchains/llvm/prebuilt/linux-x86_64/bin/x86_64-linux-android-as'
ranlib = 'NDK/toolchains/llvm/prebuilt/linux-x86_64/bin/x86_64-linux-android-ranlib'
ld = 'NDK/toolchains/llvm/prebuilt/linux-x86_64/bin/x86_64-linux-android-ld'
strip = 'NDK/toolchains/llvm/prebuilt/linux-x86_64/bin/x86_64-linux-android-strip'
[properties]
sys_root = 'NDK/sysroot'
[host_machine]
system = 'android'
cpu_family = 'x86_64'
cpu = 'x86_64'
endian = 'little'

View file

@ -42,7 +42,7 @@ subdir('loaders')
subdir('savers') subdir('savers')
thorvg_lib_dep = [common_dep, utils_dep, loader_dep, saver_dep] thorvg_lib_dep = [common_dep, utils_dep, loader_dep, saver_dep]
if host_machine.system() != 'windows' if host_machine.system() != 'windows' and host_machine.system() != 'android'
thread_dep = meson.get_compiler('cpp').find_library('pthread') thread_dep = meson.get_compiler('cpp').find_library('pthread')
thorvg_lib_dep += [thread_dep] thorvg_lib_dep += [thread_dep]
endif endif