mirror of
https://github.com/deltachat/deltachat-android.git
synced 2025-10-03 09:49:21 +02:00
104 lines
3.1 KiB
Bash
Executable file
104 lines
3.1 KiB
Bash
Executable file
#!/bin/sh
|
|
|
|
# If you want to, you can run this script with instead of ndk-make.sh your architecture as an argument
|
|
# to speed up compilation by factor 4 (will not work on macOS and might not work for other reasons):
|
|
#
|
|
# ./ndk-make.sh arm64-v8a
|
|
#
|
|
# Possible values are armeabi-v7a, arm64-v8a, x86 and x86_64.
|
|
# You should be able to find out your architecture by running:
|
|
#
|
|
# adb shell uname -m
|
|
#
|
|
# or:
|
|
#
|
|
# adb shell cat /proc/cpuinfo
|
|
#
|
|
# The values in the following lines mean the same:
|
|
#
|
|
# armeabi-v7a, armv7 and arm
|
|
# arm64-v8a, aarch64 and arm64
|
|
# x86 and i686
|
|
# (there are no synonyms for x86_64)
|
|
#
|
|
#
|
|
# If you put this in your .bashrc, then you can directly build and deploy DeltaChat from the jni/deltachat-core-rust directory by typing nmake():
|
|
# nmake() {sh -c 'cd ../..; ./ndk-make-fast.sh arm64-v8a && ./gradlew installFatDebug; notify-send "install finished" }
|
|
|
|
set -e
|
|
echo "starting time: `date`"
|
|
|
|
# Check if the argument is a correct architecture:
|
|
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
|
|
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
|
|
|
|
# fix build on MacOS Catalina
|
|
unset CPATH
|
|
|
|
if test -z $1 || test $1 = armeabi-v7a; then
|
|
echo "-- cross compiling to armv7-linux-androideabi (arm) --"
|
|
export CFLAGS=-D__ANDROID_API__=16
|
|
TARGET_CC=armv7a-linux-androideabi16-clang \
|
|
cargo +`cat rust-toolchain` build --target armv7-linux-androideabi -p deltachat_ffi
|
|
cp target/armv7-linux-androideabi/debug/libdeltachat.a ../armeabi-v7a
|
|
fi
|
|
|
|
if test -z $1 || test $1 = arm64-v8a; then
|
|
echo "-- cross compiling to aarch64-linux-android (arm64) --"
|
|
export CFLAGS=-D__ANDROID_API__=21
|
|
TARGET_CC=aarch64-linux-android21-clang \
|
|
cargo +`cat rust-toolchain` build --target aarch64-linux-android -p deltachat_ffi
|
|
cp target/aarch64-linux-android/debug/libdeltachat.a ../arm64-v8a
|
|
fi
|
|
|
|
if test -z $1 || test $1 = x86; then
|
|
echo "-- cross compiling to i686-linux-android (x86) --"
|
|
export CFLAGS=-D__ANDROID_API__=16
|
|
TARGET_CC=i686-linux-android16-clang \
|
|
cargo +`cat rust-toolchain` build --target i686-linux-android -p deltachat_ffi
|
|
cp target/i686-linux-android/debug/libdeltachat.a ../x86
|
|
fi
|
|
|
|
if test -z $1 || test $1 = x86_64; then
|
|
echo "-- cross compiling to x86_64-linux-android (x86_64) --"
|
|
export CFLAGS=-D__ANDROID_API__=21
|
|
TARGET_CC=x86_64-linux-android21-clang \
|
|
cargo +`cat rust-toolchain` build --target x86_64-linux-android -p deltachat_ffi
|
|
cp target/x86_64-linux-android/debug/libdeltachat.a ../x86_64
|
|
fi
|
|
|
|
echo -- ndk-build --
|
|
|
|
cd ..
|
|
# Set the right arch in Application.mk:
|
|
oldDotMk="$(cat Application.mk)"
|
|
|
|
if test $1; then
|
|
sed -i "s/APP_ABI.*/APP_ABI := $1/g" Application.mk
|
|
else
|
|
# We are compiling for all architectures:
|
|
sed -i "s/APP_ABI.*/APP_ABI := armeabi-v7a arm64-v8a x86 x86_64/g" Application.mk
|
|
fi
|
|
|
|
cd ..
|
|
ndk-build
|
|
|
|
cd jni
|
|
# Restore old Application.mk:
|
|
echo "$oldDotMk" > Application.mk
|
|
|
|
echo "ending time: `date`"
|