mirror of
https://github.com/cake-tech/cake_wallet.git
synced 2024-12-22 11:39:22 +00:00
Merge remote-tracking branch 'origin/main' into CAKE-360-yat
This commit is contained in:
commit
c9482caa19
25 changed files with 399 additions and 131 deletions
|
@ -91,6 +91,10 @@ add_library(cryptonote_basic STATIC IMPORTED)
|
||||||
set_target_properties(cryptonote_basic PROPERTIES IMPORTED_LOCATION
|
set_target_properties(cryptonote_basic PROPERTIES IMPORTED_LOCATION
|
||||||
${EXTERNAL_LIBS_DIR}/${ANDROID_ABI}/lib/monero/libcryptonote_basic.a)
|
${EXTERNAL_LIBS_DIR}/${ANDROID_ABI}/lib/monero/libcryptonote_basic.a)
|
||||||
|
|
||||||
|
add_library(cryptonote_format_utils_basic STATIC IMPORTED)
|
||||||
|
set_target_properties(cryptonote_format_utils_basic PROPERTIES IMPORTED_LOCATION
|
||||||
|
${EXTERNAL_LIBS_DIR}/${ANDROID_ABI}/lib/monero/libcryptonote_format_utils_basic.a)
|
||||||
|
|
||||||
add_library(mnemonics STATIC IMPORTED)
|
add_library(mnemonics STATIC IMPORTED)
|
||||||
set_target_properties(mnemonics PROPERTIES IMPORTED_LOCATION
|
set_target_properties(mnemonics PROPERTIES IMPORTED_LOCATION
|
||||||
${EXTERNAL_LIBS_DIR}/${ANDROID_ABI}/lib/monero/libmnemonics.a)
|
${EXTERNAL_LIBS_DIR}/${ANDROID_ABI}/lib/monero/libmnemonics.a)
|
||||||
|
@ -189,6 +193,7 @@ target_link_libraries( cw_monero
|
||||||
wallet
|
wallet
|
||||||
cryptonote_core
|
cryptonote_core
|
||||||
cryptonote_basic
|
cryptonote_basic
|
||||||
|
cryptonote_format_utils_basic
|
||||||
mnemonics
|
mnemonics
|
||||||
ringct
|
ringct
|
||||||
ringct_basic
|
ringct_basic
|
||||||
|
|
|
@ -8,13 +8,14 @@
|
||||||
#include "thread"
|
#include "thread"
|
||||||
#include "CwWalletListener.h"
|
#include "CwWalletListener.h"
|
||||||
#if __APPLE__
|
#if __APPLE__
|
||||||
#include "../External/android/monero/include/wallet2_api.h"
|
// Fix for randomx on ios
|
||||||
|
void __clear_cache(void* start, void* end) { }
|
||||||
|
#include "../External/ios/include/wallet2_api.h"
|
||||||
#else
|
#else
|
||||||
#include "../External/android/x86/include/wallet2_api.h"
|
#include "../External/android/x86/include/wallet2_api.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
using namespace std::chrono_literals;
|
using namespace std::chrono_literals;
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C"
|
extern "C"
|
||||||
{
|
{
|
||||||
|
|
|
@ -14,41 +14,41 @@ Pod::Spec.new do |s|
|
||||||
s.source_files = 'Classes/**/*'
|
s.source_files = 'Classes/**/*'
|
||||||
s.public_header_files = 'Classes/**/*.h, Classes/*.h, External/ios/libs/monero/include/src/**/*.h, External/ios/libs/monero/include/contrib/**/*.h, External/ios/libs/monero/include/External/ios/**/*.h'
|
s.public_header_files = 'Classes/**/*.h, Classes/*.h, External/ios/libs/monero/include/src/**/*.h, External/ios/libs/monero/include/contrib/**/*.h, External/ios/libs/monero/include/External/ios/**/*.h'
|
||||||
s.dependency 'Flutter'
|
s.dependency 'Flutter'
|
||||||
s.platform = :ios, '9.0'
|
s.platform = :ios, '10.0'
|
||||||
s.swift_version = '4.0'
|
s.swift_version = '4.0'
|
||||||
s.pod_target_xcconfig = { 'DEFINES_MODULE' => 'YES', 'VALID_ARCHS' => 'arm64', 'ENABLE_BITCODE' => 'NO' }
|
s.pod_target_xcconfig = { 'DEFINES_MODULE' => 'YES', 'VALID_ARCHS' => 'arm64', 'ENABLE_BITCODE' => 'NO' }
|
||||||
s.xcconfig = { 'HEADER_SEARCH_PATHS' => "${PODS_ROOT}/#{s.name}/Classes/*.h" }
|
s.xcconfig = { 'HEADER_SEARCH_PATHS' => "${PODS_ROOT}/#{s.name}/Classes/*.h" }
|
||||||
|
|
||||||
s.subspec 'OpenSSL' do |openssl|
|
s.subspec 'OpenSSL' do |openssl|
|
||||||
openssl.preserve_paths = 'External/ios/libs/OpenSSL/include/openssl/*.h', 'External/ios/libs/OpenSSL/include/LICENSE'
|
openssl.preserve_paths = 'External/ios/include/*.h'
|
||||||
openssl.vendored_libraries = 'External/ios/libs/OpenSSL/lib/libcrypto.a', 'External/ios/libs/OpenSSL/lib/libssl.a'
|
openssl.vendored_libraries = 'External/ios/lib/libcrypto.a', 'External/ios/lib/libssl.a'
|
||||||
openssl.libraries = 'ssl', 'crypto'
|
openssl.libraries = 'ssl', 'crypto'
|
||||||
openssl.xcconfig = { 'HEADER_SEARCH_PATHS' => "${PODS_ROOT}/#{s.name}/External/ios/libs/OpenSSL/include/**" }
|
openssl.xcconfig = { 'HEADER_SEARCH_PATHS' => "${PODS_ROOT}/#{s.name}/External/ios/include/**" }
|
||||||
end
|
end
|
||||||
|
|
||||||
s.subspec 'Monero' do |monero|
|
s.subspec 'Monero' do |monero|
|
||||||
monero.preserve_paths = 'External/ios/libs/monero/include/src/**/*.h', 'External/ios/libs/monero/include/External/ios/**/*.h', 'External/ios/libs/monero/include/contrib/**/*.h'
|
monero.preserve_paths = 'External/ios/include/**/*.h'
|
||||||
monero.vendored_libraries = 'External/ios/libs/monero/libs/lib-ios/*.a'
|
monero.vendored_libraries = 'External/ios/lib/libeasylogging.a', 'External/ios/lib/libepee.a', 'External/ios/lib/liblmdb.a', 'External/ios/lib/librandomx.a', 'External/ios/lib/libunbound.a', 'External/ios/lib/libwallet_merged.a', 'libcryptonote_basic.a', 'libcryptonote_format_utils_basic.a'
|
||||||
monero.libraries = 'easylogging', 'epee', 'unbound', 'wallet_merged', 'lmdb', 'randomx'
|
monero.libraries = 'easylogging', 'epee', 'unbound', 'wallet_merged', 'lmdb', 'randomx', 'cryptonote_basic', 'cryptonote_format_utils_basic'
|
||||||
monero.xcconfig = { 'HEADER_SEARCH_PATHS' => "${PODS_ROOT}/#{s.name}/External/ios/libs/monero/include/src/**" }
|
monero.xcconfig = { 'HEADER_SEARCH_PATHS' => "${PODS_ROOT}/#{s.name}/External/ios/include" }
|
||||||
end
|
end
|
||||||
|
|
||||||
s.subspec 'Boost' do |boost|
|
s.subspec 'Boost' do |boost|
|
||||||
boost.preserve_paths = 'External/ios/libs/boost/include/**/*.h', 'External/ios/libs/boost/include/**/*.h'
|
boost.preserve_paths = 'External/ios/include/**/*.h', 'External/ios/include/**/*.h'
|
||||||
boost.vendored_libraries = 'External/ios/libs/boost/build/libs/universal/*.a'
|
boost.vendored_libraries = 'External/ios/lib/libboost_chrono.a', 'External/ios/lib/libboost_date_time.a', 'External/ios/lib/libboost_filesystem.a', 'External/ios/lib/libboost_graph.a', 'External/ios/lib/libboost_locale.a', 'External/ios/lib/libboost_program_options.a', 'External/ios/lib/libboost_random.a', 'External/ios/lib/libboost_regex.a', 'External/ios/lib/libboost_serialization.a', 'External/ios/lib/libboost_system.a', 'External/ios/lib/libboost_thread.a', 'External/ios/lib/libboost_wserialization.a'
|
||||||
boost.libraries = 'boost', 'boost_wserialization', 'boost_thread', 'boost_system', 'boost_signals', 'boost_serialization', 'boost_regex', 'boost_random', 'boost_program_options', 'boost_locale', 'boost_graph', 'boost_filesystem', 'boost_date_time', 'boost_chrono'
|
boost.libraries = 'boost_wserialization', 'boost_thread', 'boost_system', 'boost_serialization', 'boost_regex', 'boost_random', 'boost_program_options', 'boost_locale', 'boost_graph', 'boost_filesystem', 'boost_date_time', 'boost_chrono'
|
||||||
boost.xcconfig = { 'HEADER_SEARCH_PATHS' => "${PODS_ROOT}/#{s.name}/External/ios/libs/boost/include/**" }
|
boost.xcconfig = { 'HEADER_SEARCH_PATHS' => "${PODS_ROOT}/#{s.name}/External/ios/include/**" }
|
||||||
end
|
end
|
||||||
|
|
||||||
s.subspec 'Sodium' do |sodium|
|
s.subspec 'Sodium' do |sodium|
|
||||||
sodium.preserve_paths = 'External/ios/libs/sodium/include/**/*.h'
|
sodium.preserve_paths = 'External/ios/include/**/*.h'
|
||||||
sodium.vendored_libraries = 'External/ios/libs/sodium/lib/libsodium.a'
|
sodium.vendored_libraries = 'External/ios/lib/libsodium.a'
|
||||||
sodium.libraries = 'sodium'
|
sodium.libraries = 'sodium'
|
||||||
sodium.xcconfig = { 'HEADER_SEARCH_PATHS' => "${PODS_ROOT}/#{s.name}/External/ios/libs/sodium/include/**" }
|
sodium.xcconfig = { 'HEADER_SEARCH_PATHS' => "${PODS_ROOT}/#{s.name}/External/ios/include/**" }
|
||||||
end
|
end
|
||||||
|
|
||||||
s.subspec 'lmdb' do |lmdb|
|
s.subspec 'lmdb' do |lmdb|
|
||||||
lmdb.vendored_libraries = 'External/ios/libs/lmdb/liblmdb.a'
|
lmdb.vendored_libraries = 'External/ios/lib/liblmdb.a'
|
||||||
lmdb.libraries = 'lmdb'
|
lmdb.libraries = 'lmdb'
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -165,7 +165,7 @@ SPEC CHECKSUMS:
|
||||||
BigInt: f668a80089607f521586bbe29513d708491ef2f7
|
BigInt: f668a80089607f521586bbe29513d708491ef2f7
|
||||||
connectivity: c4130b2985d4ef6fd26f9702e886bd5260681467
|
connectivity: c4130b2985d4ef6fd26f9702e886bd5260681467
|
||||||
CryptoSwift: 093499be1a94b0cae36e6c26b70870668cb56060
|
CryptoSwift: 093499be1a94b0cae36e6c26b70870668cb56060
|
||||||
cw_monero: 78f369253cc913efc23db9cf6be81a11eaf40fe1
|
cw_monero: c79d5530b828b8013c1db421f1be8bab687f7b7e
|
||||||
devicelocale: b22617f40038496deffba44747101255cee005b0
|
devicelocale: b22617f40038496deffba44747101255cee005b0
|
||||||
DKImagePickerController: b5eb7f7a388e4643264105d648d01f727110fc3d
|
DKImagePickerController: b5eb7f7a388e4643264105d648d01f727110fc3d
|
||||||
DKPhotoGallery: fdfad5125a9fdda9cc57df834d49df790dbb4179
|
DKPhotoGallery: fdfad5125a9fdda9cc57df834d49df790dbb4179
|
||||||
|
|
|
@ -362,7 +362,7 @@
|
||||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||||
CLANG_ENABLE_MODULES = YES;
|
CLANG_ENABLE_MODULES = YES;
|
||||||
CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
|
CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
|
||||||
CURRENT_PROJECT_VERSION = 56;
|
CURRENT_PROJECT_VERSION = 59;
|
||||||
DEVELOPMENT_TEAM = 32J6BB6VUS;
|
DEVELOPMENT_TEAM = 32J6BB6VUS;
|
||||||
ENABLE_BITCODE = NO;
|
ENABLE_BITCODE = NO;
|
||||||
EXCLUDED_SOURCE_FILE_NAMES = "";
|
EXCLUDED_SOURCE_FILE_NAMES = "";
|
||||||
|
@ -380,7 +380,7 @@
|
||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
"$(PROJECT_DIR)/Flutter",
|
"$(PROJECT_DIR)/Flutter",
|
||||||
);
|
);
|
||||||
MARKETING_VERSION = 4.2.5;
|
MARKETING_VERSION = 4.2.7;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = com.fotolockr.cakewallet;
|
PRODUCT_BUNDLE_IDENTIFIER = com.fotolockr.cakewallet;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
|
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
|
||||||
|
@ -506,7 +506,7 @@
|
||||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||||
CLANG_ENABLE_MODULES = YES;
|
CLANG_ENABLE_MODULES = YES;
|
||||||
CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
|
CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
|
||||||
CURRENT_PROJECT_VERSION = 56;
|
CURRENT_PROJECT_VERSION = 59;
|
||||||
DEVELOPMENT_TEAM = 32J6BB6VUS;
|
DEVELOPMENT_TEAM = 32J6BB6VUS;
|
||||||
ENABLE_BITCODE = NO;
|
ENABLE_BITCODE = NO;
|
||||||
EXCLUDED_SOURCE_FILE_NAMES = "";
|
EXCLUDED_SOURCE_FILE_NAMES = "";
|
||||||
|
@ -524,7 +524,7 @@
|
||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
"$(PROJECT_DIR)/Flutter",
|
"$(PROJECT_DIR)/Flutter",
|
||||||
);
|
);
|
||||||
MARKETING_VERSION = 4.2.5;
|
MARKETING_VERSION = 4.2.7;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = com.fotolockr.cakewallet;
|
PRODUCT_BUNDLE_IDENTIFIER = com.fotolockr.cakewallet;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
|
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
|
||||||
|
@ -542,7 +542,7 @@
|
||||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||||
CLANG_ENABLE_MODULES = YES;
|
CLANG_ENABLE_MODULES = YES;
|
||||||
CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
|
CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
|
||||||
CURRENT_PROJECT_VERSION = 56;
|
CURRENT_PROJECT_VERSION = 59;
|
||||||
DEVELOPMENT_TEAM = 32J6BB6VUS;
|
DEVELOPMENT_TEAM = 32J6BB6VUS;
|
||||||
ENABLE_BITCODE = NO;
|
ENABLE_BITCODE = NO;
|
||||||
EXCLUDED_SOURCE_FILE_NAMES = "";
|
EXCLUDED_SOURCE_FILE_NAMES = "";
|
||||||
|
@ -560,7 +560,7 @@
|
||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
"$(PROJECT_DIR)/Flutter",
|
"$(PROJECT_DIR)/Flutter",
|
||||||
);
|
);
|
||||||
MARKETING_VERSION = 4.2.5;
|
MARKETING_VERSION = 4.2.7;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = com.fotolockr.cakewallet;
|
PRODUCT_BUNDLE_IDENTIFIER = com.fotolockr.cakewallet;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
|
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
|
||||||
|
|
|
@ -123,10 +123,13 @@ class MoneroWalletService extends WalletService<
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
// TODO: Implement Exception for wallet list service.
|
// TODO: Implement Exception for wallet list service.
|
||||||
|
|
||||||
if (e.toString().contains('bad_alloc') ||
|
if ((e.toString().contains('bad_alloc') ||
|
||||||
(e is WalletOpeningException &&
|
(e is WalletOpeningException &&
|
||||||
(e.message == 'std::bad_alloc' ||
|
(e.message == 'std::bad_alloc' ||
|
||||||
e.message.contains('bad_alloc')))) {
|
e.message.contains('bad_alloc')))) ||
|
||||||
|
(e.toString().contains('does not correspond') ||
|
||||||
|
(e is WalletOpeningException &&
|
||||||
|
e.message.contains('does not correspond')))) {
|
||||||
await restoreOrResetWalletFiles(name);
|
await restoreOrResetWalletFiles(name);
|
||||||
return openWallet(name, password);
|
return openWallet(name, password);
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,7 +11,7 @@ description: Cake Wallet.
|
||||||
# In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion.
|
# In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion.
|
||||||
# Read more about iOS versioning at
|
# Read more about iOS versioning at
|
||||||
# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
|
# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
|
||||||
version: 4.2.5+60
|
version: 4.2.7+62
|
||||||
|
|
||||||
environment:
|
environment:
|
||||||
sdk: ">=2.7.0 <3.0.0"
|
sdk: ">=2.7.0 <3.0.0"
|
||||||
|
|
|
@ -1,16 +1,16 @@
|
||||||
# /bin/bash
|
#!/bin/sh
|
||||||
|
|
||||||
WORKDIR=/opt/android
|
. ./config.sh
|
||||||
TOOLCHAIN_BASE_DIR=${WORKDIR}/toolchain
|
BOOST_SRC_DIR=$WORKDIR/boost_1_74_0
|
||||||
ORIGINAL_PATH=$PATH
|
BOOST_FILENAME=boost_1_74_0.tar.bz2
|
||||||
|
BOOST_VERSION=1.74.0
|
||||||
|
|
||||||
for arch in "aarch" "aarch64" "i686" "x86_64"
|
for arch in "aarch" "aarch64" "i686" "x86_64"
|
||||||
do
|
do
|
||||||
|
|
||||||
PREFIX=$WORKDIR/prefix_${arch}
|
PREFIX=$WORKDIR/prefix_${arch}
|
||||||
PATH="${TOOLCHAIN_BASE_DIR}_${arch}/bin:${ORIGINAL_PATH}"
|
|
||||||
|
|
||||||
./init_boost.sh $arch
|
./init_boost.sh $arch $PREFIX $BOOST_SRC_DIR $BOOST_FILENAME $BOOST_VERSION
|
||||||
./finish_boost.sh $arch
|
./finish_boost.sh $arch $PREFIX $BOOST_SRC_DIR $BOOST_SRC_DIR
|
||||||
|
|
||||||
done
|
done
|
||||||
|
|
|
@ -1,29 +1,27 @@
|
||||||
# /bin/bash
|
#!/bin/sh
|
||||||
|
|
||||||
export WORKDIR=/opt/android
|
. ./config.sh
|
||||||
export ICONV_FILENAME=libiconv-1.15.tar.gz
|
export ICONV_FILENAME=libiconv-1.16.tar.gz
|
||||||
export ICONV_FILE_PATH=$WORKDIR/$ICONV_FILENAME
|
export ICONV_FILE_PATH=$WORKDIR/$ICONV_FILENAME
|
||||||
export ICONV_SRC_DIR=$WORKDIR/libiconv-1.15
|
export ICONV_SRC_DIR=$WORKDIR/libiconv-1.16
|
||||||
|
ICONV_SHA256="e6a1b1b589654277ee790cce3734f07876ac4ccfaecbee8afa0b649cf529cc04"
|
||||||
|
|
||||||
wget http://ftp.gnu.org/pub/gnu/libiconv/$ICONV_FILENAME -O $ICONV_FILE_PATH
|
curl http://ftp.gnu.org/pub/gnu/libiconv/$ICONV_FILENAME -o $ICONV_FILE_PATH
|
||||||
|
echo $ICONV_SHA256 $ICONV_FILE_PATH | sha256sum -c - || exit 1
|
||||||
ORIGINAL_PATH=$PATH
|
|
||||||
TOOLCHAIN_BASE_DIR=${WORKDIR}/toolchain
|
|
||||||
|
|
||||||
for arch in aarch aarch64 i686 x86_64
|
for arch in aarch aarch64 i686 x86_64
|
||||||
do
|
do
|
||||||
|
|
||||||
PREFIX=${WORKDIR}/prefix_${arch}
|
PREFIX=${WORKDIR}/prefix_${arch}
|
||||||
PATH="${TOOLCHAIN_BASE_DIR}_${arch}/bin:${ORIGINAL_PATH}"
|
|
||||||
|
|
||||||
case $arch in
|
case $arch in
|
||||||
"aarch" )
|
"aarch" )
|
||||||
CLANG=arm-linux-androideabi-clang
|
CLANG=armv7a-linux-androideabi${API}-clang
|
||||||
CXXLANG=arm-linux-androideabi-clang++
|
CXXLANG=armv7a-linux-androideabi${API}-clang++
|
||||||
HOST="arm-linux-android";;
|
HOST="arm";;
|
||||||
* )
|
* )
|
||||||
CLANG=${arch}-linux-android-clang
|
CLANG=${arch}-linux-android${API}-clang
|
||||||
CXXLANG=${arch}-linux-android-clang++
|
CXXLANG=${arch}-linux-android${API}-clang++
|
||||||
HOST="${arch}-linux-android";;
|
HOST="${arch}-linux-android";;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
|
@ -36,3 +34,4 @@ make
|
||||||
make install
|
make install
|
||||||
|
|
||||||
done
|
done
|
||||||
|
|
||||||
|
|
|
@ -1,10 +1,9 @@
|
||||||
# /bin/bash
|
#!/bin/sh
|
||||||
|
|
||||||
WORKDIR=/opt/android
|
. ./config.sh
|
||||||
TOOLCHAIN_BASE_DIR=${WORKDIR}/toolchain
|
MONERO_BRANCH=v0.17.2.3-android
|
||||||
ORIGINAL_PATH=$PATH
|
|
||||||
MONERO_BRANCH=v0.17.1.9-android
|
|
||||||
MONERO_SRC_DIR=${WORKDIR}/monero
|
MONERO_SRC_DIR=${WORKDIR}/monero
|
||||||
|
CMAKE_TOOLCHAIN_FILE="${ANDROID_NDK_HOME}/build/cmake/android.toolchain.cmake"
|
||||||
|
|
||||||
git clone https://github.com/cake-tech/monero.git ${MONERO_SRC_DIR} --branch ${MONERO_BRANCH}
|
git clone https://github.com/cake-tech/monero.git ${MONERO_SRC_DIR} --branch ${MONERO_BRANCH}
|
||||||
cd $MONERO_SRC_DIR
|
cd $MONERO_SRC_DIR
|
||||||
|
@ -15,8 +14,6 @@ for arch in "aarch" "aarch64" "i686" "x86_64"
|
||||||
do
|
do
|
||||||
FLAGS=""
|
FLAGS=""
|
||||||
PREFIX=${WORKDIR}/prefix_${arch}
|
PREFIX=${WORKDIR}/prefix_${arch}
|
||||||
ANDROID_STANDALONE_TOOLCHAIN_PATH="${TOOLCHAIN_BASE_DIR}_${arch}"
|
|
||||||
PATH="${ANDROID_STANDALONE_TOOLCHAIN_PATH}/bin:${ORIGINAL_PATH}"
|
|
||||||
DEST_LIB_DIR=${PREFIX}/lib/monero
|
DEST_LIB_DIR=${PREFIX}/lib/monero
|
||||||
DEST_INCLUDE_DIR=${PREFIX}/include
|
DEST_INCLUDE_DIR=${PREFIX}/include
|
||||||
export CMAKE_INCLUDE_PATH="${PREFIX}/include"
|
export CMAKE_INCLUDE_PATH="${PREFIX}/include"
|
||||||
|
@ -27,30 +24,30 @@ mkdir -p $DEST_INCLUDE_DIR
|
||||||
|
|
||||||
case $arch in
|
case $arch in
|
||||||
"aarch" )
|
"aarch" )
|
||||||
CLANG=arm-linux-androideabi-clang
|
ANDROID_CLANG=armv7a-linux-androideabi${API}-clang
|
||||||
CXXLANG=arm-linux-androideabi-clang++
|
ANDROID_CLANGPP=armv7a-linux-androideabi${API}-clang++
|
||||||
BUILD_64=OFF
|
BUILD_64=OFF
|
||||||
TAG="android-armv7"
|
TAG="android-armv7"
|
||||||
ARCH="armv7-a"
|
ARCH="armv7-a"
|
||||||
ARCH_ABI="armeabi-v7a"
|
ARCH_ABI="armeabi-v7a"
|
||||||
FLAGS="-D CMAKE_ANDROID_ARM_MODE=ON -D NO_AES=true";;
|
FLAGS="-D CMAKE_ANDROID_ARM_MODE=ON -D NO_AES=true";;
|
||||||
"aarch64" )
|
"aarch64" )
|
||||||
CLANG=aarch64-linux-androideabi-clang
|
ANDROID_CLANG=aarch64-linux-androideabi${API}-clang
|
||||||
CXXLANG=aarch64-linux-androideabi-clang++
|
ANDROID_CLANGPP=aarch64-linux-androideabi${API}-clang++
|
||||||
BUILD_64=ON
|
BUILD_64=ON
|
||||||
TAG="android-armv8"
|
TAG="android-armv8"
|
||||||
ARCH="armv8-a"
|
ARCH="armv8-a"
|
||||||
ARCH_ABI="arm64-v8a";;
|
ARCH_ABI="arm64-v8a";;
|
||||||
"i686" )
|
"i686" )
|
||||||
CLANG=i686-linux-androideabi-clang
|
ANDROID_CLANG=i686-linux-androideabi${API}-clang
|
||||||
CXXLANG=i686-linux-androideabi-clang++
|
ANDROID_CLANGPP=i686-linux-androideabi${API}-clang++
|
||||||
BUILD_64=OFF
|
BUILD_64=OFF
|
||||||
TAG="android-x86"
|
TAG="android-x86"
|
||||||
ARCH="i686"
|
ARCH="i686"
|
||||||
ARCH_ABI="x86";;
|
ARCH_ABI="x86";;
|
||||||
"x86_64" )
|
"x86_64" )
|
||||||
CLANG=x86_64-linux-androideabi-clang
|
ANDROID_CLANG=x86_64-linux-androideabi${API}-clang
|
||||||
CXXLANG=x86_64-linux-androideabi-clang++
|
ANDROID_CLANGPP=x86_64-linux-androideabi${API}-clang++
|
||||||
BUILD_64=ON
|
BUILD_64=ON
|
||||||
TAG="android-x86_64"
|
TAG="android-x86_64"
|
||||||
ARCH="x86-64"
|
ARCH="x86-64"
|
||||||
|
@ -61,7 +58,25 @@ cd $MONERO_SRC_DIR
|
||||||
rm -rf ./build/release
|
rm -rf ./build/release
|
||||||
mkdir -p ./build/release
|
mkdir -p ./build/release
|
||||||
cd ./build/release
|
cd ./build/release
|
||||||
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 ../..
|
cmake \
|
||||||
|
-DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE} \
|
||||||
|
-DCMAKE_PREFIX_PATH="${PREFIX}" \
|
||||||
|
-DCMAKE_FIND_ROOT_PATH="${PREFIX}" \
|
||||||
|
-DCMAKE_BUILD_TYPE=release \
|
||||||
|
-DARCH=$ARCH \
|
||||||
|
-DANDROID=true \
|
||||||
|
-DANDROID_NATIVE_API_LEVEL=$API \
|
||||||
|
-DANDROID_ABI=$ARCH_ABI \
|
||||||
|
-DANDROID_TOOLCHAIN=clang \
|
||||||
|
-DLRELEASE_PATH="${PREFIX}/bin" \
|
||||||
|
-DSTATIC=ON \
|
||||||
|
-DBUILD_64=$BUILD_64 \
|
||||||
|
-DINSTALL_VENDORED_LIBUNBOUND=ON \
|
||||||
|
-DUSE_DEVICE_TREZOR=OFF \
|
||||||
|
-DBUILD_GUI_DEPS=1 \
|
||||||
|
-DBUILD_TESTS=OFF \
|
||||||
|
${FLAGS} ../..
|
||||||
|
|
||||||
make wallet_api -j4
|
make wallet_api -j4
|
||||||
find . -path ./lib -prune -o -name '*.a' -exec cp '{}' lib \;
|
find . -path ./lib -prune -o -name '*.a' -exec cp '{}' lib \;
|
||||||
|
|
||||||
|
|
|
@ -1,44 +1,62 @@
|
||||||
# /bin/bash
|
#!/bin/sh
|
||||||
|
|
||||||
WORKDIR=/opt/android
|
. ./config.sh
|
||||||
OPENSSL_FILENAME=openssl-1.0.2p.tar.gz
|
OPENSSL_FILENAME=openssl-1.1.1k.tar.gz
|
||||||
OPENSSL_FILE_PATH=$WORKDIR/$OPENSSL_FILENAME
|
OPENSSL_FILE_PATH=$WORKDIR/$OPENSSL_FILENAME
|
||||||
OPENSSL_SRC_DIR=$WORKDIR/openssl-1.0.2p
|
OPENSSL_SRC_DIR=$WORKDIR/openssl-1.1.1k
|
||||||
|
OPENSSL_SHA256="892a0875b9872acd04a9fde79b1f943075d5ea162415de3047c327df33fbaee5"
|
||||||
ZLIB_FILENAME=zlib-1.2.11.tar.gz
|
ZLIB_FILENAME=zlib-1.2.11.tar.gz
|
||||||
ZLIB_FILE_PATH=$WORKDIR/$ZLIB_FILENAME
|
ZLIB_FILE_PATH=$WORKDIR/$ZLIB_FILENAME
|
||||||
ZLIB_SRC_DIR=$WORKDIR/zlib-1.2.11
|
ZLIB_SRC_DIR=$WORKDIR/zlib-1.2.11
|
||||||
ORIGINAL_PATH=$PATH
|
ZLIB_SHA256="c3e5e9fdd5004dcb542feda5ee4f0ff0744628baf8ed2dd5d66f8ca1197cb1a1"
|
||||||
TOOLCHAIN_BASE_DIR=${WORKDIR}/toolchain
|
|
||||||
|
curl https://zlib.net/$ZLIB_FILENAME -o $ZLIB_FILE_PATH
|
||||||
|
echo $ZLIB_SHA256 $ZLIB_FILE_PATH | sha256sum -c - || exit 1
|
||||||
|
|
||||||
wget https://zlib.net/$ZLIB_FILENAME -O $ZLIB_FILE_PATH
|
|
||||||
tar -xzf $ZLIB_FILE_PATH -C $WORKDIR
|
tar -xzf $ZLIB_FILE_PATH -C $WORKDIR
|
||||||
cd $ZLIB_SRC_DIR
|
cd $ZLIB_SRC_DIR
|
||||||
CC=clang CXX=clang++ ./configure --static
|
CC=clang CXX=clang++ ./configure --static
|
||||||
make
|
make
|
||||||
|
|
||||||
wget https://www.openssl.org/source/$OPENSSL_FILENAME -O $OPENSSL_FILE_PATH
|
curl https://www.openssl.org/source/$OPENSSL_FILENAME -o $OPENSSL_FILE_PATH
|
||||||
|
echo $OPENSSL_SHA256 $OPENSSL_FILE_PATH | sha256sum -c - || exit 1
|
||||||
|
|
||||||
for arch in "aarch" "aarch64" "i686" "x86_64"
|
for arch in "aarch" "aarch64" "i686" "x86_64"
|
||||||
do
|
do
|
||||||
|
|
||||||
PREFIX=$WORKDIR/prefix_${arch}
|
PREFIX=$WORKDIR/prefix_${arch}
|
||||||
PATH="${TOOLCHAIN_BASE_DIR}_${arch}/bin:${ORIGINAL_PATH}"
|
|
||||||
|
|
||||||
case $arch in
|
case $arch in
|
||||||
"aarch" ) TARGET="armv7";;
|
"aarch") CLANG=armv7a-linux-androideabi${API}-clang
|
||||||
* ) TARGET="${arch}";;
|
CXXLANG=armv7a-linux-androideabi${API}-clang++
|
||||||
esac
|
X_ARCH="android-arm";;
|
||||||
|
"aarch64") CLANG=${arch}-linux-android${API}-clang
|
||||||
|
CXXLANG=${arch}-linux-android${API}-clang++
|
||||||
|
X_ARCH="android-arm64";;
|
||||||
|
"i686") CLANG=${arch}-linux-android${API}-clang
|
||||||
|
CXXLANG=${arch}-linux-android${API}-clang++
|
||||||
|
X_ARCH="android-x86";;
|
||||||
|
"x86_64") CLANG=${arch}-linux-android${API}-clang
|
||||||
|
CXXLANG=${arch}-linux-android${API}-clang++
|
||||||
|
X_ARCH="android-x86_64";;
|
||||||
|
*) CLANG=${arch}-linux-android${API}-clang
|
||||||
|
CXXLANG=${arch}-linux-android${API}-clang++
|
||||||
|
X_ARCH="android-${arch}";;
|
||||||
|
esac
|
||||||
|
|
||||||
cd $WORKDIR
|
cd $WORKDIR
|
||||||
rm -rf $OPENSSL_SRC_DIR
|
rm -rf $OPENSSL_SRC_DIR
|
||||||
tar -xzf $OPENSSL_FILE_PATH -C $WORKDIR
|
tar -xzf $OPENSSL_FILE_PATH -C $WORKDIR
|
||||||
cd $OPENSSL_SRC_DIR
|
cd $OPENSSL_SRC_DIR
|
||||||
sed -i -e "s/mandroid/target\ ${TARGET}\-linux\-android/" Configure
|
./Configure CC=${CLANG} CXX=${CXXLANG} ${X_ARCH} \
|
||||||
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}
|
no-asm no-shared --static \
|
||||||
make
|
--with-zlib-include=${PREFIX}/include \
|
||||||
|
--with-zlib-lib=${PREFIX}/lib \
|
||||||
|
--prefix=${PREFIX} \
|
||||||
|
--openssldir=${PREFIX} \
|
||||||
|
-D__ANDROID_API__=$API
|
||||||
|
sed -i 's/CNF_EX_LIBS=-ldl -pthread//g;s/BIN_CFLAGS=-pie $(CNF_CFLAGS) $(CFLAGS)//g' Makefile
|
||||||
|
make -j4
|
||||||
make install
|
make install
|
||||||
|
|
||||||
|
|
||||||
done
|
done
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,21 +1,24 @@
|
||||||
# /bin/bash
|
#!/bin/sh
|
||||||
|
|
||||||
WORKDIR=/opt/android
|
. ./config.sh
|
||||||
TOOLCHAIN_BASE_DIR=${WORKDIR}/toolchain
|
|
||||||
SODIUM_SRC_DIR=${WORKDIR}/libsodium
|
SODIUM_SRC_DIR=${WORKDIR}/libsodium
|
||||||
SODIUM_BRANCH=1.0.16
|
SODIUM_BRANCH=1.0.16
|
||||||
ORIGINAL_PATH=$PATH
|
|
||||||
|
|
||||||
for arch in "aarch" "aarch64" "i686" "x86_64"
|
for arch in "aarch" "aarch64" "i686" "x86_64"
|
||||||
do
|
do
|
||||||
|
|
||||||
PREFIX=$WORKDIR/prefix_${arch}
|
PREFIX=${WORKDIR}/prefix_${arch}
|
||||||
PATH="${TOOLCHAIN_BASE_DIR}_${arch}/bin:${ORIGINAL_PATH}"
|
|
||||||
|
|
||||||
case $arch in
|
case $arch in
|
||||||
"aarch" ) TARGET="arm";;
|
"aarch" ) TARGET="arm"
|
||||||
"i686" ) TARGET="x86";;
|
CC=armv7a-linux-androideabi${API}-clang
|
||||||
* ) TARGET="${arch}";;
|
CXX=armv7a-linux-androideabi${API}-clang++;;
|
||||||
|
"i686" ) TARGET="x86"
|
||||||
|
CC=${arch}-linux-android${API}-clang
|
||||||
|
CXX=${arch}-linux-android${API}-clang++;;
|
||||||
|
* ) TARGET="${arch}"
|
||||||
|
CC=${arch}-linux-android${API}-clang
|
||||||
|
CXX=${arch}-linux-android${API}-clang++;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
HOST="${TARGET}-linux-android"
|
HOST="${TARGET}-linux-android"
|
||||||
|
@ -24,8 +27,9 @@ rm -rf $SODIUM_SRC_DIR
|
||||||
git clone https://github.com/jedisct1/libsodium.git $SODIUM_SRC_DIR -b $SODIUM_BRANCH
|
git clone https://github.com/jedisct1/libsodium.git $SODIUM_SRC_DIR -b $SODIUM_BRANCH
|
||||||
cd $SODIUM_SRC_DIR
|
cd $SODIUM_SRC_DIR
|
||||||
./autogen.sh
|
./autogen.sh
|
||||||
CC=clang CXX=clang++ ./configure --prefix=${PREFIX} --host=${HOST} --enable-static --disable-shared
|
./configure --prefix=${PREFIX} --host=${HOST} --enable-static --disable-shared
|
||||||
make
|
make
|
||||||
make install
|
make install
|
||||||
|
|
||||||
done
|
done
|
||||||
|
|
||||||
|
|
|
@ -1,25 +1,28 @@
|
||||||
# /bin/bash
|
#!/bin/sh
|
||||||
|
|
||||||
WORKDIR=/opt/android
|
. ./config.sh
|
||||||
TOOLCHAIN_BASE_DIR=${WORKDIR}/toolchain
|
|
||||||
ZMQ_SRC_DIR=$WORKDIR/libzmq
|
ZMQ_SRC_DIR=$WORKDIR/libzmq
|
||||||
ZMQ_BRANCH=master
|
ZMQ_BRANCH=v4.3.3
|
||||||
ZMQ_COMMIT_HASH=501d0815bf2b0abb93be8214fc66519918ef6c40
|
ZMQ_COMMIT_HASH=04f5bbedee58c538934374dc45182d8fc5926fa3
|
||||||
ORIGINAL_PATH=$PATH
|
|
||||||
|
|
||||||
|
|
||||||
for arch in "aarch" "aarch64" "i686" "x86_64"
|
for arch in "aarch" "aarch64" "i686" "x86_64"
|
||||||
do
|
do
|
||||||
|
|
||||||
PREFIX=$WORKDIR/prefix_${arch}
|
PREFIX=$WORKDIR/prefix_${arch}
|
||||||
PATH="${TOOLCHAIN_BASE_DIR}_${arch}/bin:${ORIGINAL_PATH}"
|
|
||||||
|
|
||||||
case $arch in
|
case $arch in
|
||||||
"aarch" ) TARGET="arm";;
|
"aarch" ) TARGET="arm"
|
||||||
"i686" ) TARGET="x86";;
|
ANDROID_CLANG=armv7a-linux-androideabi${API}-clang
|
||||||
* ) TARGET="${arch}";;
|
ANDROID_CLANGPP=armv7a-linux-androideabi${API}-clang++;;
|
||||||
|
"i686" ) TARGET="x86"
|
||||||
|
ANDROID_CLANG=${arch}-linux-android${API}-clang
|
||||||
|
ANDROID_CLANGPP=${arch}-linux-android${API}-clang++;;
|
||||||
|
* ) TARGET="${arch}"
|
||||||
|
ANDROID_CLANG=${arch}-linux-android${API}-clang
|
||||||
|
ANDROID_CLANGPP=${arch}-linux-android${API}-clang++;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
|
|
||||||
HOST="${TARGET}-linux-android"
|
HOST="${TARGET}-linux-android"
|
||||||
cd $WORKDIR
|
cd $WORKDIR
|
||||||
rm -rf $ZMQ_SRC_DIR
|
rm -rf $ZMQ_SRC_DIR
|
||||||
|
@ -27,7 +30,7 @@ git clone https://github.com/zeromq/libzmq.git ${ZMQ_SRC_DIR} -b ${ZMQ_BRANCH}
|
||||||
cd $ZMQ_SRC_DIR
|
cd $ZMQ_SRC_DIR
|
||||||
git checkout ${ZMQ_COMMIT_HASH}
|
git checkout ${ZMQ_COMMIT_HASH}
|
||||||
./autogen.sh
|
./autogen.sh
|
||||||
CC=clang CXX=clang++ ./configure --prefix=${PREFIX} --host=${HOST} --enable-static --disable-shared
|
CC=${ANDROID_CLANG} CXX=${ANDROID_CLANGPP} ./configure --prefix=${PREFIX} --host=${HOST} --enable-static --disable-shared
|
||||||
make
|
make
|
||||||
make install
|
make install
|
||||||
|
|
||||||
|
|
13
scripts/android/config.sh
Normal file
13
scripts/android/config.sh
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
export API=21
|
||||||
|
export WORKDIR=/opt/android
|
||||||
|
export ANDROID_NDK_ZIP=${WORKDIR}/android-ndk-r20b.zip
|
||||||
|
export ANDROID_NDK_ROOT=${WORKDIR}/android-ndk-r20b
|
||||||
|
export ANDROID_NDK_HOME=$ANDROID_NDK_ROOT
|
||||||
|
export TOOLCHAIN_DIR="${ANDROID_NDK_HOME}/toolchains/llvm/prebuilt/linux-x86_64"
|
||||||
|
|
||||||
|
case :${PATH:=${TOOLCHAIN_DIR}/bin}: in
|
||||||
|
(*:"${TOOLCHAIN_DIR}/bin":*) ;; (*)
|
||||||
|
export PATH=${TOOLCHAIN_DIR}/bin:$PATH
|
||||||
|
esac;
|
|
@ -1,9 +1,9 @@
|
||||||
# /bin/bash
|
#!/bin/sh
|
||||||
|
|
||||||
WORKDIR=/opt/android
|
|
||||||
ARCH=$1
|
ARCH=$1
|
||||||
PREFIX="${WORKDIR}/prefix_${ARCH}"
|
PREFIX=$2
|
||||||
BOOST_SRC_DIR=$WORKDIR/boost_1_68_0
|
BOOST_SRC_DIR=$3
|
||||||
|
|
||||||
cd $BOOST_SRC_DIR
|
cd $BOOST_SRC_DIR
|
||||||
|
|
||||||
./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
|
./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
|
||||||
|
|
|
@ -1,16 +1,19 @@
|
||||||
# /bin/bash
|
#!/bin/sh
|
||||||
|
|
||||||
WORKDIR=/opt/android
|
|
||||||
ARCH=$1
|
ARCH=$1
|
||||||
PREFIX="${WORKDIR}/prefix_${ARCH}"
|
PREFIX=$2
|
||||||
BOOST_FILENAME=boost_1_68_0.tar.bz2
|
BOOST_SRC_DIR=$3
|
||||||
|
BOOST_FILENAME=$4
|
||||||
|
BOOST_VERSION=$5
|
||||||
BOOST_FILE_PATH=$WORKDIR/$BOOST_FILENAME
|
BOOST_FILE_PATH=$WORKDIR/$BOOST_FILENAME
|
||||||
BOOST_SRC_DIR=$WORKDIR/boost_1_68_0
|
BOOST_SHA256="83bfc1507731a0906e387fc28b7ef5417d591429e51e788417fe9ff025e116b1"
|
||||||
|
|
||||||
if [ ! -e "$BOOST_FILE_PATH" ]; then
|
if [ ! -e "$BOOST_FILE_PATH" ]; then
|
||||||
wget https://dl.bintray.com/boostorg/release/1.68.0/source/$BOOST_FILENAME -O $BOOST_FILE_PATH
|
curl -L http://downloads.sourceforge.net/project/boost/boost/${BOOST_VERSION}/${BOOST_FILENAME} > $BOOST_FILE_PATH
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
echo $BOOST_SHA256 $BOOST_FILE_PATH | sha256sum -c - || exit 1
|
||||||
|
|
||||||
cd $WORKDIR
|
cd $WORKDIR
|
||||||
rm -rf $BOOST_SRC_DIR
|
rm -rf $BOOST_SRC_DIR
|
||||||
tar -xvf $BOOST_FILE_PATH -C $WORKDIR
|
tar -xvf $BOOST_FILE_PATH -C $WORKDIR
|
||||||
|
|
|
@ -1,17 +1,8 @@
|
||||||
# /bin/bash
|
#!/bin/sh
|
||||||
|
|
||||||
WORKDIR=/opt/android
|
. ./config.sh
|
||||||
ANDROID_NDK_ZIP=${WORKDIR}/android-ndk-r17c.zip
|
ANDROID_NDK_SHA256="8381c440fe61fcbb01e209211ac01b519cd6adf51ab1c2281d5daad6ca4c8c8c"
|
||||||
ANDROID_NDK_ROOT=${WORKDIR}/android-ndk-r17c
|
|
||||||
TOOLCHAIN_DIR=${WORKDIR}/toolchain
|
|
||||||
TOOLCHAIN_A32_DIR=${TOOLCHAIN_DIR}_aarch
|
|
||||||
TOOLCHAIN_A64_DIR=${TOOLCHAIN_DIR}_aarch64
|
|
||||||
TOOLCHAIN_x86_DIR=${TOOLCHAIN_DIR}_i686
|
|
||||||
TOOLCHAIN_x86_64_DIR=${TOOLCHAIN_DIR}_x86_64
|
|
||||||
|
|
||||||
wget https://dl.google.com/android/repository/android-ndk-r17c-linux-x86_64.zip -O /opt/android/android-ndk-r17c.zip
|
curl https://dl.google.com/android/repository/android-ndk-r20b-linux-x86_64.zip -o ${ANDROID_NDK_ZIP}
|
||||||
unzip /opt/android/android-ndk-r17c.zip -d $WORKDIR
|
echo $ANDROID_NDK_SHA256 $ANDROID_NDK_ZIP | sha256sum -c || exit 1
|
||||||
${ANDROID_NDK_ROOT}/build/tools/make_standalone_toolchain.py --arch arm64 --api 21 --install-dir ${TOOLCHAIN_A64_DIR} --stl=libc++
|
unzip /opt/android/android-ndk-r20b.zip -d $WORKDIR
|
||||||
${ANDROID_NDK_ROOT}/build/tools/make_standalone_toolchain.py --arch arm --api 21 --install-dir ${TOOLCHAIN_A32_DIR} --stl=libc++
|
|
||||||
${ANDROID_NDK_ROOT}/build/tools/make_standalone_toolchain.py --arch x86 --api 21 --install-dir ${TOOLCHAIN_x86_DIR} --stl=libc++
|
|
||||||
${ANDROID_NDK_ROOT}/build/tools/make_standalone_toolchain.py --arch x86_64 --api 21 --install-dir ${TOOLCHAIN_x86_64_DIR} --stl=libc++
|
|
||||||
|
|
9
scripts/ios/build_all.sh
Executable file
9
scripts/ios/build_all.sh
Executable file
|
@ -0,0 +1,9 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
. ./config.sh
|
||||||
|
./install_missing_headers.sh
|
||||||
|
./build_openssl.sh
|
||||||
|
./build_boost.sh
|
||||||
|
./build_sodium.sh
|
||||||
|
./build_zmq.sh
|
||||||
|
./build_monero.sh
|
23
scripts/ios/build_boost.sh
Executable file
23
scripts/ios/build_boost.sh
Executable file
|
@ -0,0 +1,23 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
. ./config.sh
|
||||||
|
|
||||||
|
MIN_IOS_VERSION=10.0
|
||||||
|
BOOST_URL="https://github.com/cake-tech/Apple-Boost-BuildScript.git"
|
||||||
|
BOOST_DIR_PATH="${EXTERNAL_IOS_SOURCE_DIR}/Apple-Boost-BuildScript"
|
||||||
|
BOOST_VERSION=1.74.0
|
||||||
|
BOOST_LIBS="random regex graph random chrono thread filesystem system date_time locale serialization program_options"
|
||||||
|
|
||||||
|
echo "============================ Boost ============================"
|
||||||
|
|
||||||
|
echo "Cloning Apple-Boost-BuildScript from - $BOOST_URL"
|
||||||
|
git clone -b build $BOOST_URL $BOOST_DIR_PATH
|
||||||
|
cd $BOOST_DIR_PATH
|
||||||
|
./boost.sh -ios \
|
||||||
|
--min-ios-version ${MIN_IOS_VERSION} \
|
||||||
|
--boost-libs "${BOOST_LIBS}" \
|
||||||
|
--boost-version ${BOOST_VERSION} \
|
||||||
|
--no-framework
|
||||||
|
|
||||||
|
mv ${BOOST_DIR_PATH}/build/boost/${BOOST_VERSION}/ios/release/prefix/include/* $EXTERNAL_IOS_INCLUDE_DIR
|
||||||
|
mv ${BOOST_DIR_PATH}/build/boost/${BOOST_VERSION}/ios/release/prefix/lib/* $EXTERNAL_IOS_LIB_DIR
|
61
scripts/ios/build_monero.sh
Executable file
61
scripts/ios/build_monero.sh
Executable file
|
@ -0,0 +1,61 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
. ./config.sh
|
||||||
|
|
||||||
|
MONERO_URL="https://github.com/monero-project/monero.git"
|
||||||
|
MONERO_DIR_PATH="${EXTERNAL_IOS_SOURCE_DIR}/monero"
|
||||||
|
MONERO_VERSION=tags/v0.17.2.3
|
||||||
|
BUILD_TYPE=release
|
||||||
|
PREFIX=${EXTERNAL_IOS_DIR}
|
||||||
|
|
||||||
|
echo "Cloning monero from - $MONERO_URL to - $MONERO_DIR_PATH"
|
||||||
|
git clone $MONERO_URL $MONERO_DIR_PATH
|
||||||
|
cd $MONERO_DIR_PATH
|
||||||
|
git checkout $MONERO_VERSION
|
||||||
|
git submodule update --init --force
|
||||||
|
mkdir -p build
|
||||||
|
cd ..
|
||||||
|
|
||||||
|
ROOT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||||
|
if [ -z $INSTALL_PREFIX ]; then
|
||||||
|
INSTALL_PREFIX=${ROOT_DIR}/monero
|
||||||
|
fi
|
||||||
|
|
||||||
|
for arch in "arm64" #"armv7" "arm64"
|
||||||
|
do
|
||||||
|
|
||||||
|
echo "Building IOS ${arch}"
|
||||||
|
export CMAKE_INCLUDE_PATH="${PREFIX}/include"
|
||||||
|
export CMAKE_LIBRARY_PATH="${PREFIX}/lib"
|
||||||
|
|
||||||
|
case $arch in
|
||||||
|
"armv7" )
|
||||||
|
DEST_LIB=../../lib-armv7;;
|
||||||
|
"arm64" )
|
||||||
|
DEST_LIB=../../lib-armv8-a;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
rm -r monero/build > /dev/null
|
||||||
|
|
||||||
|
mkdir -p monero/build/${BUILD_TYPE}
|
||||||
|
pushd monero/build/${BUILD_TYPE}
|
||||||
|
cmake -D IOS=ON \
|
||||||
|
-DARCH=${arch} \
|
||||||
|
-DCMAKE_BUILD_TYPE=${BUILD_TYPE} \
|
||||||
|
-DSTATIC=ON \
|
||||||
|
-DBUILD_GUI_DEPS=ON \
|
||||||
|
-DINSTALL_VENDORED_LIBUNBOUND=ON \
|
||||||
|
-DCMAKE_INSTALL_PREFIX=${INSTALL_PREFIX} \
|
||||||
|
-DUSE_DEVICE_TREZOR=OFF \
|
||||||
|
../..
|
||||||
|
make -j4 && make install
|
||||||
|
cp external/randomx/librandomx.a ${DEST_LIB}
|
||||||
|
cp src/cryptonote_basic/libcryptonote_basic.a ${DEST_LIB}
|
||||||
|
cp src/cryptonote_basic/libcryptonote_format_utils_basic.a ${DEST_LIB}
|
||||||
|
popd
|
||||||
|
|
||||||
|
done
|
||||||
|
|
||||||
|
#only for arm64
|
||||||
|
cp ${MONERO_DIR_PATH}/lib-armv8-a/* $EXTERNAL_IOS_LIB_DIR
|
||||||
|
cp ${MONERO_DIR_PATH}/include/wallet/api/* $EXTERNAL_IOS_INCLUDE_DIR
|
16
scripts/ios/build_openssl.sh
Executable file
16
scripts/ios/build_openssl.sh
Executable file
|
@ -0,0 +1,16 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
. ./config.sh
|
||||||
|
|
||||||
|
OPEN_SSL_URL="https://github.com/x2on/OpenSSL-for-iPhone.git"
|
||||||
|
OPEN_SSL_DIR_PATH="${EXTERNAL_IOS_SOURCE_DIR}/OpenSSL"
|
||||||
|
|
||||||
|
echo "============================ OpenSSL ============================"
|
||||||
|
|
||||||
|
echo "Cloning Open SSL from - $OPEN_SSL_URL"
|
||||||
|
git clone $OPEN_SSL_URL $OPEN_SSL_DIR_PATH
|
||||||
|
cd $OPEN_SSL_DIR_PATH
|
||||||
|
./build-libssl.sh --version=1.1.1k --archs="x86_64 arm64 armv7s armv7" --targets="ios64-cross-arm64" --deprecated
|
||||||
|
|
||||||
|
mv ${OPEN_SSL_DIR_PATH}/include/* $EXTERNAL_IOS_INCLUDE_DIR
|
||||||
|
mv ${OPEN_SSL_DIR_PATH}/lib/* $EXTERNAL_IOS_LIB_DIR
|
16
scripts/ios/build_sodium.sh
Executable file
16
scripts/ios/build_sodium.sh
Executable file
|
@ -0,0 +1,16 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
. ./config.sh
|
||||||
|
|
||||||
|
SODIUM_PATH="${EXTERNAL_IOS_SOURCE_DIR}/libsodium"
|
||||||
|
SODIUM_URL="https://github.com/jedisct1/libsodium.git"
|
||||||
|
|
||||||
|
echo "============================ SODIUM ============================"
|
||||||
|
|
||||||
|
echo "Cloning SODIUM from - $SODIUM_URL"
|
||||||
|
git clone $SODIUM_URL $SODIUM_PATH --branch stable
|
||||||
|
cd $SODIUM_PATH
|
||||||
|
./dist-build/ios.sh
|
||||||
|
|
||||||
|
mv ${SODIUM_PATH}/libsodium-ios/include/* $EXTERNAL_IOS_INCLUDE_DIR
|
||||||
|
mv ${SODIUM_PATH}/libsodium-ios/lib/* $EXTERNAL_IOS_LIB_DIR
|
13
scripts/ios/build_zmq.sh
Executable file
13
scripts/ios/build_zmq.sh
Executable file
|
@ -0,0 +1,13 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
. ./config.sh
|
||||||
|
|
||||||
|
ZMQ_PATH="${EXTERNAL_IOS_SOURCE_DIR}/libzmq"
|
||||||
|
ZMQ_URL="https://github.com/zeromq/libzmq.git"
|
||||||
|
|
||||||
|
echo "============================ ZMQ ============================"
|
||||||
|
|
||||||
|
echo "Cloning ZMQ from - $ZMQ_URL"
|
||||||
|
git clone $ZMQ_URL $ZMQ_PATH
|
||||||
|
|
||||||
|
cp ${ZMQ_PATH}/include/* $EXTERNAL_IOS_INCLUDE_DIR
|
12
scripts/ios/config.sh
Executable file
12
scripts/ios/config.sh
Executable file
|
@ -0,0 +1,12 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
export IOS_SCRIPTS_DIR=`pwd`
|
||||||
|
export CW_ROOT=${IOS_SCRIPTS_DIR}/../..
|
||||||
|
export EXTERNAL_DIR=${CW_ROOT}/cw_monero/ios/External
|
||||||
|
export EXTERNAL_IOS_DIR=${EXTERNAL_DIR}/ios
|
||||||
|
export EXTERNAL_IOS_SOURCE_DIR=${EXTERNAL_IOS_DIR}/sources
|
||||||
|
export EXTERNAL_IOS_LIB_DIR=${EXTERNAL_IOS_DIR}/lib
|
||||||
|
export EXTERNAL_IOS_INCLUDE_DIR=${EXTERNAL_IOS_DIR}/include
|
||||||
|
|
||||||
|
mkdir -p $EXTERNAL_IOS_LIB_DIR
|
||||||
|
mkdir -p $EXTERNAL_IOS_INCLUDE_DIR
|
63
scripts/ios/install_missing_headers.sh
Executable file
63
scripts/ios/install_missing_headers.sh
Executable file
|
@ -0,0 +1,63 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
. ./config.sh
|
||||||
|
|
||||||
|
echo "Installing missing headers"
|
||||||
|
|
||||||
|
# vmmeter
|
||||||
|
mkdir -p ${EXTERNAL_IOS_INCLUDE_DIR}/sys
|
||||||
|
|
||||||
|
if [ ! -f ${EXTERNAL_IOS_INCLUDE_DIR}/sys/vmmeter.h ]; then
|
||||||
|
cp /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/sys/vmmeter.h ${EXTERNAL_IOS_INCLUDE_DIR}/sys/vmmeter.h
|
||||||
|
fi
|
||||||
|
|
||||||
|
# netinet
|
||||||
|
mkdir -p ${EXTERNAL_IOS_INCLUDE_DIR}/netinet
|
||||||
|
if [ ! -f ${EXTERNAL_IOS_INCLUDE_DIR}/netinet/ip_var.h ]; then
|
||||||
|
cp /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/netinet/ip_var.h ${EXTERNAL_IOS_INCLUDE_DIR}/netinet/ip_var.h
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -f ${EXTERNAL_IOS_INCLUDE_DIR}/netinet/udp_var.h ]; then
|
||||||
|
cp /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/netinet/udp_var.h ${EXTERNAL_IOS_INCLUDE_DIR}/netinet/udp_var.h
|
||||||
|
fi
|
||||||
|
|
||||||
|
# IOKit
|
||||||
|
mkdir -p ${EXTERNAL_IOS_INCLUDE_DIR}/IOKit
|
||||||
|
if [ ! -f ${EXTERNAL_IOS_INCLUDE_DIR}/IOKit/IOTypes.h ]; then
|
||||||
|
cp /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/IOKit.framework/Versions/A/Headers/IOTypes.h ${EXTERNAL_IOS_INCLUDE_DIR}/IOKit/IOTypes.h
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -f ${EXTERNAL_IOS_INCLUDE_DIR}/IOKit/IOKitLib.h ]; then
|
||||||
|
cp /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/IOKit.framework/Versions/A/Headers/IOKitLib.h ${EXTERNAL_IOS_INCLUDE_DIR}/IOKit/IOKitLib.h
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -f ${EXTERNAL_IOS_INCLUDE_DIR}/IOKit/IOReturn.h ]; then
|
||||||
|
cp /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/IOKit.framework/Versions/A/Headers/IOReturn.h ${EXTERNAL_IOS_INCLUDE_DIR}/IOKit/IOReturn.h
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -f ${EXTERNAL_IOS_INCLUDE_DIR}/IOKit/OSMessageNotification.h ]; then
|
||||||
|
cp /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/IOKit.framework/Versions/A/Headers/OSMessageNotification.h ${EXTERNAL_IOS_INCLUDE_DIR}/IOKit/OSMessageNotification.h
|
||||||
|
fi
|
||||||
|
|
||||||
|
# IOKit/ps
|
||||||
|
mkdir -p ${EXTERNAL_IOS_INCLUDE_DIR}/IOKit/ps
|
||||||
|
|
||||||
|
if [ ! -f ${EXTERNAL_IOS_INCLUDE_DIR}/IOKit/ps/IOPSKeys.h ]; then
|
||||||
|
cp /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/IOKit.framework/Versions/A/Headers/ps/IOPSKeys.h ${EXTERNAL_IOS_INCLUDE_DIR}/IOKit/ps/IOPSKeys.h
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -f ${EXTERNAL_IOS_INCLUDE_DIR}/IOKit/ps/IOPowerSources.h ]; then
|
||||||
|
cp /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/IOKit.framework/Versions/A/Headers/ps/IOPowerSources.h ${EXTERNAL_IOS_INCLUDE_DIR}/IOKit/ps/IOPowerSources.h
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
# libkern
|
||||||
|
mkdir -p ${EXTERNAL_IOS_INCLUDE_DIR}/libkern
|
||||||
|
|
||||||
|
if [ ! -f ${EXTERNAL_IOS_INCLUDE_DIR}/libkern/OSTypes.h ]; then
|
||||||
|
cp /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/libkern/OSTypes.h ${EXTERNAL_IOS_INCLUDE_DIR}/libkern/OSTypes.h
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -f ${EXTERNAL_IOS_INCLUDE_DIR}/IOKit/IOKitKeys.h ]; then
|
||||||
|
cp /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/IOKit.framework/Versions/A/Headers/IOKitKeys.h ${EXTERNAL_IOS_INCLUDE_DIR}/IOKit/IOKitKeys.h
|
||||||
|
fi
|
Loading…
Reference in a new issue