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