quickjs-tart

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

commit cd15672d14a45954f0044633f42d538cf2dca679
parent 22cd2a4f66129949a2e4f7f98c1a9f2b9e9b2d8b
Author: Florian Dold <florian@dold.me>
Date:   Fri,  6 Jan 2023 18:36:39 +0100

more generic android build script

Diffstat:
M.gitignore | 1+
Across/README.md | 4++++
Dcross/android-armeabi-v7a.txt | 18------------------
Dcross/build-android-armeabi-v7a.sh | 36------------------------------------
Across/build-android.sh | 102+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
5 files changed, 107 insertions(+), 54 deletions(-)

diff --git a/.gitignore b/.gitignore @@ -3,3 +3,4 @@ tags # compiled wallet core file taler-wallet-core-qjs.mjs +cross/android-*.cross.txt diff --git a/cross/README.md b/cross/README.md @@ -0,0 +1,4 @@ +## Android + +See https://android.googlesource.com/platform/ndk/+/master/docs/BuildSystemMaintainers.md + diff --git a/cross/android-armeabi-v7a.txt b/cross/android-armeabi-v7a.txt @@ -1,18 +0,0 @@ -[binaries] -c = 'armv7a-linux-androideabi24-clang' -cmake = 'false' -ar = 'arm-linux-androideabi-ar' -as = 'arm-linux-androideabi-as' -ranlib = 'arm-linux-androideabi-ranlib' -ld = 'arm-linux-androideabi-ld' -strip = 'arm-linux-androideabi-strip' -pkgconfig = 'false' - -[properties] -needs_exe_wrapper = false - -[host_machine] -system = 'linux' -cpu_family = 'arm' -cpu = 'armv7' -endian = 'little' diff --git a/cross/build-android-armeabi-v7a.sh b/cross/build-android-armeabi-v7a.sh @@ -1,36 +0,0 @@ -#!/bin/bash -set -eu - -ARCH="arm" -ABI="armeabi-v7a" -API_LEVEL="24" -BUILD_DIR="build-android-armeabi-v7a" - -ANDROID_NDK_HOME="${ANDROID_SDK_ROOT}/ndk-bundle" - -HOST_ROOT="${ANDROID_NDK_HOME}/toolchains/llvm/prebuilt/linux-x86_64" -SYS_ROOT="${HOST_ROOT}/sysroot" -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" -INC_PATH="${SYS_ROOT}/usr/include" - -export PATH="${HOST_ROOT}/bin:${PATH}" - -export CFLAGS="\ - -DANDROID_STL=none \ - -DANDROID_TOOLCHAIN=clang \ - -DANDROID_PLATFORM=android-${API_LEVEL} \ - -DANDROID_ABI=${ABI}" - -echo "building..." - -rm -rf ${BUILD_DIR} - -meson setup --errorlogs \ - --prefix=${ANDROID_NDK_HOME} \ - --includedir=${INC_PATH} \ - --libdir=${LIB_PATH} \ - --build.cmake-prefix-path=${SYS_ROOT} \ - --cross-file cross/armv7a-linux-androideabi.txt \ - ${BUILD_DIR} . - -ninja -v -C ${BUILD_DIR} diff --git a/cross/build-android.sh b/cross/build-android.sh @@ -0,0 +1,102 @@ +#!/bin/bash +set -eu + +if [ -z ${1+x} ]; then + echo "usage: $0 <ANDROID_ABI>" + exit 1 +fi + +ABI=$1 + +case $ABI in +armeabi-v7a) + ARCH="arm" + BUILD_DIR="build-android-armeabi-v7a" + CPU_FAMILY=arm + CPU=armv7 + CLANG_NAME=armv7a-linux-androideabi24 + TOOLS_NAME=arm-linux-androideabi + ;; +arm64-v8a) + ARCH="arm64" + BUILD_DIR="build-android-arm64-v8a" + CPU_FAMILY=aarch64 + CPU=armv8 + CLANG_NAME=aarch64-linux-android24 + TOOLS_NAME=aarch64-linux-android + ;; +x86) + ARCH="x86" + BUILD_DIR="build-android-x86" + CPU_FAMILY=x86 + CPU=x86 + CLANG_NAME=i686-linux-android24 + TOOLS_NAME=i686-linux-android + ;; +x86_64) + ARCH="x86_64" + BUILD_DIR="build-android-x86_64" + CPU_FAMILY=x84_64 + CPU=x86_64 + CLANG_NAME=x86_64-linux-android24 + TOOLS_NAME=x86_64-linux-android + ;; +*) + echo unknown ABI + exit 1 + ;; +esac + +API_LEVEL="24" + +ANDROID_NDK_HOME="${ANDROID_SDK_ROOT}/ndk-bundle" + +HOST_ROOT="${ANDROID_NDK_HOME}/toolchains/llvm/prebuilt/linux-x86_64" +SYS_ROOT="${HOST_ROOT}/sysroot" +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" +INC_PATH="${SYS_ROOT}/usr/include" + +export PATH="${HOST_ROOT}/bin:${PATH}" + +export CFLAGS="\ + -DANDROID_STL=none \ + -DANDROID_TOOLCHAIN=clang \ + -DANDROID_PLATFORM=android-${API_LEVEL} \ + -DANDROID_ABI=${ABI}" + +echo "building..." + +rm -rf ${BUILD_DIR} + +CROSSFILE=cross/android-$ABI.cross.txt + +cat > $CROSSFILE <<EOF +[binaries] +c = '$CLANG_NAME-clang' +cmake = 'false' +ar = '$TOOLS_NAME-ar' +as = '$TOOLS_NAME-as' +ranlib = '$TOOLS_NAME-ranlib' +ld = '$TOOLS_NAME-ld' +strip = '$TOOLS_NAME-strip' +pkgconfig = 'false' + +[properties] +needs_exe_wrapper = false + +[host_machine] +system = 'linux' +cpu_family = '$CPU_FAMILY' +cpu = '$CPU' +endian = 'little' +EOF + +meson setup --errorlogs \ + --prefix=${ANDROID_NDK_HOME} \ + --includedir=${INC_PATH} \ + --libdir=${LIB_PATH} \ + --build.cmake-prefix-path=${SYS_ROOT} \ + --cross-file $CROSSFILE \ + ${BUILD_DIR} . + +ninja -v -C ${BUILD_DIR}