mirror of https://github.com/m2049r/xmrwallet.git
rework build process
This commit is contained in:
parent
d398416a3d
commit
4211687981
|
@ -52,8 +52,7 @@ android {
|
|||
abi {
|
||||
enable true
|
||||
reset()
|
||||
//include 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64'
|
||||
include 'arm64-v8a'
|
||||
include 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64'
|
||||
universalApk true
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
build
|
|
@ -0,0 +1,122 @@
|
|||
#.PHONY: f-droid-sign f-droid-clean \
|
||||
#build-external-libs use-prebuilt-external-libs \
|
||||
#toolchain openssl boost wownero collect \
|
||||
#clean-external-libs \
|
||||
#f-droid-sign f-droid-clean \
|
||||
#gradle-release gradle-build gradle-sign gradle-clean \
|
||||
#apk-install remove-exif
|
||||
|
||||
#all: build-external-libs
|
||||
|
||||
#build-external-libs: clean-external-libs collect
|
||||
|
||||
all: monero
|
||||
|
||||
monero: toolchain libsodium openssl boost monero_dl openssl_sysroot
|
||||
script/monero-build.sh
|
||||
|
||||
monero_dl:
|
||||
script/monero-fetch.sh
|
||||
# script/monero-patch.sh
|
||||
|
||||
toolchain:
|
||||
script/toolchain-build.sh
|
||||
|
||||
openssl: toolchain openssl_dl
|
||||
script/openssl-build.sh
|
||||
|
||||
openssl_sysroot:
|
||||
script/openssl-install.sh
|
||||
|
||||
openssl_dl:
|
||||
script/openssl-fetch.sh
|
||||
script/openssl-patch.sh
|
||||
|
||||
boost: toolchain boost_dl
|
||||
script/boost-build.sh
|
||||
|
||||
boost_dl:
|
||||
script/boost-fetch.sh
|
||||
|
||||
libsodium: toolchain libsodium_dl
|
||||
script/libsodium-build.sh
|
||||
|
||||
libsodium_dl:
|
||||
script/libsodium-fetch.sh
|
||||
|
||||
install: all
|
||||
script/install.sh
|
||||
|
||||
clean:
|
||||
script/clean.sh
|
||||
|
||||
distclean: clean
|
||||
find monero -type f -a ! -name ".gitignore" -a ! -name "wallet2_api.h" -exec rm {} \;
|
||||
find boost -type f -a ! -name ".gitignore" -exec rm {} \;
|
||||
find libsodium -type f -a ! -name ".gitignore" -exec rm {} \;
|
||||
find openssl -type f -a ! -name ".gitignore" -exec rm {} \;
|
||||
|
||||
archive: libsodium openssl boost monero
|
||||
echo "Packing external-libs"
|
||||
tar czfv libsodium openssl boost monero external-libs.tgz
|
||||
|
||||
|
||||
# dev shortcut
|
||||
|
||||
# faster build for testing f-droid release
|
||||
use-prebuilt-external-libs:
|
||||
script/build-external-libs/use-archive.sh
|
||||
|
||||
wownero-unsafe:
|
||||
script/build-external-libs/fetch-wownero.sh
|
||||
script/build-external-libs/patch-wownero.sh
|
||||
script/build-external-libs/build-wownero.sh
|
||||
|
||||
|
||||
|
||||
|
||||
fdroid_apk_path := vendor/fdroiddata/unsigned
|
||||
app_id := com.wownero.wownerujo
|
||||
|
||||
gradle_apk_path := app/build/outputs/apk/release
|
||||
gradle_app_name := wownerujo-${gradle_app_version}_universal
|
||||
|
||||
|
||||
|
||||
f-droid-sign:
|
||||
zipalign -v -p 4 \
|
||||
$(fdroid_apk_path)/$(app_id)_${app_version}.apk \
|
||||
$(fdroid_apk_path)/$(app_id)_${app_version}-aligned.apk
|
||||
|
||||
apksigner sign --ks ${release_key} \
|
||||
--out $(fdroid_apk_path)/$(app_id)_${app_version}-release.apk \
|
||||
$(fdroid_apk_path)/$(app_id)_${app_version}-aligned.apk
|
||||
|
||||
f-droid-clean:
|
||||
@rm -f $(fdroid_apk_path)/$(app_id)_${app_version}-aligned.apk
|
||||
@rm -f $(fdroid_apk_path)/$(app_id)_${app_version}-release.apk
|
||||
|
||||
gradle-release: gradle-build gradle-sign
|
||||
|
||||
gradle-build:
|
||||
./gradlew assembleRelease
|
||||
|
||||
gradle-sign: gradle-clean
|
||||
zipalign -v -p 4 \
|
||||
$(gradle_apk_path)/$(gradle_app_name).apk \
|
||||
$(gradle_apk_path)/$(gradle_app_name)-aligned.apk
|
||||
|
||||
apksigner sign --ks ${release_key} \
|
||||
--out $(gradle_apk_path)/$(gradle_app_name)-release.apk \
|
||||
$(gradle_apk_path)/$(gradle_app_name)-aligned.apk
|
||||
|
||||
gradle-clean:
|
||||
@rm -f $(gradle_apk_path)/$(gradle_app_name)-aligned.apk
|
||||
@rm -f $(gradle_apk_path)/$(gradle_app_name)-release.apk
|
||||
|
||||
apk-install:
|
||||
adb install -r ./app/build/outputs/apk/release/wownerujo-$(gradle_app_version)_universal-release.apk
|
||||
|
||||
|
||||
remove-exif:
|
||||
exiftool -all= `find app/ -name '*.jp*g' -o -name '*.png'`
|
|
@ -0,0 +1,4 @@
|
|||
# Ignore everything in this directory
|
||||
*
|
||||
# Except this file
|
||||
!.gitignore
|
|
@ -0,0 +1,4 @@
|
|||
# Ignore everything in this directory
|
||||
*
|
||||
# Except this file
|
||||
!.gitignore
|
|
@ -0,0 +1,4 @@
|
|||
# Ignore everything in this directory
|
||||
*
|
||||
# Except this file
|
||||
!.gitignore
|
|
@ -0,0 +1,4 @@
|
|||
# Ignore everything in this directory
|
||||
*
|
||||
# Except this file
|
||||
!.gitignore
|
|
@ -0,0 +1,87 @@
|
|||
#!/bin/bash
|
||||
#
|
||||
# http://wiki.openssl.org/index.php/Android
|
||||
#
|
||||
# needs ANDROID_NDK_ROOT set correctly (e.g. to /opt/android/android-ndk-r15c)
|
||||
|
||||
set -e
|
||||
|
||||
SRC_DIR=$EXTERNAL_LIBS_BUILD_ROOT/android-openssl
|
||||
TARGET_DIR=$EXTERNAL_LIBS_ROOT/openssl
|
||||
|
||||
archs=(arm arm64 x86 x86_64)
|
||||
|
||||
for arch in ${archs[@]}; do
|
||||
xLIB="/lib"
|
||||
case ${arch} in
|
||||
"arm")
|
||||
_ANDROID_TARGET_SELECT=arch-arm
|
||||
_ANDROID_ARCH=arch-arm
|
||||
_ANDROID_EABI=arm-linux-androideabi-4.9
|
||||
_ANDROID_EABI_INC=arm-linux-androideabi
|
||||
configure_platform="android-armv7" ;;
|
||||
"arm64")
|
||||
_ANDROID_TARGET_SELECT=arch-arm64-v8a
|
||||
_ANDROID_ARCH=arch-arm64
|
||||
_ANDROID_EABI=aarch64-linux-android-4.9
|
||||
_ANDROID_EABI_INC=aarch64-linux-android
|
||||
configure_platform="linux-generic64 -DB_ENDIAN" ;;
|
||||
"x86")
|
||||
_ANDROID_TARGET_SELECT=arch-x86
|
||||
_ANDROID_ARCH=arch-x86
|
||||
_ANDROID_EABI=x86-4.9
|
||||
_ANDROID_EABI_INC=i686-linux-android
|
||||
configure_platform="android-x86" ;;
|
||||
"x86_64")
|
||||
_ANDROID_TARGET_SELECT=arch-x86_64
|
||||
_ANDROID_ARCH=arch-x86_64
|
||||
_ANDROID_EABI=x86_64-4.9
|
||||
_ANDROID_EABI_INC=x86_64-linux-android
|
||||
xLIB="/lib64"
|
||||
configure_platform="linux-generic64" ;;
|
||||
*)
|
||||
configure_platform="linux-elf" ;;
|
||||
esac
|
||||
|
||||
TARGET_LIB_DIR=$TARGET_DIR/$arch/lib
|
||||
|
||||
if [ -f "$TARGET_LIB_DIR/libcrypto.a" ] && [ -f "$TARGET_LIB_DIR/libssl.a" ]; then
|
||||
continue
|
||||
fi
|
||||
|
||||
mkdir -p $TARGET_LIB_DIR
|
||||
|
||||
. ./setenv-android-mod.sh
|
||||
|
||||
echo "CROSS COMPILE ENV : $CROSS_COMPILE"
|
||||
cd openssl-OpenSSL_1_0_2l
|
||||
|
||||
xCFLAGS="-DSHARED_EXTENSION=.so -fPIC -DOPENSSL_PIC -DDSO_DLFCN -DHAVE_DLFCN_H -I$ANDROID_NDK_ROOT/sysroot/usr/include -I$ANDROID_NDK_ROOT/sysroot/usr/include/$_ANDROID_EABI_INC -I$ANDROID_DEV/include -B$ANDROID_DEV/$xLIB -O -fomit-frame-pointer -W"
|
||||
|
||||
perl -pi -e 's/install: all install_docs install_sw/install: install_docs install_sw/g' Makefile.org
|
||||
./Configure shared no-threads no-asm no-zlib no-ssl2 no-ssl3 no-comp no-hw no-engine -D__ANDROID_API__=21 $configure_platform $xCFLAGS
|
||||
|
||||
# patch SONAME
|
||||
|
||||
perl -pi -e 's/SHLIB_EXT=\.so\.\$\(SHLIB_MAJOR\)\.\$\(SHLIB_MINOR\)/SHLIB_EXT=\.so/g' Makefile
|
||||
perl -pi -e 's/SHARED_LIBS_LINK_EXTS=\.so\.\$\(SHLIB_MAJOR\) \.so//g' Makefile
|
||||
# quote injection for proper SONAME, fuck...
|
||||
perl -pi -e 's/SHLIB_MAJOR=1/SHLIB_MAJOR=`/g' Makefile
|
||||
perl -pi -e 's/SHLIB_MINOR=0.0/SHLIB_MINOR=`/g' Makefile
|
||||
|
||||
make clean
|
||||
make depend
|
||||
make -j 4 all
|
||||
|
||||
file libcrypto.so
|
||||
file libssl.so
|
||||
cp libcrypto.a $TARGET_LIB_DIR
|
||||
cp libssl.a $TARGET_LIB_DIR
|
||||
|
||||
cp -aL $SRC_DIR/openssl-OpenSSL_1_0_2l/include/openssl/ $TARGET_DIR/include
|
||||
# ln -sf $TARGET_DIR/include $TARGET_DIR/arm/include
|
||||
|
||||
cd ..
|
||||
done
|
||||
exit 0
|
||||
|
|
@ -0,0 +1,269 @@
|
|||
#!/bin/bash
|
||||
# Cross-compile environment for Android on ARMv7 and x86
|
||||
#
|
||||
# Contents licensed under the terms of the OpenSSL license
|
||||
# http://www.openssl.org/source/license.html
|
||||
#
|
||||
# See http://wiki.openssl.org/index.php/FIPS_Library_and_Android
|
||||
# and http://wiki.openssl.org/index.php/Android
|
||||
#####################################################################
|
||||
|
||||
# Set ANDROID_NDK_ROOT to you NDK location. For example,
|
||||
# /opt/android-ndk-r8e or /opt/android-ndk-r9. This can be done in a
|
||||
# login script. If ANDROID_NDK_ROOT is not specified, the script will
|
||||
# try to pick it up with the value of _ANDROID_NDK_ROOT below. If
|
||||
# ANDROID_NDK_ROOT is set, then the value is ignored.
|
||||
# _ANDROID_NDK="android-ndk-r8e"
|
||||
_ANDROID_NDK="android-ndk-r18"
|
||||
# _ANDROID_NDK="android-ndk-r10"
|
||||
|
||||
# Set _ANDROID_EABI to the EABI you want to use. You can find the
|
||||
# list in $ANDROID_NDK_ROOT/toolchains. This value is always used.
|
||||
# _ANDROID_EABI="x86-4.6"
|
||||
# _ANDROID_EABI="arm-linux-androideabi-4.6"
|
||||
#_ANDROID_EABI="arm-linux-androideabi-4.9"
|
||||
|
||||
# Set _ANDROID_ARCH to the architecture you are building for.
|
||||
# This value is always used.
|
||||
# _ANDROID_ARCH=arch-x86
|
||||
#_ANDROID_ARCH=arch-arm
|
||||
|
||||
# Set _ANDROID_API to the API you want to use. You should set it
|
||||
# to one of: android-14, android-9, android-8, android-14, android-5
|
||||
# android-4, or android-3. You can't set it to the latest (for
|
||||
# example, API-17) because the NDK does not supply the platform. At
|
||||
# Android 5.0, there will likely be another platform added (android-22?).
|
||||
# This value is always used.
|
||||
# _ANDROID_API="android-14"
|
||||
#_ANDROID_API="android-18"
|
||||
# _ANDROID_API="android-21"
|
||||
_ANDROID_API="android-21"
|
||||
|
||||
#####################################################################
|
||||
|
||||
# If the user did not specify the NDK location, try and pick it up.
|
||||
# We expect something like ANDROID_NDK_ROOT=/opt/android-ndk-r8e
|
||||
# or ANDROID_NDK_ROOT=/usr/local/android-ndk-r8e.
|
||||
|
||||
if [ -z "$ANDROID_NDK_ROOT" ]; then
|
||||
|
||||
_ANDROID_NDK_ROOT=""
|
||||
if [ -z "$_ANDROID_NDK_ROOT" ] && [ -d "/usr/local/$_ANDROID_NDK" ]; then
|
||||
_ANDROID_NDK_ROOT="/usr/local/$_ANDROID_NDK"
|
||||
fi
|
||||
|
||||
if [ -z "$_ANDROID_NDK_ROOT" ] && [ -d "/opt/$_ANDROID_NDK" ]; then
|
||||
_ANDROID_NDK_ROOT="/opt/$_ANDROID_NDK"
|
||||
fi
|
||||
|
||||
if [ -z "$_ANDROID_NDK_ROOT" ] && [ -d "$HOME/$_ANDROID_NDK" ]; then
|
||||
_ANDROID_NDK_ROOT="$HOME/$_ANDROID_NDK"
|
||||
fi
|
||||
|
||||
if [ -z "$_ANDROID_NDK_ROOT" ] && [ -d "$PWD/$_ANDROID_NDK" ]; then
|
||||
_ANDROID_NDK_ROOT="$PWD/$_ANDROID_NDK"
|
||||
fi
|
||||
|
||||
# If a path was set, then export it
|
||||
if [ ! -z "$_ANDROID_NDK_ROOT" ] && [ -d "$_ANDROID_NDK_ROOT" ]; then
|
||||
export ANDROID_NDK_ROOT="$_ANDROID_NDK_ROOT"
|
||||
fi
|
||||
fi
|
||||
|
||||
# Error checking
|
||||
# ANDROID_NDK_ROOT should always be set by the user (even when not running this script)
|
||||
# http://groups.google.com/group/android-ndk/browse_thread/thread/a998e139aca71d77
|
||||
if [ -z "$ANDROID_NDK_ROOT" ] || [ ! -d "$ANDROID_NDK_ROOT" ]; then
|
||||
echo "Error: ANDROID_NDK_ROOT is not a valid path. Please edit this script."
|
||||
# echo "$ANDROID_NDK_ROOT"
|
||||
# exit 1
|
||||
fi
|
||||
|
||||
# Error checking
|
||||
if [ ! -d "$ANDROID_NDK_ROOT/toolchains" ]; then
|
||||
echo "Error: ANDROID_NDK_ROOT/toolchains is not a valid path. Please edit this script."
|
||||
# echo "$ANDROID_NDK_ROOT/toolchains"
|
||||
# exit 1
|
||||
fi
|
||||
|
||||
# Error checking
|
||||
if [ ! -d "$ANDROID_NDK_ROOT/toolchains/$_ANDROID_EABI" ]; then
|
||||
echo "Error: ANDROID_EABI is not a valid path. Please edit this script."
|
||||
# echo "$ANDROID_NDK_ROOT/toolchains/$_ANDROID_EABI"
|
||||
# exit 1
|
||||
fi
|
||||
|
||||
#####################################################################
|
||||
|
||||
# Based on ANDROID_NDK_ROOT, try and pick up the required toolchain. We expect something like:
|
||||
# /opt/android-ndk-r83/toolchains/arm-linux-androideabi-4.7/prebuilt/linux-x86_64/bin
|
||||
# Once we locate the toolchain, we add it to the PATH. Note: this is the 'hard way' of
|
||||
# doing things according to the NDK documentation for Ice Cream Sandwich.
|
||||
# https://android.googlesource.com/platform/ndk/+/ics-mr0/docs/STANDALONE-TOOLCHAIN.html
|
||||
|
||||
ANDROID_TOOLCHAIN=""
|
||||
for host in "linux-x86_64" "linux-x86" "darwin-x86_64" "darwin-x86"
|
||||
do
|
||||
if [ -d "$ANDROID_NDK_ROOT/toolchains/$_ANDROID_EABI/prebuilt/$host/bin" ]; then
|
||||
ANDROID_TOOLCHAIN="$ANDROID_NDK_ROOT/toolchains/$_ANDROID_EABI/prebuilt/$host/bin"
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
# Error checking
|
||||
if [ -z "$ANDROID_TOOLCHAIN" ] || [ ! -d "$ANDROID_TOOLCHAIN" ]; then
|
||||
echo "Error: ANDROID_TOOLCHAIN is not valid. Please edit this script."
|
||||
# echo "$ANDROID_TOOLCHAIN"
|
||||
# exit 1
|
||||
fi
|
||||
|
||||
case $_ANDROID_TARGET_SELECT in
|
||||
arch-arm)
|
||||
ANDROID_TOOLS="arm-linux-androideabi-gcc arm-linux-androideabi-ranlib arm-linux-androideabi-ld"
|
||||
;;
|
||||
arch-arm64-v8a)
|
||||
ANDROID_TOOLS="aarch64-linux-android-gcc aarch64-linux-android-randlib aarch64-linux-android-ld"
|
||||
;;
|
||||
arch-x86)
|
||||
ANDROID_TOOLS="i686-linux-android-gcc i686-linux-android-ranlib i686-linux-android-ld"
|
||||
;;
|
||||
arch-x86_64)
|
||||
ANDROID_TOOLS="x86_64-linux-android-gcc x86_64-linux-android-ranlib x86_64-linux-android-ld"
|
||||
;;
|
||||
arch-mips)
|
||||
ANDROID_TOOLS="mipsel-linux-android-gcc mipsel-linux-android-ranlib mipsel-linux-android-ld"
|
||||
;;
|
||||
arch-mips64)
|
||||
ANDROID_TOOLS="mips64el-linux-android-gcc mips64el-linux-android-ranlib mips64el-linux-android-ld"
|
||||
;;
|
||||
*)
|
||||
echo "ERROR ERROR ERROR"
|
||||
;;
|
||||
esac
|
||||
|
||||
for tool in $ANDROID_TOOLS
|
||||
do
|
||||
# Error checking
|
||||
if [ ! -e "$ANDROID_TOOLCHAIN/$tool" ]; then
|
||||
echo "Error: Failed to find $tool. Please edit this script."
|
||||
# echo "$ANDROID_TOOLCHAIN/$tool"
|
||||
# exit 1
|
||||
fi
|
||||
done
|
||||
|
||||
# Only modify/export PATH if ANDROID_TOOLCHAIN good
|
||||
if [ ! -z "$ANDROID_TOOLCHAIN" ]; then
|
||||
export ANDROID_TOOLCHAIN="$ANDROID_TOOLCHAIN"
|
||||
export PATH="$ANDROID_TOOLCHAIN":"$PATH"
|
||||
fi
|
||||
|
||||
#####################################################################
|
||||
|
||||
# For the Android SYSROOT. Can be used on the command line with --sysroot
|
||||
# https://android.googlesource.com/platform/ndk/+/ics-mr0/docs/STANDALONE-TOOLCHAIN.html
|
||||
export ANDROID_SYSROOT="$ANDROID_NDK_ROOT/platforms/$_ANDROID_API/$_ANDROID_ARCH"
|
||||
export SYSROOT="$ANDROID_SYSROOT"
|
||||
export NDK_SYSROOT="$ANDROID_SYSROOT"
|
||||
|
||||
# Error checking
|
||||
if [ -z "$ANDROID_SYSROOT" ] || [ ! -d "$ANDROID_SYSROOT" ]; then
|
||||
echo "Error: ANDROID_SYSROOT is not valid. Please edit this script."
|
||||
# echo "$ANDROID_SYSROOT"
|
||||
# exit 1
|
||||
fi
|
||||
|
||||
#####################################################################
|
||||
|
||||
# If the user did not specify the FIPS_SIG location, try and pick it up
|
||||
# If the user specified a bad location, then try and pick it up too.
|
||||
if [ -z "$FIPS_SIG" ] || [ ! -e "$FIPS_SIG" ]; then
|
||||
|
||||
# Try and locate it
|
||||
_FIPS_SIG=""
|
||||
if [ -d "/usr/local/ssl/$_ANDROID_API" ]; then
|
||||
_FIPS_SIG=`find "/usr/local/ssl/$_ANDROID_API" -name incore`
|
||||
fi
|
||||
|
||||
if [ ! -e "$_FIPS_SIG" ]; then
|
||||
_FIPS_SIG=`find $PWD -name incore`
|
||||
fi
|
||||
|
||||
# If a path was set, then export it
|
||||
if [ ! -z "$_FIPS_SIG" ] && [ -e "$_FIPS_SIG" ]; then
|
||||
export FIPS_SIG="$_FIPS_SIG"
|
||||
fi
|
||||
fi
|
||||
|
||||
# Error checking. Its OK to ignore this if you are *not* building for FIPS
|
||||
if [ -z "$FIPS_SIG" ] || [ ! -e "$FIPS_SIG" ]; then
|
||||
echo "Error: FIPS_SIG does not specify incore module. Please edit this script."
|
||||
# echo "$FIPS_SIG"
|
||||
# exit 1
|
||||
fi
|
||||
|
||||
#####################################################################
|
||||
|
||||
# Most of these should be OK (MACHINE, SYSTEM, ARCH). RELEASE is ignored.
|
||||
export MACHINE=armv7
|
||||
export RELEASE=2.6.37
|
||||
export SYSTEM=android
|
||||
export ARCH=arm
|
||||
export CROSS_COMPILE="arm-linux-androideabi-"
|
||||
|
||||
if [ "$_ANDROID_TARGET_SELECT" == "arch-arm64-v8a" ]; then
|
||||
export MACHINE=armv7
|
||||
export ARCH=arm64
|
||||
export CROSS_COMPILE="aarch64-linux-android-"
|
||||
fi
|
||||
|
||||
if [ "$_ANDROID_TARGET_SELECT" == "arch-x86" ]; then
|
||||
export MACHINE=i686
|
||||
export ARCH=x86
|
||||
export CROSS_COMPILE="i686-linux-android-"
|
||||
fi
|
||||
|
||||
if [ "$_ANDROID_TARGET_SELECT" == "arch-x86_64" ]; then
|
||||
export MACHINE=i686
|
||||
export ARCH=x86_64
|
||||
export CROSS_COMPILE="x86_64-linux-android-"
|
||||
fi
|
||||
|
||||
if [ "$_ANDROID_TARGET_SELECT" == "arch-mips" ]; then
|
||||
export MACHINE=i686
|
||||
export ARCH=mips
|
||||
export CROSS_COMPILE="mipsel-linux-android-"
|
||||
fi
|
||||
|
||||
if [ "$_ANDROID_TARGET_SELECT" == "arch-mips64" ]; then
|
||||
export MACHINE=i686
|
||||
export ARCH=mips64
|
||||
export CROSS_COMPILE="mips64el-linux-android-"
|
||||
fi
|
||||
|
||||
echo "CHECK_CROSS_COMPILER = $CROSS_COMPILE"
|
||||
|
||||
# For the Android toolchain
|
||||
# https://android.googlesource.com/platform/ndk/+/ics-mr0/docs/STANDALONE-TOOLCHAIN.html
|
||||
export ANDROID_SYSROOT="$ANDROID_NDK_ROOT/platforms/$_ANDROID_API/$_ANDROID_ARCH"
|
||||
export SYSROOT="$ANDROID_SYSROOT"
|
||||
export NDK_SYSROOT="$ANDROID_SYSROOT"
|
||||
export ANDROID_NDK_SYSROOT="$ANDROID_SYSROOT"
|
||||
export ANDROID_API="$_ANDROID_API"
|
||||
|
||||
# CROSS_COMPILE and ANDROID_DEV are DFW (Don't Fiddle With). Its used by OpenSSL build system.
|
||||
# export CROSS_COMPILE="arm-linux-androideabi-"
|
||||
export ANDROID_DEV="$ANDROID_NDK_ROOT/platforms/$_ANDROID_API/$_ANDROID_ARCH/usr"
|
||||
export HOSTCC=gcc
|
||||
|
||||
VERBOSE=1
|
||||
if [ ! -z "$VERBOSE" ] && [ "$VERBOSE" != "0" ]; then
|
||||
echo "ANDROID_NDK_ROOT: $ANDROID_NDK_ROOT"
|
||||
echo "ANDROID_ARCH: $_ANDROID_ARCH"
|
||||
echo "ANDROID_EABI: $_ANDROID_EABI"
|
||||
echo "ANDROID_API: $ANDROID_API"
|
||||
echo "ANDROID_SYSROOT: $ANDROID_SYSROOT"
|
||||
echo "ANDROID_TOOLCHAIN: $ANDROID_TOOLCHAIN"
|
||||
echo "FIPS_SIG: $FIPS_SIG"
|
||||
echo "CROSS_COMPILE: $CROSS_COMPILE"
|
||||
echo "ANDROID_DEV: $ANDROID_DEV"
|
||||
fi
|
|
@ -0,0 +1,50 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
set -e
|
||||
|
||||
source script/env.sh
|
||||
|
||||
TARGET_DIR=$EXTERNAL_LIBS_ROOT/boost
|
||||
|
||||
version=1_58_0
|
||||
dot_version=1.58.0
|
||||
|
||||
cd $EXTERNAL_LIBS_BUILD_ROOT/boost_${version}
|
||||
|
||||
if [ ! -f "b2" ]; then
|
||||
./bootstrap.sh
|
||||
fi
|
||||
|
||||
args="--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 \
|
||||
--includedir=$TARGET_DIR/include \
|
||||
toolset=clang threading=multi threadapi=pthread target-os=android"
|
||||
|
||||
if [ ! -d "$TARGET_DIR/arm" ]; then
|
||||
PATH=$NDK_TOOL_DIR/arm/arm-linux-androideabi/bin:$NDK_TOOL_DIR/arm/bin:$PATH \
|
||||
./b2 --build-dir=android-arm --prefix=$TARGET_DIR/arm $args \
|
||||
install
|
||||
ln -sf ../include $TARGET_DIR/arm
|
||||
fi
|
||||
|
||||
if [ ! -d "$TARGET_DIR/arm64" ]; then
|
||||
PATH=$NDK_TOOL_DIR/arm64/aarch64-linux-androideabi/bin:$NDK_TOOL_DIR/arm64/bin:$PATH \
|
||||
./b2 --build-dir=android-arm64 --prefix=$TARGET_DIR/arm64 $args \
|
||||
install
|
||||
ln -sf ../include $TARGET_DIR/arm64
|
||||
fi
|
||||
|
||||
if [ ! -d "$TARGET_DIR/x86" ]; then
|
||||
PATH=$NDK_TOOL_DIR/x86/i686-linux-android/bin:$NDK_TOOL_DIR/x86/bin:$PATH \
|
||||
./b2 --build-dir=android-x86 --prefix=$TARGET_DIR/x86 $args \
|
||||
install
|
||||
ln -sf ../include $TARGET_DIR/x86
|
||||
fi
|
||||
|
||||
if [ ! -d "$TARGET_DIR/x86_64" ]; then
|
||||
PATH=$NDK_TOOL_DIR/x86_64/x86_64-linux-android/bin:$NDK_TOOL_DIR/x86_64/bin:$PATH \
|
||||
./b2 --build-dir=android-x86_64 --prefix=$TARGET_DIR/x86_64 $args \
|
||||
install
|
||||
ln -sf ../include $TARGET_DIR/x86_64
|
||||
fi
|
|
@ -0,0 +1,18 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
set -e
|
||||
|
||||
source script/env.sh
|
||||
|
||||
cd $EXTERNAL_LIBS_BUILD_ROOT
|
||||
|
||||
version=1_58_0
|
||||
dot_version=1.58.0
|
||||
|
||||
if [ ! -f "boost_${version}.tar.gz" ]; then
|
||||
wget https://downloads.sourceforge.net/project/boost/boost/${dot_version}/boost_${version}.tar.gz
|
||||
fi
|
||||
|
||||
if [ ! -d "boost_${version}" ]; then
|
||||
tar xfz boost_${version}.tar.gz
|
||||
fi
|
|
@ -0,0 +1,8 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
set -e
|
||||
|
||||
source script/env.sh
|
||||
|
||||
rm -rf $EXTERNAL_LIBS_BUILD
|
||||
mkdir -p $EXTERNAL_LIBS_BUILD
|
|
@ -0,0 +1,20 @@
|
|||
DEFAULT_ANDROID_NDK_ROOT=/opt/android/ndk-r15c
|
||||
ANDROID_NDK_ROOT="${ANDROID_NDK_ROOT:-${DEFAULT_ANDROID_NDK_ROOT}}"
|
||||
|
||||
export ANDROID_NDK_ROOT=`realpath $ANDROID_NDK_ROOT`
|
||||
|
||||
DEFAULT_EXTERNAL_LIBS_BUILD=`pwd`/build/
|
||||
EXTERNAL_LIBS_BUILD="${EXTERNAL_LIBS_BUILD:-${DEFAULT_EXTERNAL_LIBS_BUILD}}"
|
||||
export EXTERNAL_LIBS_BUILD=${EXTERNAL_LIBS_BUILD%/}
|
||||
|
||||
DEFAULT_EXTERNAL_LIBS_BUILD_ROOT=${EXTERNAL_LIBS_BUILD}/src/
|
||||
EXTERNAL_LIBS_BUILD_ROOT="${EXTERNAL_LIBS_BUILD_ROOT:-${DEFAULT_EXTERNAL_LIBS_BUILD_ROOT}}"
|
||||
export EXTERNAL_LIBS_BUILD_ROOT=${EXTERNAL_LIBS_BUILD_ROOT%/}
|
||||
|
||||
DEFAULT_EXTERNAL_LIBS_ROOT=${EXTERNAL_LIBS_BUILD}/build/
|
||||
EXTERNAL_LIBS_ROOT="${EXTERNAL_LIBS_ROOT:-${DEFAULT_EXTERNAL_LIBS_ROOT}}"
|
||||
export EXTERNAL_LIBS_ROOT=${EXTERNAL_LIBS_ROOT%/}
|
||||
|
||||
DEFAULT_NDK_TOOL_DIR=${EXTERNAL_LIBS_BUILD}/tool/
|
||||
NDK_TOOL_DIR="${NDK_TOOL_DIR:-${DEFAULT_NDK_TOOL_DIR}}"
|
||||
export NDK_TOOL_DIR=${NDK_TOOL_DIR%/}
|
|
@ -4,10 +4,8 @@
|
|||
|
||||
set -e
|
||||
|
||||
orig_path=$PATH
|
||||
|
||||
packages=(boost openssl monero)
|
||||
archs=(arm64 x86_64)
|
||||
packages=(boost openssl monero libsodium)
|
||||
archs=(arm arm64 x86 x86_64)
|
||||
|
||||
for arch in ${archs[@]}; do
|
||||
case ${arch} in
|
||||
|
@ -29,14 +27,15 @@ for arch in ${archs[@]}; do
|
|||
esac
|
||||
|
||||
for package in ${packages[@]}; do
|
||||
INPUT_DIR=`pwd`/build/build/$package
|
||||
OUTPUT_DIR=`pwd`/$package/lib/$xarch
|
||||
mkdir -p $OUTPUT_DIR
|
||||
rm -f $OUTPUT_DIR/*.a
|
||||
cp -a /media/m2049r/DATA/android/external-libs/build/$package/$arch/lib/*.a $OUTPUT_DIR
|
||||
cp -a $INPUT_DIR/$arch/lib/*.a $OUTPUT_DIR
|
||||
|
||||
if [ $package = "monero" -a -d "/opt/android/build/$package/include" ]; then
|
||||
if [ $package = "monero" ]; then
|
||||
rm -rf $OUTPUT_DIR/../../include
|
||||
cp -a /media/m2049r/DATA/android/external-libs/build/$package/include $OUTPUT_DIR/../..
|
||||
cp -a $INPUT_DIR/include $OUTPUT_DIR/../..
|
||||
fi
|
||||
|
||||
done
|
|
@ -0,0 +1,55 @@
|
|||
#!/bin/bash
|
||||
|
||||
set -e
|
||||
|
||||
source script/env.sh
|
||||
|
||||
cd $EXTERNAL_LIBS_BUILD_ROOT/libsodium
|
||||
|
||||
if [ ! -f "configure" ]; then
|
||||
./autogen.sh
|
||||
fi
|
||||
|
||||
archs=(arm arm64 x86 x86_64)
|
||||
for arch in ${archs[@]}; do
|
||||
case ${arch} in
|
||||
"arm")
|
||||
target_host=arm-linux-androideabi
|
||||
;;
|
||||
"arm64")
|
||||
target_host=aarch64-linux-android
|
||||
;;
|
||||
"x86")
|
||||
target_host=i686-linux-android
|
||||
;;
|
||||
"x86_64")
|
||||
target_host=x86_64-linux-android
|
||||
;;
|
||||
*)
|
||||
exit 16
|
||||
;;
|
||||
esac
|
||||
|
||||
TARGET_DIR=$EXTERNAL_LIBS_ROOT/libsodium/$arch
|
||||
|
||||
if [ -f "$TARGET_DIR/lib/libsodium.la" ]; then
|
||||
continue
|
||||
fi
|
||||
|
||||
mkdir -p $TARGET_DIR
|
||||
echo "building for ${arch}"
|
||||
|
||||
PATH=$NDK_TOOL_DIR/$arch/$target_host/bin:$NDK_TOOL_DIR/$arch/bin:$PATH \
|
||||
CC=clang CXX=clang++; \
|
||||
./configure \
|
||||
--prefix=${TARGET_DIR} \
|
||||
--host=${target_host} \
|
||||
--enable-static \
|
||||
--disable-shared \
|
||||
&& make -j 4 \
|
||||
&& make install \
|
||||
&& make clean
|
||||
|
||||
done
|
||||
|
||||
exit 0
|
|
@ -0,0 +1,16 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
set -e
|
||||
|
||||
source script/env.sh
|
||||
|
||||
cd $EXTERNAL_LIBS_BUILD_ROOT
|
||||
|
||||
version=1.0.16
|
||||
|
||||
if [ ! -d "libsodium" ]; then
|
||||
git clone https://github.com/jedisct1/libsodium.git -b ${version}
|
||||
else
|
||||
cd libsodium
|
||||
git checkout ${version}
|
||||
fi
|
|
@ -0,0 +1,100 @@
|
|||
#!/bin/bash
|
||||
|
||||
set -e
|
||||
|
||||
source script/env.sh
|
||||
|
||||
cd $EXTERNAL_LIBS_BUILD_ROOT/monero
|
||||
|
||||
orig_path=$PATH
|
||||
base_dir=`pwd`
|
||||
|
||||
build_root=$EXTERNAL_LIBS_BUILD_ROOT
|
||||
lib_root=$EXTERNAL_LIBS_ROOT
|
||||
|
||||
build_type=release # or debug
|
||||
android_api=21
|
||||
archs=(arm arm64 x86 x86_64)
|
||||
|
||||
for arch in ${archs[@]}; do
|
||||
ldflags=""
|
||||
extra_cmake_flags=""
|
||||
case ${arch} in
|
||||
"arm")
|
||||
target_host=arm-linux-androideabi
|
||||
xarch=armv7-a
|
||||
sixtyfour=OFF
|
||||
extra_cmake_flags="-D NO_AES=true"
|
||||
;;
|
||||
"arm64")
|
||||
target_host=aarch64-linux-android
|
||||
xarch="armv8-a"
|
||||
sixtyfour=ON
|
||||
;;
|
||||
"x86")
|
||||
target_host=i686-linux-android
|
||||
xarch="i686"
|
||||
sixtyfour=OFF
|
||||
;;
|
||||
"x86_64")
|
||||
target_host=x86_64-linux-android
|
||||
xarch="x86-64"
|
||||
sixtyfour=ON
|
||||
;;
|
||||
*)
|
||||
exit 16
|
||||
;;
|
||||
esac
|
||||
|
||||
TARGET_LIB_DIR=$lib_root/monero/$arch/lib
|
||||
if [ -f "$TARGET_LIB_DIR/libwallet_api.a" ]; then
|
||||
continue
|
||||
fi
|
||||
|
||||
OUTPUT_DIR=$base_dir/build/$build_type.$arch
|
||||
rm -rf $OUTPUT_DIR
|
||||
mkdir -p $OUTPUT_DIR
|
||||
cd $OUTPUT_DIR
|
||||
|
||||
PATH=$NDK_TOOL_DIR/$arch/$target_host/bin:$NDK_TOOL_DIR/$arch/bin:$PATH \
|
||||
CC=clang CXX=clang++ \
|
||||
CMAKE_LIBRARY_PATH=$lib_root/libsodium/$arch/lib \
|
||||
cmake \
|
||||
-D BUILD_GUI_DEPS=1 \
|
||||
-D BUILD_TESTS=OFF \
|
||||
-D ARCH="$xarch" \
|
||||
-D STATIC=ON \
|
||||
-D BUILD_64=$sixtyfour \
|
||||
-D CMAKE_BUILD_TYPE=$build_type \
|
||||
-D CMAKE_CXX_FLAGS="-D__ANDROID_API__=$android_api" \
|
||||
-D ANDROID=true \
|
||||
-D BUILD_TAG="android" \
|
||||
-D BOOST_ROOT=$lib_root/boost/$arch \
|
||||
-D BOOST_LIBRARYDIR=$lib_root/boost/$arch/lib \
|
||||
-D OPENSSL_ROOT_DIR=$lib_root/openssl/$arch \
|
||||
-D OPENSSL_INCLUDE_DIR=$lib_root/openssl/$arch \
|
||||
-D OPENSSL_CRYPTO_LIBRARY=$lib_root/openssl/$arch/lib/libcrypto.so \
|
||||
-D OPENSSL_SSL_LIBRARY=$lib_root/openssl/$arch/lib/libssl.so \
|
||||
-D CMAKE_POSITION_INDEPENDENT_CODE:BOOL=true \
|
||||
-D MONERUJO_HIDAPI=ON \
|
||||
-D LIBSODIUM_INCLUDE_DIR=$lib_root/libsodium/$arch/include \
|
||||
$extra_cmake_flags \
|
||||
../..
|
||||
|
||||
make -j 4 wallet_api
|
||||
|
||||
find . -path ./lib -prune -o -name '*.a' -exec cp '{}' lib \;
|
||||
|
||||
rm -rf $TARGET_LIB_DIR
|
||||
mkdir -p $TARGET_LIB_DIR
|
||||
cp $OUTPUT_DIR/lib/*.a $TARGET_LIB_DIR
|
||||
|
||||
TARGET_INC_DIR=$lib_root/monero/include
|
||||
rm -rf $TARGET_INC_DIR
|
||||
mkdir -p $TARGET_INC_DIR
|
||||
cp -a src/wallet/api/wallet2_api.h $TARGET_INC_DIR
|
||||
|
||||
cd $base_dir
|
||||
done
|
||||
|
||||
exit 0
|
|
@ -0,0 +1,20 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
set -e
|
||||
|
||||
source script/env.sh
|
||||
|
||||
cd $EXTERNAL_LIBS_BUILD_ROOT
|
||||
|
||||
url="https://github.com/m2049r/monero"
|
||||
version="release-v0.13-prep"
|
||||
|
||||
if [ ! -d "monero" ]; then
|
||||
git clone ${url} -b ${version}
|
||||
cd monero
|
||||
git submodule update --recursive --init
|
||||
else
|
||||
cd monero
|
||||
git submodule update --recursive
|
||||
git checkout ${version}
|
||||
fi
|
|
@ -0,0 +1,26 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
set -e
|
||||
|
||||
source script/build-external-libs/env.sh
|
||||
|
||||
cp script/build-external-libs/wownero/build-all-arch.sh $EXTERNAL_LIBS_BUILD_ROOT/wownero
|
||||
|
||||
cd $EXTERNAL_LIBS_BUILD_ROOT
|
||||
cd wownero
|
||||
|
||||
sed -i 's/-Werror/-Wall/g' CMakeLists.txt
|
||||
sed -i 's/program_options locale/program_options/g' CMakeLists.txt
|
||||
sed -i 's/find_path(ZMQ_INCLUDE_PATH zmq.hpp)//g' CMakeLists.txt
|
||||
sed -i 's/find_library(ZMQ_LIB zmq)//g' CMakeLists.txt
|
||||
sed -i 's/message(FATAL_ERROR "Could not find required header zmq.hpp")//g' CMakeLists.txt
|
||||
sed -i 's/message(FATAL_ERROR "Could not find required libzmq")//g' CMakeLists.txt
|
||||
sed -i 's/bool create_address_file = false/bool create_address_file = true/g' src/wallet/wallet2.h
|
||||
|
||||
sodium_pattern="find_library(SODIUM_LIBRARY sodium)"
|
||||
include_sodium='find_library(SODIUM_LIBRARY sodium)\
|
||||
\
|
||||
message(STATUS "Using SODIUM include dir at ${LIBSODIUM_INCLUDE_DIR}")\
|
||||
include_directories(${LIBSODIUM_INCLUDE_DIR})'
|
||||
|
||||
sed -i "s/${sodium_pattern}/${include_sodium}/g" CMakeLists.txt
|
|
@ -0,0 +1,9 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
set -e
|
||||
|
||||
source script/env.sh
|
||||
|
||||
cd $EXTERNAL_LIBS_BUILD_ROOT/android-openssl
|
||||
|
||||
./build-all-arch.sh
|
|
@ -0,0 +1,16 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
set -e
|
||||
|
||||
source script/env.sh
|
||||
|
||||
cd $EXTERNAL_LIBS_BUILD_ROOT
|
||||
|
||||
if [ ! -f "OpenSSL_1_0_2l.tar.gz" ]; then
|
||||
wget https://github.com/openssl/openssl/archive/OpenSSL_1_0_2l.tar.gz
|
||||
fi
|
||||
|
||||
if [ ! -d "android-openssl" ]; then
|
||||
mkdir android-openssl && cd android-openssl
|
||||
tar xfz ../OpenSSL_1_0_2l.tar.gz
|
||||
fi
|
|
@ -0,0 +1,20 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
set -e
|
||||
|
||||
source script/env.sh
|
||||
|
||||
SRC_DIR=$EXTERNAL_LIBS_ROOT/android-openssl
|
||||
TARGET_DIR=$EXTERNAL_LIBS_ROOT/openssl
|
||||
|
||||
ln -sf $TARGET_DIR/include $NDK_TOOL_DIR/arm/sysroot/usr/include/openssl
|
||||
ln -sf $TARGET_DIR/arm/lib/*.so $NDK_TOOL_DIR/arm/sysroot/usr/lib
|
||||
|
||||
ln -sf $TARGET_DIR/include $NDK_TOOL_DIR/arm64/sysroot/usr/include/openssl
|
||||
ln -sf $TARGET_DIR/arm64/lib/*.so $NDK_TOOL_DIR/arm64/sysroot/usr/lib
|
||||
|
||||
ln -sf $TARGET_DIR/include $NDK_TOOL_DIR/x86/sysroot/usr/include/openssl
|
||||
ln -sf $TARGET_DIR/x86/lib/*.so $NDK_TOOL_DIR/x86/sysroot/usr/lib
|
||||
|
||||
ln -sf $TARGET_DIR/include $NDK_TOOL_DIR/x86_64/sysroot/usr/include/openssl
|
||||
ln -sf $TARGET_DIR/x86_64/lib/*.so $NDK_TOOL_DIR/x86_64/sysroot/usr/lib64
|
|
@ -0,0 +1,7 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
set -e
|
||||
|
||||
source script/env.sh
|
||||
|
||||
cp -a script/android-openssl $EXTERNAL_LIBS_BUILD_ROOT
|
|
@ -0,0 +1,20 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
set -e
|
||||
|
||||
source script/env.sh
|
||||
|
||||
build_root=$EXTERNAL_LIBS_BUILD_ROOT
|
||||
PATH=$ANDROID_NDK_ROOT/build/tools/:$PATH
|
||||
|
||||
args="--api 21 --stl=libc++"
|
||||
archs=(arm arm64 x86 x86_64)
|
||||
|
||||
for arch in ${archs[@]}; do
|
||||
if [ ! -d "$NDK_TOOL_DIR/$arch" ]; then
|
||||
echo "installing $ANDROID_NDK_ROOT $arch $args"
|
||||
make_standalone_toolchain.py $args --arch $arch --install-dir $NDK_TOOL_DIR/$arch
|
||||
sed -i.orig "s|using ::fgetpos;|//using ::fgetpos;|" $NDK_TOOL_DIR/$arch/include/c++/4.9.x/cstdio
|
||||
sed -i.orig "s|using ::fsetpos;|//using ::fsetpos;|" $NDK_TOOL_DIR/$arch/include/c++/4.9.x/cstdio
|
||||
fi
|
||||
done
|
|
@ -0,0 +1,13 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
set -e
|
||||
|
||||
version=v1.5.10.5
|
||||
|
||||
curl -O -L https://github.com/fuwa0529/wownerujo/releases/download/${version}/external-libs.tgz
|
||||
|
||||
rm -rf external-libs
|
||||
|
||||
echo "unpacking external-libs"
|
||||
tar zxfv external-libs.tgz
|
||||
rm external-libs.tgz
|
Loading…
Reference in New Issue