Update android build scripts.
M committed
Aug 31, 2021 at 12:27 UTC
9d7e465211a6790785b77c5fbf0bb799bb76df0c
10 files changed
+148
-102
scripts/android/build_boost.sh
+7
-7
@@ -1,16 +1,16 @@
1
-# /bin/bash
1
+#!/bin/sh
2
3
-WORKDIR=/opt/android
4
-TOOLCHAIN_BASE_DIR=${WORKDIR}/toolchain
5
-ORIGINAL_PATH=$PATH
3
+. ./config.sh
4
+BOOST_SRC_DIR=$WORKDIR/boost_1_74_0
5
+BOOST_FILENAME=boost_1_74_0.tar.bz2
6
+BOOST_VERSION=1.74.0
7
8
for arch in "aarch" "aarch64" "i686" "x86_64"
9
do
10
11
PREFIX=$WORKDIR/prefix_${arch}
11
-PATH="${TOOLCHAIN_BASE_DIR}_${arch}/bin:${ORIGINAL_PATH}"
12
13
-./init_boost.sh $arch
14
-./finish_boost.sh $arch
13
+./init_boost.sh $arch $PREFIX $BOOST_SRC_DIR $BOOST_FILENAME $BOOST_VERSION
14
+./finish_boost.sh $arch $PREFIX $BOOST_SRC_DIR $BOOST_SRC_DIR
15
16
done
scripts/android/build_iconv.sh
+13
-14
@@ -1,29 +1,27 @@
1
-# /bin/bash
1
+#!/bin/sh
2
3
-export WORKDIR=/opt/android
4
-export ICONV_FILENAME=libiconv-1.15.tar.gz
3
+. ./config.sh
4
+export ICONV_FILENAME=libiconv-1.16.tar.gz
5
export ICONV_FILE_PATH=$WORKDIR/$ICONV_FILENAME
6
-export ICONV_SRC_DIR=$WORKDIR/libiconv-1.15
6
+export ICONV_SRC_DIR=$WORKDIR/libiconv-1.16
7
+ICONV_SHA256="e6a1b1b589654277ee790cce3734f07876ac4ccfaecbee8afa0b649cf529cc04"
8
8
-wget http://ftp.gnu.org/pub/gnu/libiconv/$ICONV_FILENAME -O $ICONV_FILE_PATH
9
-
10
-ORIGINAL_PATH=$PATH
11
-TOOLCHAIN_BASE_DIR=${WORKDIR}/toolchain
9
+curl http://ftp.gnu.org/pub/gnu/libiconv/$ICONV_FILENAME -o $ICONV_FILE_PATH
10
+echo $ICONV_SHA256 $ICONV_FILE_PATH | sha256sum -c - || exit 1
11
12
for arch in aarch aarch64 i686 x86_64
13
do
14
15
PREFIX=${WORKDIR}/prefix_${arch}
17
-PATH="${TOOLCHAIN_BASE_DIR}_${arch}/bin:${ORIGINAL_PATH}"
16
17
case $arch in
18
"aarch" )
21
- CLANG=arm-linux-androideabi-clang
22
- CXXLANG=arm-linux-androideabi-clang++
23
- HOST="arm-linux-android";;
19
+ CLANG=armv7a-linux-androideabi${API}-clang
20
+ CXXLANG=armv7a-linux-androideabi${API}-clang++
21
+ HOST="arm";;
22
* )
25
- CLANG=${arch}-linux-android-clang
26
- CXXLANG=${arch}-linux-android-clang++
23
+ CLANG=${arch}-linux-android${API}-clang
24
+ CXXLANG=${arch}-linux-android${API}-clang++
25
HOST="${arch}-linux-android";;
26
esac
27
@@ -36,3 +34,4 @@ make
34
make install
35
36
done
37
+
scripts/android/build_monero.sh
+31
-16
@@ -1,10 +1,9 @@
1
-# /bin/bash
1
+#!/bin/sh
2
3
-WORKDIR=/opt/android
4
-TOOLCHAIN_BASE_DIR=${WORKDIR}/toolchain
5
-ORIGINAL_PATH=$PATH
3
+. ./config.sh
4
MONERO_BRANCH=v0.17.1.9-android
5
MONERO_SRC_DIR=${WORKDIR}/monero
6
+CMAKE_TOOLCHAIN_FILE="${ANDROID_NDK_HOME}/build/cmake/android.toolchain.cmake"
7
8
git clone https://github.com/cake-tech/monero.git ${MONERO_SRC_DIR} --branch ${MONERO_BRANCH}
9
cd $MONERO_SRC_DIR
@@ -15,8 +14,6 @@ for arch in "aarch" "aarch64" "i686" "x86_64"
14
do
15
FLAGS=""
16
PREFIX=${WORKDIR}/prefix_${arch}
18
-ANDROID_STANDALONE_TOOLCHAIN_PATH="${TOOLCHAIN_BASE_DIR}_${arch}"
19
-PATH="${ANDROID_STANDALONE_TOOLCHAIN_PATH}/bin:${ORIGINAL_PATH}"
17
DEST_LIB_DIR=${PREFIX}/lib/monero
18
DEST_INCLUDE_DIR=${PREFIX}/include
19
export CMAKE_INCLUDE_PATH="${PREFIX}/include"
@@ -27,30 +24,30 @@ mkdir -p $DEST_INCLUDE_DIR
24
25
case $arch in
26
"aarch" )
30
- CLANG=arm-linux-androideabi-clang
31
- CXXLANG=arm-linux-androideabi-clang++
27
+ ANDROID_CLANG=armv7a-linux-androideabi${API}-clang
28
+ ANDROID_CLANGPP=armv7a-linux-androideabi${API}-clang++
29
BUILD_64=OFF
30
TAG="android-armv7"
31
ARCH="armv7-a"
32
ARCH_ABI="armeabi-v7a"
33
FLAGS="-D CMAKE_ANDROID_ARM_MODE=ON -D NO_AES=true";;
34
"aarch64" )
38
- CLANG=aarch64-linux-androideabi-clang
39
- CXXLANG=aarch64-linux-androideabi-clang++
35
+ ANDROID_CLANG=aarch64-linux-androideabi${API}-clang
36
+ ANDROID_CLANGPP=aarch64-linux-androideabi${API}-clang++
37
BUILD_64=ON
38
TAG="android-armv8"
39
ARCH="armv8-a"
40
ARCH_ABI="arm64-v8a";;
41
"i686" )
45
- CLANG=i686-linux-androideabi-clang
46
- CXXLANG=i686-linux-androideabi-clang++
42
+ ANDROID_CLANG=i686-linux-androideabi${API}-clang
43
+ ANDROID_CLANGPP=i686-linux-androideabi${API}-clang++
44
BUILD_64=OFF
45
TAG="android-x86"
46
ARCH="i686"
47
ARCH_ABI="x86";;
51
- "x86_64" )
52
- CLANG=x86_64-linux-androideabi-clang
53
- CXXLANG=x86_64-linux-androideabi-clang++
48
+ "x86_64" )
49
+ ANDROID_CLANG=x86_64-linux-androideabi${API}-clang
50
+ ANDROID_CLANGPP=x86_64-linux-androideabi${API}-clang++
51
BUILD_64=ON
52
TAG="android-x86_64"
53
ARCH="x86-64"
@@ -61,7 +58,25 @@ cd $MONERO_SRC_DIR
58
rm -rf ./build/release
59
mkdir -p ./build/release
60
cd ./build/release
64
-CC=${CLANG} CXX=${CXXLANG} cmake -D USE_DEVICE_TREZOR=OFF -D BUILD_GUI_DEPS=1 -D BUILD_TESTS=OFF -D ARCH=${ARCH} -D STATIC=ON -D BUILD_64=${BUILD_64} -D CMAKE_BUILD_TYPE=release -D ANDROID=true -D INSTALL_VENDORED_LIBUNBOUND=ON -D BUILD_TAG=${TAG} -D CMAKE_SYSTEM_NAME="Android" -D CMAKE_ANDROID_STANDALONE_TOOLCHAIN="${ANDROID_STANDALONE_TOOLCHAIN_PATH}" -D CMAKE_ANDROID_ARCH_ABI=${ARCH_ABI} $FLAGS ../..
61
+ cmake \
62
+ -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE} \
63
+ -DCMAKE_PREFIX_PATH="${PREFIX}" \
64
+ -DCMAKE_FIND_ROOT_PATH="${PREFIX}" \
65
+ -DCMAKE_BUILD_TYPE=release \
66
+ -DARCH=$ARCH \
67
+ -DANDROID=true \
68
+ -DANDROID_NATIVE_API_LEVEL=$API \
69
+ -DANDROID_ABI=$ARCH_ABI \
70
+ -DANDROID_TOOLCHAIN=clang \
71
+ -DLRELEASE_PATH="${PREFIX}/bin" \
72
+ -DSTATIC=ON \
73
+ -DBUILD_64=$BUILD_64 \
74
+ -DINSTALL_VENDORED_LIBUNBOUND=ON \
75
+ -DUSE_DEVICE_TREZOR=OFF \
76
+ -DBUILD_GUI_DEPS=1 \
77
+ -DBUILD_TESTS=OFF \
78
+ ${FLAGS} ../..
79
+
80
make wallet_api -j4
81
find . -path ./lib -prune -o -name '*.a' -exec cp '{}' lib \;
82
scripts/android/build_openssl.sh
+36
-18
@@ -1,44 +1,62 @@
1
-# /bin/bash
1
+#!/bin/sh
2
3
-WORKDIR=/opt/android
4
-OPENSSL_FILENAME=openssl-1.0.2p.tar.gz
3
+. ./config.sh
4
+OPENSSL_FILENAME=openssl-1.1.1k.tar.gz
5
OPENSSL_FILE_PATH=$WORKDIR/$OPENSSL_FILENAME
6
-OPENSSL_SRC_DIR=$WORKDIR/openssl-1.0.2p
6
+OPENSSL_SRC_DIR=$WORKDIR/openssl-1.1.1k
7
+OPENSSL_SHA256="892a0875b9872acd04a9fde79b1f943075d5ea162415de3047c327df33fbaee5"
8
ZLIB_FILENAME=zlib-1.2.11.tar.gz
9
ZLIB_FILE_PATH=$WORKDIR/$ZLIB_FILENAME
10
ZLIB_SRC_DIR=$WORKDIR/zlib-1.2.11
10
-ORIGINAL_PATH=$PATH
11
-TOOLCHAIN_BASE_DIR=${WORKDIR}/toolchain
11
+ZLIB_SHA256="c3e5e9fdd5004dcb542feda5ee4f0ff0744628baf8ed2dd5d66f8ca1197cb1a1"
12
+
13
+curl https://zlib.net/$ZLIB_FILENAME -o $ZLIB_FILE_PATH
14
+echo $ZLIB_SHA256 $ZLIB_FILE_PATH | sha256sum -c - || exit 1
15
13
-wget https://zlib.net/$ZLIB_FILENAME -O $ZLIB_FILE_PATH
16
tar -xzf $ZLIB_FILE_PATH -C $WORKDIR
17
cd $ZLIB_SRC_DIR
18
CC=clang CXX=clang++ ./configure --static
19
make
20
19
-wget https://www.openssl.org/source/$OPENSSL_FILENAME -O $OPENSSL_FILE_PATH
21
+curl https://www.openssl.org/source/$OPENSSL_FILENAME -o $OPENSSL_FILE_PATH
22
+echo $OPENSSL_SHA256 $OPENSSL_FILE_PATH | sha256sum -c - || exit 1
23
24
for arch in "aarch" "aarch64" "i686" "x86_64"
25
do
23
-
26
PREFIX=$WORKDIR/prefix_${arch}
25
-PATH="${TOOLCHAIN_BASE_DIR}_${arch}/bin:${ORIGINAL_PATH}"
27
28
case $arch in
28
- "aarch" ) TARGET="armv7";;
29
- * ) TARGET="${arch}";;
30
-esac
29
+ "aarch") CLANG=armv7a-linux-androideabi${API}-clang
30
+ CXXLANG=armv7a-linux-androideabi${API}-clang++
31
+ X_ARCH="android-arm";;
32
+ "aarch64") CLANG=${arch}-linux-android${API}-clang
33
+ CXXLANG=${arch}-linux-android${API}-clang++
34
+ X_ARCH="android-arm64";;
35
+ "i686") CLANG=${arch}-linux-android${API}-clang
36
+ CXXLANG=${arch}-linux-android${API}-clang++
37
+ X_ARCH="android-x86";;
38
+ "x86_64") CLANG=${arch}-linux-android${API}-clang
39
+ CXXLANG=${arch}-linux-android${API}-clang++
40
+ X_ARCH="android-x86_64";;
41
+ *) CLANG=${arch}-linux-android${API}-clang
42
+ CXXLANG=${arch}-linux-android${API}-clang++
43
+ X_ARCH="android-${arch}";;
44
+esac
45
46
cd $WORKDIR
47
rm -rf $OPENSSL_SRC_DIR
48
tar -xzf $OPENSSL_FILE_PATH -C $WORKDIR
49
cd $OPENSSL_SRC_DIR
36
-sed -i -e "s/mandroid/target\ ${TARGET}\-linux\-android/" Configure
37
-CC=clang CXX=clang++ ./Configure android no-asm no-shared --static --with-zlib-include=${WORKDIR}/zlib --with-zlib-lib=${ZLIB_SRC_DIR} --prefix=${PREFIX} --openssldir=${PREFIX}
38
-make
50
+./Configure CC=${CLANG} CXX=${CXXLANG} ${X_ARCH} \
51
+ no-asm no-shared --static \
52
+ --with-zlib-include=${PREFIX}/include \
53
+ --with-zlib-lib=${PREFIX}/lib \
54
+ --prefix=${PREFIX} \
55
+ --openssldir=${PREFIX} \
56
+ -D__ANDROID_API__=$API
57
+sed -i 's/CNF_EX_LIBS=-ldl -pthread//g;s/BIN_CFLAGS=-pie $(CNF_CFLAGS) $(CFLAGS)//g' Makefile
58
+make -j4
59
make install
60
41
-
61
done
62
44
-
scripts/android/build_sodium.sh
+14
-10
@@ -1,21 +1,24 @@
1
-# /bin/bash
1
+#!/bin/sh
2
3
-WORKDIR=/opt/android
4
-TOOLCHAIN_BASE_DIR=${WORKDIR}/toolchain
3
+. ./config.sh
4
SODIUM_SRC_DIR=${WORKDIR}/libsodium
5
SODIUM_BRANCH=1.0.16
7
-ORIGINAL_PATH=$PATH
6
7
for arch in "aarch" "aarch64" "i686" "x86_64"
8
do
9
12
-PREFIX=$WORKDIR/prefix_${arch}
13
-PATH="${TOOLCHAIN_BASE_DIR}_${arch}/bin:${ORIGINAL_PATH}"
10
+PREFIX=${WORKDIR}/prefix_${arch}
11
12
case $arch in
16
- "aarch" ) TARGET="arm";;
17
- "i686" ) TARGET="x86";;
18
- * ) TARGET="${arch}";;
13
+ "aarch" ) TARGET="arm"
14
+ CC=armv7a-linux-androideabi${API}-clang
15
+ CXX=armv7a-linux-androideabi${API}-clang++;;
16
+ "i686" ) TARGET="x86"
17
+ CC=${arch}-linux-android${API}-clang
18
+ CXX=${arch}-linux-android${API}-clang++;;
19
+ * ) TARGET="${arch}"
20
+ CC=${arch}-linux-android${API}-clang
21
+ CXX=${arch}-linux-android${API}-clang++;;
22
esac
23
24
HOST="${TARGET}-linux-android"
@@ -24,8 +27,9 @@ rm -rf $SODIUM_SRC_DIR
27
git clone https://github.com/jedisct1/libsodium.git $SODIUM_SRC_DIR -b $SODIUM_BRANCH
28
cd $SODIUM_SRC_DIR
29
./autogen.sh
27
-CC=clang CXX=clang++ ./configure --prefix=${PREFIX} --host=${HOST} --enable-static --disable-shared
30
+./configure --prefix=${PREFIX} --host=${HOST} --enable-static --disable-shared
31
make
32
make install
33
34
done
35
+
scripts/android/build_zmq.sh
+15
-12
@@ -1,25 +1,28 @@
1
-# /bin/bash
1
+#!/bin/sh
2
3
-WORKDIR=/opt/android
4
-TOOLCHAIN_BASE_DIR=${WORKDIR}/toolchain
3
+. ./config.sh
4
ZMQ_SRC_DIR=$WORKDIR/libzmq
6
-ZMQ_BRANCH=master
7
-ZMQ_COMMIT_HASH=501d0815bf2b0abb93be8214fc66519918ef6c40
8
-ORIGINAL_PATH=$PATH
9
-
5
+ZMQ_BRANCH=v4.3.3
6
+ZMQ_COMMIT_HASH=04f5bbedee58c538934374dc45182d8fc5926fa3
7
8
for arch in "aarch" "aarch64" "i686" "x86_64"
9
do
10
11
PREFIX=$WORKDIR/prefix_${arch}
15
-PATH="${TOOLCHAIN_BASE_DIR}_${arch}/bin:${ORIGINAL_PATH}"
12
13
case $arch in
18
- "aarch" ) TARGET="arm";;
19
- "i686" ) TARGET="x86";;
20
- * ) TARGET="${arch}";;
14
+ "aarch" ) TARGET="arm"
15
+ ANDROID_CLANG=armv7a-linux-androideabi${API}-clang
16
+ ANDROID_CLANGPP=armv7a-linux-androideabi${API}-clang++;;
17
+ "i686" ) TARGET="x86"
18
+ ANDROID_CLANG=${arch}-linux-android${API}-clang
19
+ ANDROID_CLANGPP=${arch}-linux-android${API}-clang++;;
20
+ * ) TARGET="${arch}"
21
+ ANDROID_CLANG=${arch}-linux-android${API}-clang
22
+ ANDROID_CLANGPP=${arch}-linux-android${API}-clang++;;
23
esac
24
25
+
26
HOST="${TARGET}-linux-android"
27
cd $WORKDIR
28
rm -rf $ZMQ_SRC_DIR
@@ -27,7 +30,7 @@ git clone https://github.com/zeromq/libzmq.git ${ZMQ_SRC_DIR} -b ${ZMQ_BRANCH}
30
cd $ZMQ_SRC_DIR
31
git checkout ${ZMQ_COMMIT_HASH}
32
./autogen.sh
30
-CC=clang CXX=clang++ ./configure --prefix=${PREFIX} --host=${HOST} --enable-static --disable-shared
33
+ CC=${ANDROID_CLANG} CXX=${ANDROID_CLANGPP} ./configure --prefix=${PREFIX} --host=${HOST} --enable-static --disable-shared
34
make
35
make install
36
scripts/android/config.sh
new
+13
@@ -0,0 +1,13 @@
1
+#!/bin/sh
2
+
3
+export API=21
4
+export WORKDIR=/opt/android
5
+export ANDROID_NDK_ZIP=${WORKDIR}/android-ndk-r20b.zip
6
+export ANDROID_NDK_ROOT=${WORKDIR}/android-ndk-r20b
7
+export ANDROID_NDK_HOME=$ANDROID_NDK_ROOT
8
+export TOOLCHAIN_DIR="${ANDROID_NDK_HOME}/toolchains/llvm/prebuilt/linux-x86_64"
9
+
10
+case :${PATH:=${TOOLCHAIN_DIR}/bin}: in
11
+(*:"${TOOLCHAIN_DIR}/bin":*) ;; (*)
12
+ export PATH=${TOOLCHAIN_DIR}/bin:$PATH
13
+esac;
scripts/android/finish_boost.sh
+4
-4
@@ -1,9 +1,9 @@
1
-# /bin/bash
1
+#!/bin/sh
2
3
-WORKDIR=/opt/android
3
ARCH=$1
5
-PREFIX="${WORKDIR}/prefix_${ARCH}"
6
-BOOST_SRC_DIR=$WORKDIR/boost_1_68_0
4
+PREFIX=$2
5
+BOOST_SRC_DIR=$3
6
7
cd $BOOST_SRC_DIR
8
+
9
./b2 --build-type=minimal link=static runtime-link=static --with-chrono --with-date_time --with-filesystem --with-program_options --with-regex --with-serialization --with-system --with-thread --with-locale --build-dir=android --stagedir=android toolset=clang threading=multi threadapi=pthread target-os=android -sICONV_PATH=${PREFIX} install
scripts/android/init_boost.sh
+9
-6
@@ -1,16 +1,19 @@
1
-# /bin/bash
1
+#!/bin/sh
2
3
-WORKDIR=/opt/android
3
ARCH=$1
5
-PREFIX="${WORKDIR}/prefix_${ARCH}"
6
-BOOST_FILENAME=boost_1_68_0.tar.bz2
4
+PREFIX=$2
5
+BOOST_SRC_DIR=$3
6
+BOOST_FILENAME=$4
7
+BOOST_VERSION=$5
8
BOOST_FILE_PATH=$WORKDIR/$BOOST_FILENAME
8
-BOOST_SRC_DIR=$WORKDIR/boost_1_68_0
9
+BOOST_SHA256="83bfc1507731a0906e387fc28b7ef5417d591429e51e788417fe9ff025e116b1"
10
11
if [ ! -e "$BOOST_FILE_PATH" ]; then
11
- wget https://dl.bintray.com/boostorg/release/1.68.0/source/$BOOST_FILENAME -O $BOOST_FILE_PATH
12
+ curl -L http://downloads.sourceforge.net/project/boost/boost/${BOOST_VERSION}/${BOOST_FILENAME} > $BOOST_FILE_PATH
13
fi
14
15
+echo $BOOST_SHA256 $BOOST_FILE_PATH | sha256sum -c - || exit 1
16
+
17
cd $WORKDIR
18
rm -rf $BOOST_SRC_DIR
19
tar -xvf $BOOST_FILE_PATH -C $WORKDIR
scripts/android/install_ndk.sh
+6
-15
@@ -1,17 +1,8 @@
1
-# /bin/bash
1
+#!/bin/sh
2
3
-WORKDIR=/opt/android
4
-ANDROID_NDK_ZIP=${WORKDIR}/android-ndk-r17c.zip
5
-ANDROID_NDK_ROOT=${WORKDIR}/android-ndk-r17c
6
-TOOLCHAIN_DIR=${WORKDIR}/toolchain
7
-TOOLCHAIN_A32_DIR=${TOOLCHAIN_DIR}_aarch
8
-TOOLCHAIN_A64_DIR=${TOOLCHAIN_DIR}_aarch64
9
-TOOLCHAIN_x86_DIR=${TOOLCHAIN_DIR}_i686
10
-TOOLCHAIN_x86_64_DIR=${TOOLCHAIN_DIR}_x86_64
3
+. ./config.sh
4
+ANDROID_NDK_SHA256="8381c440fe61fcbb01e209211ac01b519cd6adf51ab1c2281d5daad6ca4c8c8c"
5
12
-wget https://dl.google.com/android/repository/android-ndk-r17c-linux-x86_64.zip -O /opt/android/android-ndk-r17c.zip
13
-unzip /opt/android/android-ndk-r17c.zip -d $WORKDIR
14
-${ANDROID_NDK_ROOT}/build/tools/make_standalone_toolchain.py --arch arm64 --api 21 --install-dir ${TOOLCHAIN_A64_DIR} --stl=libc++
15
-${ANDROID_NDK_ROOT}/build/tools/make_standalone_toolchain.py --arch arm --api 21 --install-dir ${TOOLCHAIN_A32_DIR} --stl=libc++
16
-${ANDROID_NDK_ROOT}/build/tools/make_standalone_toolchain.py --arch x86 --api 21 --install-dir ${TOOLCHAIN_x86_DIR} --stl=libc++
17
-${ANDROID_NDK_ROOT}/build/tools/make_standalone_toolchain.py --arch x86_64 --api 21 --install-dir ${TOOLCHAIN_x86_64_DIR} --stl=libc++
6
+curl https://dl.google.com/android/repository/android-ndk-r20b-linux-x86_64.zip -o ${ANDROID_NDK_ZIP}
7
+echo $ANDROID_NDK_SHA256 $ANDROID_NDK_ZIP | sha256sum -c || exit 1
8
+unzip /opt/android/android-ndk-r20b.zip -d $WORKDIR