quickjs-tart

quickjs-based runtime for wallet-core logic
Log | Files | Refs | README | LICENSE

build-android.sh (2247B)


      1 #!/bin/bash
      2 set -eu
      3 
      4 if [ -z ${1+x} ]; then
      5   echo "usage: $0 <ANDROID_ABI>"
      6   exit 1
      7 fi
      8 
      9 ABI=$1
     10 
     11 case $ABI in
     12 armeabi-v7a)
     13   ARCH="arm"
     14   BUILD_DIR="build-android/armeabi-v7a"
     15   CPU_FAMILY=arm
     16   CPU=armv7
     17   CLANG_NAME=armv7a-linux-androideabi24
     18   TOOLS_NAME=arm-linux-androideabi
     19   ;;
     20 arm64-v8a)
     21   ARCH="arm64"
     22   BUILD_DIR="build-android/arm64-v8a"
     23   CPU_FAMILY=aarch64
     24   CPU=armv8
     25   CLANG_NAME=aarch64-linux-android24
     26   TOOLS_NAME=aarch64-linux-android
     27   ;;
     28 x86)
     29   ARCH="x86"
     30   BUILD_DIR="build-android/x86"
     31   CPU_FAMILY=x86
     32   CPU=x86
     33   CLANG_NAME=i686-linux-android24
     34   TOOLS_NAME=i686-linux-android
     35   ;;
     36 x86_64)
     37   ARCH="x86_64"
     38   BUILD_DIR="build-android/x86_64"
     39   CPU_FAMILY=x86_64
     40   CPU=x86_64
     41   CLANG_NAME=x86_64-linux-android24
     42   TOOLS_NAME=x86_64-linux-android
     43   ;;
     44 *)
     45   echo unknown ABI
     46   exit 1
     47   ;;
     48 esac
     49 
     50 API_LEVEL="24"
     51 
     52 HOST_ROOT="${ANDROID_NDK_HOME}/toolchains/llvm/prebuilt/linux-x86_64"
     53 SYS_ROOT="${HOST_ROOT}/sysroot"
     54 LIB_PATH="${SYS_ROOT}/usr/lib/${ARCH}-linux-androideabi:${SYS_ROOT}/usr/lib/${ARCH}-linux-androideabi/${API_LEVEL}:${ANDROID_NDK_HOME}/platforms/android-${API_LEVEL}/arch-${ARCH}/usr/lib"
     55 INC_PATH="${SYS_ROOT}/usr/include"
     56 
     57 export PATH="${HOST_ROOT}/bin:${PATH}"
     58 
     59 export CFLAGS="\
     60   -DANDROID_STL=none \
     61   -DANDROID_TOOLCHAIN=clang \
     62   -DANDROID_PLATFORM=android-${API_LEVEL} \
     63   -DANDROID_ABI=${ABI}"
     64 
     65 export CMAKE_ANDROID_NDK='$ANDROID_NDK_HOME'
     66 export CMAKE_ANDROID_ARCH_ABI='$ABI'
     67 
     68 echo "building..."
     69 
     70 rm -rf ${BUILD_DIR}
     71 
     72 CROSSFILE=cross/android-$ABI.cross.txt
     73 
     74 cat > $CROSSFILE <<EOF
     75 [binaries]
     76 c = '$CLANG_NAME-clang'
     77 cmake = 'false'
     78 ar = 'llvm-ar'
     79 as = '$TOOLS_NAME-as'
     80 ranlib = '$TOOLS_NAME-ranlib'
     81 ld = '$TOOLS_NAME-ld'
     82 strip = '$TOOLS_NAME-strip'
     83 pkgconfig = 'false'
     84 
     85 [properties]
     86 needs_exe_wrapper = 'false'
     87 
     88 [host_machine]
     89 system = 'android'
     90 cpu_family = '$CPU_FAMILY'
     91 cpu = '$CPU'
     92 endian = 'little'
     93 
     94 [cmake]
     95 CMAKE_ANDROID_NDK='$ANDROID_NDK_HOME'
     96 CMAKE_ANDROID_ARCH_ABI='$ABI'
     97 CMAKE_SYSTEM_PROCESSOR=''
     98 EOF
     99 
    100 export LDFLAGS=-flto
    101 export CFLAGS=-flto
    102 
    103 meson setup --errorlogs  \
    104   -Doptimization=3 \
    105   --prefix=${ANDROID_NDK_HOME} \
    106   --includedir=${INC_PATH} \
    107   --libdir=${LIB_PATH} \
    108   --build.cmake-prefix-path=${SYS_ROOT} \
    109   --cross-file $CROSSFILE  \
    110   ${BUILD_DIR} .
    111 
    112 ninja -v -C ${BUILD_DIR}