quickjs-tart

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

build-android.sh (2226B)


      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 CROSSFILE=cross/android-$ABI.cross.txt
     71 
     72 cat > $CROSSFILE <<EOF
     73 [binaries]
     74 c = '$CLANG_NAME-clang'
     75 cmake = 'false'
     76 ar = 'llvm-ar'
     77 as = '$TOOLS_NAME-as'
     78 ranlib = '$TOOLS_NAME-ranlib'
     79 ld = '$TOOLS_NAME-ld'
     80 strip = '$TOOLS_NAME-strip'
     81 pkgconfig = 'false'
     82 
     83 [properties]
     84 needs_exe_wrapper = 'false'
     85 
     86 [host_machine]
     87 system = 'android'
     88 cpu_family = '$CPU_FAMILY'
     89 cpu = '$CPU'
     90 endian = 'little'
     91 
     92 [cmake]
     93 CMAKE_ANDROID_NDK='$ANDROID_NDK_HOME'
     94 CMAKE_ANDROID_ARCH_ABI='$ABI'
     95 CMAKE_SYSTEM_PROCESSOR=''
     96 EOF
     97 
     98 export LDFLAGS=-flto
     99 export CFLAGS=-flto
    100 
    101 meson setup --errorlogs  \
    102   -Doptimization=3 \
    103   --prefix=${ANDROID_NDK_HOME} \
    104   --includedir=${INC_PATH} \
    105   --libdir=${LIB_PATH} \
    106   --build.cmake-prefix-path=${SYS_ROOT} \
    107   --cross-file $CROSSFILE  \
    108   ${BUILD_DIR} .
    109 
    110 ninja -v -C ${BUILD_DIR}