| | #!/bin/sh |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| |
|
| | set -e |
| | echo "starting time: `date`" |
| |
|
| | export CFLAGS="-fno-unwind-tables -fno-exceptions -fno-asynchronous-unwind-tables -fomit-frame-pointer -fvisibility=hidden" |
| |
|
| | : "${ANDROID_NDK_ROOT:=$ANDROID_NDK_HOME}" |
| | : "${ANDROID_NDK_ROOT:=$ANDROID_NDK}" |
| | if test -z "$ANDROID_NDK_ROOT"; then |
| | echo "ANDROID_NDK_ROOT is not set" |
| | exit 1 |
| | fi |
| |
|
| | |
| | export RUSTFLAGS="-C link-args=-Wl,--build-id=none --remap-path-prefix=$HOME/.cargo= --remap-path-prefix=$(realpath $(dirname $(dirname "$0")))=" |
| | export SOURCE_DATE_EPOCH=1 |
| | |
| | rm -f /tmp/android-ndk-root |
| | ln -s "$ANDROID_NDK_ROOT" /tmp/android-ndk-root |
| | ANDROID_NDK_ROOT=/tmp/android-ndk-root |
| |
|
| | echo Setting CARGO_TARGET environment variables. |
| |
|
| | if test -z "$NDK_HOST_TAG"; then |
| | KERNEL="$(uname -s | tr '[:upper:]' '[:lower:]')" |
| | ARCH="$(uname -m)" |
| |
|
| | if test "$ARCH" = "arm64" && test ! -f "$ANDROID_NDK_ROOT/toolchains/llvm/prebuilt/$KERNEL-$ARCH/bin/aarch64-linux-android21-clang"; then |
| | echo "arm64 host is not supported by $ANDROID_NDK_ROOT; trying to use x86_64, in case the host has a binary translation such as Rosetta or QEMU installed." |
| | echo "(Newer NDK may support arm64 host but may lack support for Android4/ABI16)" |
| | ARCH="x86_64" |
| | fi |
| |
|
| | NDK_HOST_TAG="$KERNEL-$ARCH" |
| | fi |
| |
|
| | if test -z "$CARGO_TARGET_DIR"; then |
| | export CARGO_TARGET_DIR=/tmp/arcanechat-build |
| | fi |
| |
|
| | TOOLCHAIN="$ANDROID_NDK_ROOT/toolchains/llvm/prebuilt/$NDK_HOST_TAG" |
| | export CARGO_TARGET_ARMV7_LINUX_ANDROIDEABI_LINKER="$TOOLCHAIN/bin/armv7a-linux-androideabi21-clang" |
| | export CARGO_TARGET_AARCH64_LINUX_ANDROID_LINKER="$TOOLCHAIN/bin/aarch64-linux-android21-clang" |
| | export CARGO_TARGET_I686_LINUX_ANDROID_LINKER="$TOOLCHAIN/bin/i686-linux-android21-clang" |
| | export CARGO_TARGET_X86_64_LINUX_ANDROID_LINKER="$TOOLCHAIN/bin/x86_64-linux-android21-clang" |
| |
|
| | export RUSTUP_TOOLCHAIN=$(cat "$(dirname "$0")/rust-toolchain") |
| |
|
| | if test "$1" = "--debug"; then |
| | echo Quick debug build that will produce a slower app. DO NOT UPLOAD THE APK ANYWHERE. |
| |
|
| | RELEASE="debug" |
| | RELEASEFLAG="" |
| |
|
| | shift |
| | else |
| | echo Full build |
| |
|
| | |
| | |
| | export CARGO_PROFILE_RELEASE_LTO=on |
| | RELEASE="release" |
| | RELEASEFLAG="--release" |
| | fi |
| |
|
| | |
| | if test $1 && echo "armeabi-v7a arm64-v8a x86 x86_64" | grep -vwq -- $1; then |
| | echo "Architecture '$1' not known, possible values are armeabi-v7a, arm64-v8a, x86 and x86_64." |
| | exit |
| | fi |
| |
|
| | cd jni |
| | jnidir=$PWD |
| | rm -f armeabi-v7a/* |
| | rm -f arm64-v8a/* |
| | rm -f x86/* |
| | rm -f x86_64/* |
| | mkdir -p armeabi-v7a |
| | mkdir -p arm64-v8a |
| | mkdir -p x86 |
| | mkdir -p x86_64 |
| |
|
| | cd deltachat-core-rust |
| |
|
| | |
| | unset CPATH |
| |
|
| | if test -z $1 || test $1 = armeabi-v7a; then |
| | echo "-- cross compiling to armv7-linux-androideabi (arm) --" |
| | TARGET_CC="$TOOLCHAIN/bin/armv7a-linux-androideabi21-clang" \ |
| | TARGET_AR="$TOOLCHAIN/bin/llvm-ar" \ |
| | TARGET_RANLIB="$TOOLCHAIN/bin/llvm-ranlib" \ |
| | cargo build $RELEASEFLAG --target armv7-linux-androideabi -p deltachat_ffi |
| | cp "$CARGO_TARGET_DIR/armv7-linux-androideabi/$RELEASE/libdeltachat.a" "$jnidir/armeabi-v7a" |
| | fi |
| |
|
| | if test -z $1 || test $1 = arm64-v8a; then |
| | echo "-- cross compiling to aarch64-linux-android (arm64) --" |
| | TARGET_CC="$TOOLCHAIN/bin/aarch64-linux-android21-clang" \ |
| | TARGET_AR="$TOOLCHAIN/bin/llvm-ar" \ |
| | TARGET_RANLIB="$TOOLCHAIN/bin/llvm-ranlib" \ |
| | cargo build $RELEASEFLAG --target aarch64-linux-android -p deltachat_ffi |
| | cp "$CARGO_TARGET_DIR/aarch64-linux-android/$RELEASE/libdeltachat.a" "$jnidir/arm64-v8a" |
| | fi |
| |
|
| | if test -z $1 || test $1 = x86; then |
| | echo "-- cross compiling to i686-linux-android (x86) --" |
| | TARGET_CC="$TOOLCHAIN/bin/i686-linux-android21-clang" \ |
| | TARGET_AR="$TOOLCHAIN/bin/llvm-ar" \ |
| | TARGET_RANLIB="$TOOLCHAIN/bin/llvm-ranlib" \ |
| | cargo build $RELEASEFLAG --target i686-linux-android -p deltachat_ffi |
| | cp "$CARGO_TARGET_DIR/i686-linux-android/$RELEASE/libdeltachat.a" "$jnidir/x86" |
| | fi |
| |
|
| | if test -z $1 || test $1 = x86_64; then |
| | echo "-- cross compiling to x86_64-linux-android (x86_64) --" |
| | TARGET_CC="$TOOLCHAIN/bin/x86_64-linux-android21-clang" \ |
| | TARGET_AR="$TOOLCHAIN/bin/llvm-ar" \ |
| | TARGET_RANLIB="$TOOLCHAIN/bin/llvm-ranlib" \ |
| | cargo build $RELEASEFLAG --target x86_64-linux-android -p deltachat_ffi |
| | cp "$CARGO_TARGET_DIR/x86_64-linux-android/$RELEASE/libdeltachat.a" "$jnidir/x86_64" |
| | fi |
| |
|
| | echo -- ndk-build -- |
| |
|
| | cd ../.. |
| |
|
| | if test $1; then |
| | "$ANDROID_NDK_ROOT/ndk-build" APP_ABI="$1" |
| | else |
| | |
| | "$ANDROID_NDK_ROOT/ndk-build" |
| | fi |
| |
|
| | if test $1; then |
| | echo "NDK_ARCH=$1" >ndkArch |
| | else |
| | rm -f ndkArch |
| | fi |
| |
|
| | "$(dirname "$0")/rebrand.sh" |
| |
|
| |
|
| | echo "ending time: `date`" |
| |
|