From 58a0dba514a8de99564d90dc9a4d71106eedc501 Mon Sep 17 00:00:00 2001 From: Hermet Park Date: Mon, 9 Oct 2023 15:40:55 +0900 Subject: [PATCH] infra: add android CI build test with necessary cross build config. --- .github/workflows/build_android.yml | 70 +++++++++++++++++++++++++++++ .github/workflows/build_ios.yml | 2 +- cross/android_aarch64.txt | 16 +++++++ cross/android_x86_64.txt | 16 +++++++ src/meson.build | 2 +- 5 files changed, 104 insertions(+), 2 deletions(-) create mode 100644 .github/workflows/build_android.yml create mode 100644 cross/android_aarch64.txt create mode 100644 cross/android_x86_64.txt diff --git a/.github/workflows/build_android.yml b/.github/workflows/build_android.yml new file mode 100644 index 00000000..18bf73c0 --- /dev/null +++ b/.github/workflows/build_android.yml @@ -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* \ No newline at end of file diff --git a/.github/workflows/build_ios.yml b/.github/workflows/build_ios.yml index d92e4570..2dd7ca6c 100644 --- a/.github/workflows/build_ios.yml +++ b/.github/workflows/build_ios.yml @@ -33,7 +33,7 @@ jobs: name: result path: build/src/libthorvg* - build_armv64: + build_aarch64: runs-on: macos-latest steps: - uses: actions/checkout@v3 diff --git a/cross/android_aarch64.txt b/cross/android_aarch64.txt new file mode 100644 index 00000000..958b7b1e --- /dev/null +++ b/cross/android_aarch64.txt @@ -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' \ No newline at end of file diff --git a/cross/android_x86_64.txt b/cross/android_x86_64.txt new file mode 100644 index 00000000..593594ef --- /dev/null +++ b/cross/android_x86_64.txt @@ -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' \ No newline at end of file diff --git a/src/meson.build b/src/meson.build index 9b9d0cff..ad218c3c 100644 --- a/src/meson.build +++ b/src/meson.build @@ -42,7 +42,7 @@ subdir('loaders') subdir('savers') 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') thorvg_lib_dep += [thread_dep] endif