xref: /Universal-ctags/.github/workflows/cross-compile-android-ndk.yml (revision c4e384715bfa95c7eaf0de99ce2498d54bed182e)
1name: cross compile with android-ndk
2
3on:
4  push:
5    branches: [ master ]
6  pull_request:
7    branches: [ master ]
8
9jobs:
10  cross-compile:
11    strategy:
12      fail-fast: false
13      matrix:
14        build-machine-os: [ubuntu-18.04, ubuntu-20.04, macos-10.15, macos-11]
15
16    runs-on: ${{ matrix.build-machine-os }}
17
18    steps:
19      - uses: actions/checkout@v2
20
21      - run: brew install gcc make automake autoconf file
22
23      - run: ./autogen.sh
24
25      - name: Run ./configure ...
26        run: |
27          # https://github.com/actions/virtual-environments/blob/main/images/linux/Ubuntu2004-Readme.md#environment-variables-3
28          [ -n "$ANDROID_NDK_LATEST_HOME" ] && {
29            export ANDROID_NDK_HOME="$ANDROID_NDK_LATEST_HOME"
30            export ANDROID_NDK_ROOT="$ANDROID_NDK_LATEST_HOME"
31          }
32
33          BUILD_MACHINE_OS_TYPE=$(uname | tr A-Z a-z)
34          BUILD_MACHINE_OS_ARCH=$(uname -m)
35
36          TOOLCHAIN_BASE_DIR=$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/$BUILD_MACHINE_OS_TYPE-$BUILD_MACHINE_OS_ARCH
37          TOOLCHAIN_BIN_DIR=$TOOLCHAIN_BASE_DIR/bin
38          SYSROOT=$TOOLCHAIN_BASE_DIR/sysroot
39
40          export CC=$TOOLCHAIN_BIN_DIR/armv7a-linux-androideabi21-clang
41          export AR=$TOOLCHAIN_BIN_DIR/llvm-ar
42          export RANLIB=$TOOLCHAIN_BIN_DIR/llvm-ranlib
43
44          export CFLAGS="--sysroot $SYSROOT -Qunused-arguments -Os -fpic"
45          export CPPFLAGS="--sysroot $SYSROOT -Qunused-arguments"
46          export LDFLAGS="--sysroot $SYSROOT"
47
48          TARGET=armv7a-linux-androideabi
49
50          COLOR_PURPLE='\033[0;35m'       # Purple
51          COLOR_GREEN='\033[0;32m'        # Green
52          COLOR_OFF='\033[0m'             # Reset
53
54          echo() {
55            printf "%b\n" "$*"
56          }
57
58          run() {
59            echo "$COLOR_PURPLE==>$COLOR_OFF $COLOR_GREEN$@$COLOR_OFF"
60            eval "$*"
61          }
62
63          run ./configure \
64              --host=$TARGET \
65              --disable-iconv \
66              --disable-xml \
67              --disable-json \
68              --disable-yaml \
69              --disable-pcre2 \
70              CC="$CC" \
71              CFLAGS="\"$CFLAGS\"" \
72              CPPFLAGS="\"$CPPFLAGS\"" \
73              LDFLAGS="\"$LDFLAGS\"" \
74              AR=$AR \
75              RANLIB=$RANLIB
76
77      - run: make V=1
78
79      - run: file ctags | grep 'ELF 32-bit LSB pie executable, ARM, EABI5'
80