diff --git a/app/CMakeLists.txt b/app/CMakeLists.txt index 0a8bc13..80e07f7 100644 --- a/app/CMakeLists.txt +++ b/app/CMakeLists.txt @@ -13,7 +13,7 @@ set(EXTERNAL_LIBS_DIR ${CMAKE_SOURCE_DIR}/../external-libs) add_library(sodium STATIC IMPORTED) set_target_properties(sodium PROPERTIES IMPORTED_LOCATION - ${EXTERNAL_LIBS_DIR}/libsodium/lib/${ANDROID_ABI}/libsodium.a) + ${EXTERNAL_LIBS_DIR}/${ANDROID_ABI}/libsodium.a) ############ # OpenSSL @@ -21,11 +21,11 @@ set_target_properties(sodium PROPERTIES IMPORTED_LOCATION add_library(crypto STATIC IMPORTED) set_target_properties(crypto PROPERTIES IMPORTED_LOCATION - ${EXTERNAL_LIBS_DIR}/openssl/lib/${ANDROID_ABI}/libcrypto.a) + ${EXTERNAL_LIBS_DIR}/${ANDROID_ABI}/libcrypto.a) add_library(ssl STATIC IMPORTED) set_target_properties(ssl PROPERTIES IMPORTED_LOCATION - ${EXTERNAL_LIBS_DIR}/openssl/lib/${ANDROID_ABI}/libssl.a) + ${EXTERNAL_LIBS_DIR}/${ANDROID_ABI}/libssl.a) ############ # Boost @@ -33,39 +33,39 @@ set_target_properties(ssl PROPERTIES IMPORTED_LOCATION add_library(boost_chrono STATIC IMPORTED) set_target_properties(boost_chrono PROPERTIES IMPORTED_LOCATION - ${EXTERNAL_LIBS_DIR}/boost/lib/${ANDROID_ABI}/libboost_chrono.a) + ${EXTERNAL_LIBS_DIR}/${ANDROID_ABI}/libboost_chrono.a) add_library(boost_date_time STATIC IMPORTED) set_target_properties(boost_date_time PROPERTIES IMPORTED_LOCATION - ${EXTERNAL_LIBS_DIR}/boost/lib/${ANDROID_ABI}/libboost_date_time.a) + ${EXTERNAL_LIBS_DIR}/${ANDROID_ABI}/libboost_date_time.a) add_library(boost_filesystem STATIC IMPORTED) set_target_properties(boost_filesystem PROPERTIES IMPORTED_LOCATION - ${EXTERNAL_LIBS_DIR}/boost/lib/${ANDROID_ABI}/libboost_filesystem.a) + ${EXTERNAL_LIBS_DIR}/${ANDROID_ABI}/libboost_filesystem.a) add_library(boost_program_options STATIC IMPORTED) set_target_properties(boost_program_options PROPERTIES IMPORTED_LOCATION - ${EXTERNAL_LIBS_DIR}/boost/lib/${ANDROID_ABI}/libboost_program_options.a) + ${EXTERNAL_LIBS_DIR}/${ANDROID_ABI}/libboost_program_options.a) add_library(boost_regex STATIC IMPORTED) set_target_properties(boost_regex PROPERTIES IMPORTED_LOCATION - ${EXTERNAL_LIBS_DIR}/boost/lib/${ANDROID_ABI}/libboost_regex.a) + ${EXTERNAL_LIBS_DIR}/${ANDROID_ABI}/libboost_regex.a) add_library(boost_serialization STATIC IMPORTED) set_target_properties(boost_serialization PROPERTIES IMPORTED_LOCATION - ${EXTERNAL_LIBS_DIR}/boost/lib/${ANDROID_ABI}/libboost_serialization.a) + ${EXTERNAL_LIBS_DIR}/${ANDROID_ABI}/libboost_serialization.a) add_library(boost_system STATIC IMPORTED) set_target_properties(boost_system PROPERTIES IMPORTED_LOCATION - ${EXTERNAL_LIBS_DIR}/boost/lib/${ANDROID_ABI}/libboost_system.a) + ${EXTERNAL_LIBS_DIR}/${ANDROID_ABI}/libboost_system.a) add_library(boost_thread STATIC IMPORTED) set_target_properties(boost_thread PROPERTIES IMPORTED_LOCATION - ${EXTERNAL_LIBS_DIR}/boost/lib/${ANDROID_ABI}/libboost_thread.a) + ${EXTERNAL_LIBS_DIR}/${ANDROID_ABI}/libboost_thread.a) add_library(boost_wserialization STATIC IMPORTED) set_target_properties(boost_wserialization PROPERTIES IMPORTED_LOCATION - ${EXTERNAL_LIBS_DIR}/boost/lib/${ANDROID_ABI}/libboost_wserialization.a) + ${EXTERNAL_LIBS_DIR}/${ANDROID_ABI}/libboost_wserialization.a) ############# # Monero @@ -73,99 +73,103 @@ set_target_properties(boost_wserialization PROPERTIES IMPORTED_LOCATION add_library(wallet_api STATIC IMPORTED) set_target_properties(wallet_api PROPERTIES IMPORTED_LOCATION - ${EXTERNAL_LIBS_DIR}/monero/lib/${ANDROID_ABI}/libwallet_api.a) + ${EXTERNAL_LIBS_DIR}/${ANDROID_ABI}/monero/libwallet_api.a) add_library(wallet STATIC IMPORTED) set_target_properties(wallet PROPERTIES IMPORTED_LOCATION - ${EXTERNAL_LIBS_DIR}/monero/lib/${ANDROID_ABI}/libwallet.a) + ${EXTERNAL_LIBS_DIR}/${ANDROID_ABI}/monero/libwallet.a) add_library(cryptonote_core STATIC IMPORTED) set_target_properties(cryptonote_core PROPERTIES IMPORTED_LOCATION - ${EXTERNAL_LIBS_DIR}/monero/lib/${ANDROID_ABI}/libcryptonote_core.a) + ${EXTERNAL_LIBS_DIR}/${ANDROID_ABI}/monero/libcryptonote_core.a) add_library(cryptonote_basic STATIC IMPORTED) set_target_properties(cryptonote_basic PROPERTIES IMPORTED_LOCATION - ${EXTERNAL_LIBS_DIR}/monero/lib/${ANDROID_ABI}/libcryptonote_basic.a) + ${EXTERNAL_LIBS_DIR}/${ANDROID_ABI}/monero/libcryptonote_basic.a) add_library(mnemonics STATIC IMPORTED) set_target_properties(mnemonics PROPERTIES IMPORTED_LOCATION - ${EXTERNAL_LIBS_DIR}/monero/lib/${ANDROID_ABI}/libmnemonics.a) + ${EXTERNAL_LIBS_DIR}/${ANDROID_ABI}/monero/libmnemonics.a) add_library(common STATIC IMPORTED) set_target_properties(common PROPERTIES IMPORTED_LOCATION - ${EXTERNAL_LIBS_DIR}/monero/lib/${ANDROID_ABI}/libcommon.a) + ${EXTERNAL_LIBS_DIR}/${ANDROID_ABI}/monero/libcommon.a) add_library(cncrypto STATIC IMPORTED) set_target_properties(cncrypto PROPERTIES IMPORTED_LOCATION - ${EXTERNAL_LIBS_DIR}/monero/lib/${ANDROID_ABI}/libcncrypto.a) + ${EXTERNAL_LIBS_DIR}/${ANDROID_ABI}/monero/libcncrypto.a) add_library(ringct STATIC IMPORTED) set_target_properties(ringct PROPERTIES IMPORTED_LOCATION - ${EXTERNAL_LIBS_DIR}/monero/lib/${ANDROID_ABI}/libringct.a) + ${EXTERNAL_LIBS_DIR}/${ANDROID_ABI}/monero/libringct.a) add_library(ringct_basic STATIC IMPORTED) set_target_properties(ringct_basic PROPERTIES IMPORTED_LOCATION - ${EXTERNAL_LIBS_DIR}/monero/lib/${ANDROID_ABI}/libringct_basic.a) + ${EXTERNAL_LIBS_DIR}/${ANDROID_ABI}/monero/libringct_basic.a) add_library(blockchain_db STATIC IMPORTED) set_target_properties(blockchain_db PROPERTIES IMPORTED_LOCATION - ${EXTERNAL_LIBS_DIR}/monero/lib/${ANDROID_ABI}/libblockchain_db.a) + ${EXTERNAL_LIBS_DIR}/${ANDROID_ABI}/monero/libblockchain_db.a) add_library(lmdb STATIC IMPORTED) set_target_properties(lmdb PROPERTIES IMPORTED_LOCATION - ${EXTERNAL_LIBS_DIR}/monero/lib/${ANDROID_ABI}/liblmdb.a) + ${EXTERNAL_LIBS_DIR}/${ANDROID_ABI}/monero/liblmdb.a) add_library(easylogging STATIC IMPORTED) set_target_properties(easylogging PROPERTIES IMPORTED_LOCATION - ${EXTERNAL_LIBS_DIR}/monero/lib/${ANDROID_ABI}/libeasylogging.a) + ${EXTERNAL_LIBS_DIR}/${ANDROID_ABI}/monero/libeasylogging.a) add_library(unbound STATIC IMPORTED) set_target_properties(unbound PROPERTIES IMPORTED_LOCATION - ${EXTERNAL_LIBS_DIR}/monero/lib/${ANDROID_ABI}/libunbound.a) + ${EXTERNAL_LIBS_DIR}/${ANDROID_ABI}/monero/libunbound.a) add_library(epee STATIC IMPORTED) set_target_properties(epee PROPERTIES IMPORTED_LOCATION - ${EXTERNAL_LIBS_DIR}/monero/lib/${ANDROID_ABI}/libepee.a) + ${EXTERNAL_LIBS_DIR}/${ANDROID_ABI}/monero/libepee.a) add_library(blocks STATIC IMPORTED) set_target_properties(blocks PROPERTIES IMPORTED_LOCATION - ${EXTERNAL_LIBS_DIR}/monero/lib/${ANDROID_ABI}/libblocks.a) + ${EXTERNAL_LIBS_DIR}/${ANDROID_ABI}/monero/libblocks.a) add_library(checkpoints STATIC IMPORTED) set_target_properties(checkpoints PROPERTIES IMPORTED_LOCATION - ${EXTERNAL_LIBS_DIR}/monero/lib/${ANDROID_ABI}/libcheckpoints.a) + ${EXTERNAL_LIBS_DIR}/${ANDROID_ABI}/monero/libcheckpoints.a) add_library(device STATIC IMPORTED) set_target_properties(device PROPERTIES IMPORTED_LOCATION - ${EXTERNAL_LIBS_DIR}/monero/lib/${ANDROID_ABI}/libdevice.a) + ${EXTERNAL_LIBS_DIR}/${ANDROID_ABI}/monero/libdevice.a) add_library(device_trezor STATIC IMPORTED) set_target_properties(device_trezor PROPERTIES IMPORTED_LOCATION - ${EXTERNAL_LIBS_DIR}/monero/lib/${ANDROID_ABI}/libdevice_trezor.a) + ${EXTERNAL_LIBS_DIR}/${ANDROID_ABI}/monero/libdevice_trezor.a) add_library(multisig STATIC IMPORTED) set_target_properties(multisig PROPERTIES IMPORTED_LOCATION - ${EXTERNAL_LIBS_DIR}/monero/lib/${ANDROID_ABI}/libmultisig.a) + ${EXTERNAL_LIBS_DIR}/${ANDROID_ABI}/monero/libmultisig.a) add_library(version STATIC IMPORTED) set_target_properties(version PROPERTIES IMPORTED_LOCATION - ${EXTERNAL_LIBS_DIR}/monero/lib/${ANDROID_ABI}/libversion.a) + ${EXTERNAL_LIBS_DIR}/${ANDROID_ABI}/monero/libversion.a) add_library(net STATIC IMPORTED) set_target_properties(net PROPERTIES IMPORTED_LOCATION - ${EXTERNAL_LIBS_DIR}/monero/lib/${ANDROID_ABI}/libnet.a) + ${EXTERNAL_LIBS_DIR}/${ANDROID_ABI}/monero/libnet.a) add_library(hardforks STATIC IMPORTED) set_target_properties(hardforks PROPERTIES IMPORTED_LOCATION - ${EXTERNAL_LIBS_DIR}/monero/lib/${ANDROID_ABI}/libhardforks.a) + ${EXTERNAL_LIBS_DIR}/${ANDROID_ABI}/monero/libhardforks.a) add_library(randomx STATIC IMPORTED) set_target_properties(randomx PROPERTIES IMPORTED_LOCATION - ${EXTERNAL_LIBS_DIR}/monero/lib/${ANDROID_ABI}/librandomx.a) + ${EXTERNAL_LIBS_DIR}/${ANDROID_ABI}/monero/librandomx.a) add_library(rpc_base STATIC IMPORTED) set_target_properties(rpc_base PROPERTIES IMPORTED_LOCATION - ${EXTERNAL_LIBS_DIR}/monero/lib/${ANDROID_ABI}/librpc_base.a) + ${EXTERNAL_LIBS_DIR}/${ANDROID_ABI}/monero/librpc_base.a) + +add_library(wallet-crypto STATIC IMPORTED) +set_target_properties(wallet-crypto PROPERTIES IMPORTED_LOCATION + ${EXTERNAL_LIBS_DIR}/${ANDROID_ABI}/monero/libwallet-crypto.a) ############# # System @@ -173,10 +177,16 @@ set_target_properties(rpc_base PROPERTIES IMPORTED_LOCATION find_library( log-lib log ) -include_directories( ${EXTERNAL_LIBS_DIR}/monero/include ) +include_directories( ${EXTERNAL_LIBS_DIR}/include ) message(STATUS EXTERNAL_LIBS_DIR : ${EXTERNAL_LIBS_DIR}) +if(${ANDROID_ABI} STREQUAL "x86_64") + set(EXTRA_LIBS "wallet-crypto") +else() + set(EXTRA_LIBS "") +endif() + target_link_libraries( monerujo wallet_api @@ -203,6 +213,7 @@ target_link_libraries( monerujo randomx hardforks rpc_base + ${EXTRA_LIBS} boost_chrono boost_date_time diff --git a/external-libs/.gitignore b/external-libs/.gitignore index fda7205..4cc6b6d 100644 --- a/external-libs/.gitignore +++ b/external-libs/.gitignore @@ -1,2 +1,5 @@ -build -monero* +/monero +/arm64-v8a +/armeabi-v7a +/x86 +/x86_64 diff --git a/external-libs/Makefile b/external-libs/Makefile index 934ed34..96dc5f0 100644 --- a/external-libs/Makefile +++ b/external-libs/Makefile @@ -1,60 +1,69 @@ -#.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 +# ln -s /opt/monero monero -#all: build-external-libs +MONERO_BRANCH=`git -C monero branch | grep "^\*" | sed 's/^..//'` +MONERUJO_BRANCH=`git -C . branch | grep "^\*" | sed 's/^..//'` -#build-external-libs: clean-external-libs collect +all: arm64-v8a armeabi-v7a x86_64 x86 include VERSION -all: monero +arm64-v8a: monero + -rm -rf arm64-v8a + -docker container rm monero-android-arm64 -f + docker build -f android64.Dockerfile -t monero-android-arm64 monero + docker create -it --name monero-android-arm64 monero-android-arm64 bash + docker cp monero-android-arm64:/opt/android/prefix/lib/. arm64-v8a/ + docker cp monero-android-arm64:/src/build/release/lib/. arm64-v8a//monero -monero: toolchain libsodium openssl boost monero_dl openssl_sysroot - script/monero-build.sh +armeabi-v7a: monero + -rm -rf armeabi-v7a + -docker container rm monero-android-arm32 -f + docker build -f android32.Dockerfile -t monero-android-arm32 monero + docker create -it --name monero-android-arm32 monero-android-arm32 bash + docker cp monero-android-arm32:/opt/android/prefix/lib/. armeabi-v7a + docker cp monero-android-arm32:/src/build/release/lib/. armeabi-v7a/monero -monero_dl: - script/monero-fetch.sh +x86_64: monero + -rm -rf x86_64 + -docker container rm monero-android-x86_64 -f + docker build -f android64_x86.Dockerfile -t monero-android-x86_64 monero + docker create -it --name monero-android-x86_64 monero-android-x86_64 bash + docker cp monero-android-x86_64:/opt/android/prefix/lib/. x86_64 + docker cp monero-android-x86_64:/src/build/release/lib/. x86_64/monero -toolchain: - script/toolchain-build.sh +x86: monero + -rm -rf x86 + -docker container rm monero-android-x86 -f + docker build -f android32_x86.Dockerfile -t monero-android-x86 monero + docker create -it --name monero-android-x86 monero-android-x86 bash + docker cp monero-android-x86:/opt/android/prefix/lib/. x86 + docker cp monero-android-x86:/src/build/release/lib/. x86/monero -openssl: toolchain openssl_dl - script/openssl-build.sh +include: monero + -mkdir include + cp monero/src/wallet/api/wallet2_api.h include/ -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 +VERSION: + echo MONERUJO `git -C . branch | grep "^\*" | sed 's/^..//'` with MONERO `git -C monero branch | grep "^\*" | sed 's/^..//'` > VERSION clean: - script/clean.sh + -docker container rm monero-android-arm64 -f + -docker container rm monero-android-arm32 -f + -docker container rm monero-android-x86_64 -f + -docker container rm monero-android-x86 -f + -rm -rf arm64-v8a + -rm -rf armeabi-v7a + -rm -rf x86_64 + -rm -rf x86 + -rm -rf include + -rm -f VERSION 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 {} \; + -docker image rm monero-android-arm64 -f + -docker image rm monero-android-arm32 -f + -docker image rm monero-android-x86_64 -f + -docker image rm monero-android-x86 -f + -rm monero -archive: libsodium openssl boost monero - echo "Packing external-libs" - tar czfv libsodium openssl boost monero external-libs.tgz +monero: + $(error Please ln -s monero) + +.PHONY: all clean distclean include diff --git a/external-libs/VERSION b/external-libs/VERSION new file mode 100644 index 0000000..38fd6d9 --- /dev/null +++ b/external-libs/VERSION @@ -0,0 +1 @@ +MONERUJO feature_dockerbuild with MONERO release-v0.17.1.9-monerujo diff --git a/external-libs/android32.Dockerfile b/external-libs/android32.Dockerfile new file mode 100644 index 0000000..c0c9c33 --- /dev/null +++ b/external-libs/android32.Dockerfile @@ -0,0 +1,140 @@ +FROM debian:stable + +RUN apt-get update && apt-get install -y unzip automake build-essential curl file pkg-config git python libtool libtinfo5 + +WORKDIR /opt/android +## INSTALL ANDROID SDK +ENV ANDROID_SDK_REVISION 4333796 +ENV ANDROID_SDK_HASH 92ffee5a1d98d856634e8b71132e8a95d96c83a63fde1099be3d86df3106def9 +RUN curl -s -O https://dl.google.com/android/repository/sdk-tools-linux-${ANDROID_SDK_REVISION}.zip \ + && echo "${ANDROID_SDK_HASH} sdk-tools-linux-${ANDROID_SDK_REVISION}.zip" | sha256sum -c \ + && unzip sdk-tools-linux-${ANDROID_SDK_REVISION}.zip \ + && rm -f sdk-tools-linux-${ANDROID_SDK_REVISION}.zip + +## INSTALL ANDROID NDK +ENV ANDROID_NDK_REVISION 17b +ENV ANDROID_NDK_HASH 5dfbbdc2d3ba859fed90d0e978af87c71a91a5be1f6e1c40ba697503d48ccecd +RUN curl -s -O https://dl.google.com/android/repository/android-ndk-r${ANDROID_NDK_REVISION}-linux-x86_64.zip \ + && echo "${ANDROID_NDK_HASH} android-ndk-r${ANDROID_NDK_REVISION}-linux-x86_64.zip" | sha256sum -c \ + && unzip android-ndk-r${ANDROID_NDK_REVISION}-linux-x86_64.zip \ + && rm -f android-ndk-r${ANDROID_NDK_REVISION}-linux-x86_64.zip + +ENV WORKDIR /opt/android +ENV ANDROID_SDK_ROOT ${WORKDIR}/tools +ENV ANDROID_NDK_ROOT ${WORKDIR}/android-ndk-r${ANDROID_NDK_REVISION} +ENV PREFIX /opt/android/prefix + +ENV TOOLCHAIN_DIR ${WORKDIR}/toolchain-arm +RUN ${ANDROID_NDK_ROOT}/build/tools/make_standalone_toolchain.py \ + --arch arm \ + --api 21 \ + --install-dir ${TOOLCHAIN_DIR} \ + --stl=libc++ + +#INSTALL cmake +ENV CMAKE_VERSION 3.12.1 +RUN cd /usr \ + && curl -s -O https://cmake.org/files/v3.12/cmake-${CMAKE_VERSION}-Linux-x86_64.tar.gz \ + && tar -xzf /usr/cmake-${CMAKE_VERSION}-Linux-x86_64.tar.gz \ + && rm -f /usr/cmake-${CMAKE_VERSION}-Linux-x86_64.tar.gz +ENV PATH /usr/cmake-${CMAKE_VERSION}-Linux-x86_64/bin:$PATH + +## Boost +ARG BOOST_VERSION=1_68_0 +ARG BOOST_VERSION_DOT=1.68.0 +ARG BOOST_HASH=7f6130bc3cf65f56a618888ce9d5ea704fa10b462be126ad053e80e553d6d8b7 +RUN set -ex \ + && curl -s -L -o boost_${BOOST_VERSION}.tar.bz2 https://dl.bintray.com/boostorg/release/${BOOST_VERSION_DOT}/source/boost_${BOOST_VERSION}.tar.bz2 \ + && echo "${BOOST_HASH} boost_${BOOST_VERSION}.tar.bz2" | sha256sum -c \ + && tar -xvf boost_${BOOST_VERSION}.tar.bz2 \ + && rm -f boost_${BOOST_VERSION}.tar.bz2 \ + && cd boost_${BOOST_VERSION} \ + && ./bootstrap.sh --prefix=${PREFIX} + +ENV HOST_PATH $PATH +ENV PATH $TOOLCHAIN_DIR/arm-linux-androideabi/bin:$TOOLCHAIN_DIR/bin:$PATH + +ARG NPROC=1 + +# Build iconv for lib boost locale +ENV ICONV_VERSION 1.15 +ENV ICONV_HASH ccf536620a45458d26ba83887a983b96827001e92a13847b45e4925cc8913178 +RUN curl -s -O http://ftp.gnu.org/pub/gnu/libiconv/libiconv-${ICONV_VERSION}.tar.gz \ + && echo "${ICONV_HASH} libiconv-${ICONV_VERSION}.tar.gz" | sha256sum -c \ + && tar -xzf libiconv-${ICONV_VERSION}.tar.gz \ + && rm -f libiconv-${ICONV_VERSION}.tar.gz \ + && cd libiconv-${ICONV_VERSION} \ + && CC=arm-linux-androideabi-clang CXX=arm-linux-androideabi-clang++ ./configure --build=x86_64-linux-gnu --host=arm-linux-androideabi --prefix=${PREFIX} --disable-rpath \ + && make -j${NPROC} && make install + +## Build BOOST +RUN cd boost_${BOOST_VERSION} \ + && ./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 -j${NPROC} + +#Note : we build openssl because the default lacks DSA1 + +# download, configure and make Zlib +ENV ZLIB_VERSION 1.2.11 +ENV ZLIB_HASH c3e5e9fdd5004dcb542feda5ee4f0ff0744628baf8ed2dd5d66f8ca1197cb1a1 +RUN curl -s -O https://zlib.net/zlib-${ZLIB_VERSION}.tar.gz \ + && echo "${ZLIB_HASH} zlib-${ZLIB_VERSION}.tar.gz" | sha256sum -c \ + && tar -xzf zlib-${ZLIB_VERSION}.tar.gz \ + && rm zlib-${ZLIB_VERSION}.tar.gz \ + && mv zlib-${ZLIB_VERSION} zlib \ + && cd zlib && CC=clang CXX=clang++ ./configure --static \ + && make -j${NPROC} + +# open ssl +ARG OPENSSL_VERSION=1.0.2p +ARG OPENSSL_HASH=50a98e07b1a89eb8f6a99477f262df71c6fa7bef77df4dc83025a2845c827d00 +RUN curl -s -O https://www.openssl.org/source/openssl-${OPENSSL_VERSION}.tar.gz \ + && echo "${OPENSSL_HASH} openssl-${OPENSSL_VERSION}.tar.gz" | sha256sum -c \ + && tar -xzf openssl-${OPENSSL_VERSION}.tar.gz \ + && rm openssl-${OPENSSL_VERSION}.tar.gz \ + && cd openssl-${OPENSSL_VERSION} \ + && sed -i -e "s/mandroid/target\ armv7\-none\-linux\-androideabi/" Configure \ + && CC=clang CXX=clang++ \ + ./Configure android-armv7 \ + no-asm \ + no-shared --static \ + --with-zlib-include=${WORKDIR}/zlib/include --with-zlib-lib=${WORKDIR}/zlib/lib \ + --prefix=${PREFIX} --openssldir=${PREFIX} \ + && make -j${NPROC} \ + && make install + +# ZMQ +ARG ZMQ_VERSION=v4.2.5 +ARG ZMQ_HASH=d062edd8c142384792955796329baf1e5a3377cd +RUN git clone https://github.com/zeromq/libzmq.git -b ${ZMQ_VERSION} \ + && cd libzmq \ + && test `git rev-parse HEAD` = ${ZMQ_HASH} || exit 1 \ + && ./autogen.sh \ + && CC=clang CXX=clang++ ./configure --prefix=${PREFIX} --host=arm-linux-androideabi --enable-static --disable-shared \ + && make -j${NPROC} \ + && make install + +# Sodium +ARG SODIUM_VERSION=1.0.16 +ARG SODIUM_HASH=675149b9b8b66ff44152553fb3ebf9858128363d +RUN set -ex \ + && git clone https://github.com/jedisct1/libsodium.git -b ${SODIUM_VERSION} \ + && cd libsodium \ + && test `git rev-parse HEAD` = ${SODIUM_HASH} || exit 1 \ + && ./autogen.sh \ + && CC=clang CXX=clang++ ./configure --prefix=${PREFIX} --host=arm-linux-androideabi --enable-static --disable-shared \ + && make -j${NPROC} \ + && make install + +COPY . /src +ARG NPROC=4 +RUN set -ex \ + && cd /src \ + && CMAKE_INCLUDE_PATH="${PREFIX}/include" \ + CMAKE_LIBRARY_PATH="${PREFIX}/lib" \ + ANDROID_STANDALONE_TOOLCHAIN_PATH=${TOOLCHAIN_DIR} \ + USE_SINGLE_BUILDDIR=1 \ + PATH=${HOST_PATH} make release-static-android-armv7-wallet_api -j${NPROC} + +RUN set -ex \ + && cd /src/build/release \ + && find . -path ./lib -prune -o -name '*.a' -exec cp '{}' lib \; diff --git a/external-libs/android32_x86.Dockerfile b/external-libs/android32_x86.Dockerfile new file mode 100644 index 0000000..3cded27 --- /dev/null +++ b/external-libs/android32_x86.Dockerfile @@ -0,0 +1,140 @@ +FROM debian:stable + +RUN apt-get update && apt-get install -y unzip automake build-essential curl file pkg-config git python libtool libtinfo5 + +WORKDIR /opt/android +## INSTALL ANDROID SDK +ENV ANDROID_SDK_REVISION 4333796 +ENV ANDROID_SDK_HASH 92ffee5a1d98d856634e8b71132e8a95d96c83a63fde1099be3d86df3106def9 +RUN curl -s -O https://dl.google.com/android/repository/sdk-tools-linux-${ANDROID_SDK_REVISION}.zip \ + && echo "${ANDROID_SDK_HASH} sdk-tools-linux-${ANDROID_SDK_REVISION}.zip" | sha256sum -c \ + && unzip sdk-tools-linux-${ANDROID_SDK_REVISION}.zip \ + && rm -f sdk-tools-linux-${ANDROID_SDK_REVISION}.zip + +## INSTALL ANDROID NDK +ENV ANDROID_NDK_REVISION 17b +ENV ANDROID_NDK_HASH 5dfbbdc2d3ba859fed90d0e978af87c71a91a5be1f6e1c40ba697503d48ccecd +RUN curl -s -O https://dl.google.com/android/repository/android-ndk-r${ANDROID_NDK_REVISION}-linux-x86_64.zip \ + && echo "${ANDROID_NDK_HASH} android-ndk-r${ANDROID_NDK_REVISION}-linux-x86_64.zip" | sha256sum -c \ + && unzip android-ndk-r${ANDROID_NDK_REVISION}-linux-x86_64.zip \ + && rm -f android-ndk-r${ANDROID_NDK_REVISION}-linux-x86_64.zip + +ENV WORKDIR /opt/android +ENV ANDROID_SDK_ROOT ${WORKDIR}/tools +ENV ANDROID_NDK_ROOT ${WORKDIR}/android-ndk-r${ANDROID_NDK_REVISION} +ENV PREFIX /opt/android/prefix + +ENV TOOLCHAIN_DIR ${WORKDIR}/toolchain +RUN ${ANDROID_NDK_ROOT}/build/tools/make_standalone_toolchain.py \ + --arch x86 \ + --api 21 \ + --install-dir ${TOOLCHAIN_DIR} \ + --stl=libc++ + +#INSTALL cmake +ENV CMAKE_VERSION 3.12.1 +RUN cd /usr \ + && curl -s -O https://cmake.org/files/v3.12/cmake-${CMAKE_VERSION}-Linux-x86_64.tar.gz \ + && tar -xzf /usr/cmake-${CMAKE_VERSION}-Linux-x86_64.tar.gz \ + && rm -f /usr/cmake-${CMAKE_VERSION}-Linux-x86_64.tar.gz +ENV PATH /usr/cmake-${CMAKE_VERSION}-Linux-x86_64/bin:$PATH + +## Boost +ARG BOOST_VERSION=1_68_0 +ARG BOOST_VERSION_DOT=1.68.0 +ARG BOOST_HASH=7f6130bc3cf65f56a618888ce9d5ea704fa10b462be126ad053e80e553d6d8b7 +RUN set -ex \ + && curl -s -L -o boost_${BOOST_VERSION}.tar.bz2 https://dl.bintray.com/boostorg/release/${BOOST_VERSION_DOT}/source/boost_${BOOST_VERSION}.tar.bz2 \ + && echo "${BOOST_HASH} boost_${BOOST_VERSION}.tar.bz2" | sha256sum -c \ + && tar -xvf boost_${BOOST_VERSION}.tar.bz2 \ + && rm -f boost_${BOOST_VERSION}.tar.bz2 \ + && cd boost_${BOOST_VERSION} \ + && ./bootstrap.sh --prefix=${PREFIX} + +ENV HOST_PATH $PATH +ENV PATH $TOOLCHAIN_DIR/i686-linux-android/bin:$TOOLCHAIN_DIR/bin:$PATH + +ARG NPROC=1 + +# Build iconv for lib boost locale +ENV ICONV_VERSION 1.15 +ENV ICONV_HASH ccf536620a45458d26ba83887a983b96827001e92a13847b45e4925cc8913178 +RUN curl -s -O http://ftp.gnu.org/pub/gnu/libiconv/libiconv-${ICONV_VERSION}.tar.gz \ + && echo "${ICONV_HASH} libiconv-${ICONV_VERSION}.tar.gz" | sha256sum -c \ + && tar -xzf libiconv-${ICONV_VERSION}.tar.gz \ + && rm -f libiconv-${ICONV_VERSION}.tar.gz \ + && cd libiconv-${ICONV_VERSION} \ + && CC=i686-linux-android-clang CXX=i686-linux-android-clang++ ./configure --build=x86_64-linux-gnu --host=i686-linux-android --prefix=${PREFIX} --disable-rpath \ + && make -j${NPROC} && make install + +## Build BOOST +RUN cd boost_${BOOST_VERSION} \ + && ./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 -j${NPROC} + +#Note : we build openssl because the default lacks DSA1 + +# download, configure and make Zlib +ENV ZLIB_VERSION 1.2.11 +ENV ZLIB_HASH c3e5e9fdd5004dcb542feda5ee4f0ff0744628baf8ed2dd5d66f8ca1197cb1a1 +RUN curl -s -O https://zlib.net/zlib-${ZLIB_VERSION}.tar.gz \ + && echo "${ZLIB_HASH} zlib-${ZLIB_VERSION}.tar.gz" | sha256sum -c \ + && tar -xzf zlib-${ZLIB_VERSION}.tar.gz \ + && rm zlib-${ZLIB_VERSION}.tar.gz \ + && mv zlib-${ZLIB_VERSION} zlib \ + && cd zlib && CC=clang CXX=clang++ ./configure --static \ + && make -j${NPROC} + +# open ssl +ARG OPENSSL_VERSION=1.0.2p +ARG OPENSSL_HASH=50a98e07b1a89eb8f6a99477f262df71c6fa7bef77df4dc83025a2845c827d00 +RUN curl -s -O https://www.openssl.org/source/openssl-${OPENSSL_VERSION}.tar.gz \ + && echo "${OPENSSL_HASH} openssl-${OPENSSL_VERSION}.tar.gz" | sha256sum -c \ + && tar -xzf openssl-${OPENSSL_VERSION}.tar.gz \ + && rm openssl-${OPENSSL_VERSION}.tar.gz \ + && cd openssl-${OPENSSL_VERSION} \ + && sed -i -e "s/mandroid/target\ i686\-linux\-android/" Configure \ + && CC=clang CXX=clang++ \ + ./Configure android \ + no-asm \ + no-shared --static \ + --with-zlib-include=${WORKDIR}/zlib/include --with-zlib-lib=${WORKDIR}/zlib/lib \ + --prefix=${PREFIX} --openssldir=${PREFIX} \ + && make -j${NPROC} \ + && make install + +# ZMQ +ARG ZMQ_VERSION=master +ARG ZMQ_HASH=501d0815bf2b0abb93be8214fc66519918ef6c40 +RUN git clone https://github.com/zeromq/libzmq.git -b ${ZMQ_VERSION} \ + && cd libzmq \ + && git checkout ${ZMQ_HASH} \ + && ./autogen.sh \ + && CC=clang CXX=clang++ ./configure --prefix=${PREFIX} --host=x86-linux-android --enable-static --disable-shared \ + && make -j${NPROC} \ + && make install + +# Sodium +ARG SODIUM_VERSION=1.0.16 +ARG SODIUM_HASH=675149b9b8b66ff44152553fb3ebf9858128363d +RUN set -ex \ + && git clone https://github.com/jedisct1/libsodium.git -b ${SODIUM_VERSION} \ + && cd libsodium \ + && test `git rev-parse HEAD` = ${SODIUM_HASH} || exit 1 \ + && ./autogen.sh \ + && CC=clang CXX=clang++ ./configure --prefix=${PREFIX} --host=x86-linux-android --enable-static --disable-shared \ + && make -j${NPROC} \ + && make install + +COPY . /src +ARG NPROC=4 +RUN set -ex \ + && cd /src \ + && CMAKE_INCLUDE_PATH="${PREFIX}/include" \ + CMAKE_LIBRARY_PATH="${PREFIX}/lib" \ + ANDROID_STANDALONE_TOOLCHAIN_PATH=${TOOLCHAIN_DIR} \ + USE_SINGLE_BUILDDIR=1 \ + PATH=${HOST_PATH} make release-static-android-x86-wallet_api -j${NPROC} + +RUN set -ex \ + && cd /src/build/release \ + && find . -path ./lib -prune -o -name '*.a' -exec cp '{}' lib \; diff --git a/external-libs/android64.Dockerfile b/external-libs/android64.Dockerfile new file mode 100644 index 0000000..e80b4d7 --- /dev/null +++ b/external-libs/android64.Dockerfile @@ -0,0 +1,140 @@ +FROM debian:stable + +RUN apt-get update && apt-get install -y unzip automake build-essential curl file pkg-config git python libtool libtinfo5 + +WORKDIR /opt/android +## INSTALL ANDROID SDK +ENV ANDROID_SDK_REVISION 4333796 +ENV ANDROID_SDK_HASH 92ffee5a1d98d856634e8b71132e8a95d96c83a63fde1099be3d86df3106def9 +RUN curl -s -O https://dl.google.com/android/repository/sdk-tools-linux-${ANDROID_SDK_REVISION}.zip \ + && echo "${ANDROID_SDK_HASH} sdk-tools-linux-${ANDROID_SDK_REVISION}.zip" | sha256sum -c \ + && unzip sdk-tools-linux-${ANDROID_SDK_REVISION}.zip \ + && rm -f sdk-tools-linux-${ANDROID_SDK_REVISION}.zip + +## INSTALL ANDROID NDK +ENV ANDROID_NDK_REVISION 17b +ENV ANDROID_NDK_HASH 5dfbbdc2d3ba859fed90d0e978af87c71a91a5be1f6e1c40ba697503d48ccecd +RUN curl -s -O https://dl.google.com/android/repository/android-ndk-r${ANDROID_NDK_REVISION}-linux-x86_64.zip \ + && echo "${ANDROID_NDK_HASH} android-ndk-r${ANDROID_NDK_REVISION}-linux-x86_64.zip" | sha256sum -c \ + && unzip android-ndk-r${ANDROID_NDK_REVISION}-linux-x86_64.zip \ + && rm -f android-ndk-r${ANDROID_NDK_REVISION}-linux-x86_64.zip + +ENV WORKDIR /opt/android +ENV ANDROID_SDK_ROOT ${WORKDIR}/tools +ENV ANDROID_NDK_ROOT ${WORKDIR}/android-ndk-r${ANDROID_NDK_REVISION} +ENV PREFIX /opt/android/prefix + +ENV TOOLCHAIN_DIR ${WORKDIR}/toolchain-arm +RUN ${ANDROID_NDK_ROOT}/build/tools/make_standalone_toolchain.py \ + --arch arm64 \ + --api 21 \ + --install-dir ${TOOLCHAIN_DIR} \ + --stl=libc++ + +#INSTALL cmake +ENV CMAKE_VERSION 3.12.1 +RUN cd /usr \ + && curl -s -O https://cmake.org/files/v3.12/cmake-${CMAKE_VERSION}-Linux-x86_64.tar.gz \ + && tar -xzf /usr/cmake-${CMAKE_VERSION}-Linux-x86_64.tar.gz \ + && rm -f /usr/cmake-${CMAKE_VERSION}-Linux-x86_64.tar.gz +ENV PATH /usr/cmake-${CMAKE_VERSION}-Linux-x86_64/bin:$PATH + +## Boost +ARG BOOST_VERSION=1_68_0 +ARG BOOST_VERSION_DOT=1.68.0 +ARG BOOST_HASH=7f6130bc3cf65f56a618888ce9d5ea704fa10b462be126ad053e80e553d6d8b7 +RUN set -ex \ + && curl -s -L -o boost_${BOOST_VERSION}.tar.bz2 https://dl.bintray.com/boostorg/release/${BOOST_VERSION_DOT}/source/boost_${BOOST_VERSION}.tar.bz2 \ + && echo "${BOOST_HASH} boost_${BOOST_VERSION}.tar.bz2" | sha256sum -c \ + && tar -xvf boost_${BOOST_VERSION}.tar.bz2 \ + && rm -f boost_${BOOST_VERSION}.tar.bz2 \ + && cd boost_${BOOST_VERSION} \ + && ./bootstrap.sh --prefix=${PREFIX} + +ENV HOST_PATH $PATH +ENV PATH $TOOLCHAIN_DIR/aarch64-linux-android/bin:$TOOLCHAIN_DIR/bin:$PATH + +ARG NPROC=1 + +# Build iconv for lib boost locale +ENV ICONV_VERSION 1.15 +ENV ICONV_HASH ccf536620a45458d26ba83887a983b96827001e92a13847b45e4925cc8913178 +RUN curl -s -O http://ftp.gnu.org/pub/gnu/libiconv/libiconv-${ICONV_VERSION}.tar.gz \ + && echo "${ICONV_HASH} libiconv-${ICONV_VERSION}.tar.gz" | sha256sum -c \ + && tar -xzf libiconv-${ICONV_VERSION}.tar.gz \ + && rm -f libiconv-${ICONV_VERSION}.tar.gz \ + && cd libiconv-${ICONV_VERSION} \ + && CC=aarch64-linux-android-clang CXX=aarch64-linux-android-clang++ ./configure --build=x86_64-linux-gnu --host=aarch64-linux-android --prefix=${PREFIX} --disable-rpath \ + && make -j${NPROC} && make install + +## Build BOOST +RUN cd boost_${BOOST_VERSION} \ + && ./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 -j${NPROC} + +#Note : we build openssl because the default lacks DSA1 + +# download, configure and make Zlib +ENV ZLIB_VERSION 1.2.11 +ENV ZLIB_HASH c3e5e9fdd5004dcb542feda5ee4f0ff0744628baf8ed2dd5d66f8ca1197cb1a1 +RUN curl -s -O https://zlib.net/zlib-${ZLIB_VERSION}.tar.gz \ + && echo "${ZLIB_HASH} zlib-${ZLIB_VERSION}.tar.gz" | sha256sum -c \ + && tar -xzf zlib-${ZLIB_VERSION}.tar.gz \ + && rm zlib-${ZLIB_VERSION}.tar.gz \ + && mv zlib-${ZLIB_VERSION} zlib \ + && cd zlib && CC=clang CXX=clang++ ./configure --static \ + && make -j${NPROC} + +# open ssl +ARG OPENSSL_VERSION=1.0.2p +ARG OPENSSL_HASH=50a98e07b1a89eb8f6a99477f262df71c6fa7bef77df4dc83025a2845c827d00 +RUN curl -s -O https://www.openssl.org/source/openssl-${OPENSSL_VERSION}.tar.gz \ + && echo "${OPENSSL_HASH} openssl-${OPENSSL_VERSION}.tar.gz" | sha256sum -c \ + && tar -xzf openssl-${OPENSSL_VERSION}.tar.gz \ + && rm openssl-${OPENSSL_VERSION}.tar.gz \ + && cd openssl-${OPENSSL_VERSION} \ + && sed -i -e "s/mandroid/target\ aarch64\-linux\-android/" Configure \ + && CC=clang CXX=clang++ \ + ./Configure android \ + no-asm \ + no-shared --static \ + --with-zlib-include=${WORKDIR}/zlib/include --with-zlib-lib=${WORKDIR}/zlib/lib \ + --prefix=${PREFIX} --openssldir=${PREFIX} \ + && make -j${NPROC} \ + && make install + +# ZMQ +ARG ZMQ_VERSION=master +ARG ZMQ_HASH=501d0815bf2b0abb93be8214fc66519918ef6c40 +RUN git clone https://github.com/zeromq/libzmq.git -b ${ZMQ_VERSION} \ + && cd libzmq \ + && git checkout ${ZMQ_HASH} \ + && ./autogen.sh \ + && CC=clang CXX=clang++ ./configure --prefix=${PREFIX} --host=aarch64-linux-android --enable-static --disable-shared \ + && make -j${NPROC} \ + && make install + +# Sodium +ARG SODIUM_VERSION=1.0.16 +ARG SODIUM_HASH=675149b9b8b66ff44152553fb3ebf9858128363d +RUN set -ex \ + && git clone https://github.com/jedisct1/libsodium.git -b ${SODIUM_VERSION} \ + && cd libsodium \ + && test `git rev-parse HEAD` = ${SODIUM_HASH} || exit 1 \ + && ./autogen.sh \ + && CC=clang CXX=clang++ ./configure --prefix=${PREFIX} --host=aarch64-linux-android --enable-static --disable-shared \ + && make -j${NPROC} \ + && make install + +COPY . /src +ARG NPROC=4 +RUN set -ex \ + && cd /src \ + && CMAKE_INCLUDE_PATH="${PREFIX}/include" \ + CMAKE_LIBRARY_PATH="${PREFIX}/lib" \ + ANDROID_STANDALONE_TOOLCHAIN_PATH=${TOOLCHAIN_DIR} \ + USE_SINGLE_BUILDDIR=1 \ + PATH=${HOST_PATH} make release-static-android-armv8-wallet_api -j${NPROC} + +RUN set -ex \ + && cd /src/build/release \ + && find . -path ./lib -prune -o -name '*.a' -exec cp '{}' lib \; diff --git a/external-libs/android64_x86.Dockerfile b/external-libs/android64_x86.Dockerfile new file mode 100644 index 0000000..15441d5 --- /dev/null +++ b/external-libs/android64_x86.Dockerfile @@ -0,0 +1,140 @@ +FROM debian:stable + +RUN apt-get update && apt-get install -y unzip automake build-essential curl file pkg-config git python libtool libtinfo5 + +WORKDIR /opt/android +## INSTALL ANDROID SDK +ENV ANDROID_SDK_REVISION 4333796 +ENV ANDROID_SDK_HASH 92ffee5a1d98d856634e8b71132e8a95d96c83a63fde1099be3d86df3106def9 +RUN curl -s -O https://dl.google.com/android/repository/sdk-tools-linux-${ANDROID_SDK_REVISION}.zip \ + && echo "${ANDROID_SDK_HASH} sdk-tools-linux-${ANDROID_SDK_REVISION}.zip" | sha256sum -c \ + && unzip sdk-tools-linux-${ANDROID_SDK_REVISION}.zip \ + && rm -f sdk-tools-linux-${ANDROID_SDK_REVISION}.zip + +## INSTALL ANDROID NDK +ENV ANDROID_NDK_REVISION 17b +ENV ANDROID_NDK_HASH 5dfbbdc2d3ba859fed90d0e978af87c71a91a5be1f6e1c40ba697503d48ccecd +RUN curl -s -O https://dl.google.com/android/repository/android-ndk-r${ANDROID_NDK_REVISION}-linux-x86_64.zip \ + && echo "${ANDROID_NDK_HASH} android-ndk-r${ANDROID_NDK_REVISION}-linux-x86_64.zip" | sha256sum -c \ + && unzip android-ndk-r${ANDROID_NDK_REVISION}-linux-x86_64.zip \ + && rm -f android-ndk-r${ANDROID_NDK_REVISION}-linux-x86_64.zip + +ENV WORKDIR /opt/android +ENV ANDROID_SDK_ROOT ${WORKDIR}/tools +ENV ANDROID_NDK_ROOT ${WORKDIR}/android-ndk-r${ANDROID_NDK_REVISION} +ENV PREFIX /opt/android/prefix + +ENV TOOLCHAIN_DIR ${WORKDIR}/toolchain +RUN ${ANDROID_NDK_ROOT}/build/tools/make_standalone_toolchain.py \ + --arch x86_64 \ + --api 21 \ + --install-dir ${TOOLCHAIN_DIR} \ + --stl=libc++ + +#INSTALL cmake +ENV CMAKE_VERSION 3.12.1 +RUN cd /usr \ + && curl -s -O https://cmake.org/files/v3.12/cmake-${CMAKE_VERSION}-Linux-x86_64.tar.gz \ + && tar -xzf /usr/cmake-${CMAKE_VERSION}-Linux-x86_64.tar.gz \ + && rm -f /usr/cmake-${CMAKE_VERSION}-Linux-x86_64.tar.gz +ENV PATH /usr/cmake-${CMAKE_VERSION}-Linux-x86_64/bin:$PATH + +## Boost +ARG BOOST_VERSION=1_68_0 +ARG BOOST_VERSION_DOT=1.68.0 +ARG BOOST_HASH=7f6130bc3cf65f56a618888ce9d5ea704fa10b462be126ad053e80e553d6d8b7 +RUN set -ex \ + && curl -s -L -o boost_${BOOST_VERSION}.tar.bz2 https://dl.bintray.com/boostorg/release/${BOOST_VERSION_DOT}/source/boost_${BOOST_VERSION}.tar.bz2 \ + && echo "${BOOST_HASH} boost_${BOOST_VERSION}.tar.bz2" | sha256sum -c \ + && tar -xvf boost_${BOOST_VERSION}.tar.bz2 \ + && rm -f boost_${BOOST_VERSION}.tar.bz2 \ + && cd boost_${BOOST_VERSION} \ + && ./bootstrap.sh --prefix=${PREFIX} + +ENV HOST_PATH $PATH +ENV PATH $TOOLCHAIN_DIR/x86_64-linux-android/bin:$TOOLCHAIN_DIR/bin:$PATH + +ARG NPROC=1 + +# Build iconv for lib boost locale +ENV ICONV_VERSION 1.15 +ENV ICONV_HASH ccf536620a45458d26ba83887a983b96827001e92a13847b45e4925cc8913178 +RUN curl -s -O http://ftp.gnu.org/pub/gnu/libiconv/libiconv-${ICONV_VERSION}.tar.gz \ + && echo "${ICONV_HASH} libiconv-${ICONV_VERSION}.tar.gz" | sha256sum -c \ + && tar -xzf libiconv-${ICONV_VERSION}.tar.gz \ + && rm -f libiconv-${ICONV_VERSION}.tar.gz \ + && cd libiconv-${ICONV_VERSION} \ + && CC=x86_64-linux-android-clang CXX=x86_64-linux-android-clang++ ./configure --build=x86_64-linux-gnu --host=x86_64-linux-android --prefix=${PREFIX} --disable-rpath \ + && make -j${NPROC} && make install + +## Build BOOST +RUN cd boost_${BOOST_VERSION} \ + && ./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 -j${NPROC} + +#Note : we build openssl because the default lacks DSA1 + +# download, configure and make Zlib +ENV ZLIB_VERSION 1.2.11 +ENV ZLIB_HASH c3e5e9fdd5004dcb542feda5ee4f0ff0744628baf8ed2dd5d66f8ca1197cb1a1 +RUN curl -s -O https://zlib.net/zlib-${ZLIB_VERSION}.tar.gz \ + && echo "${ZLIB_HASH} zlib-${ZLIB_VERSION}.tar.gz" | sha256sum -c \ + && tar -xzf zlib-${ZLIB_VERSION}.tar.gz \ + && rm zlib-${ZLIB_VERSION}.tar.gz \ + && mv zlib-${ZLIB_VERSION} zlib \ + && cd zlib && CC=clang CXX=clang++ ./configure --static \ + && make -j${NPROC} + +# open ssl +ARG OPENSSL_VERSION=1.0.2p +ARG OPENSSL_HASH=50a98e07b1a89eb8f6a99477f262df71c6fa7bef77df4dc83025a2845c827d00 +RUN curl -s -O https://www.openssl.org/source/openssl-${OPENSSL_VERSION}.tar.gz \ + && echo "${OPENSSL_HASH} openssl-${OPENSSL_VERSION}.tar.gz" | sha256sum -c \ + && tar -xzf openssl-${OPENSSL_VERSION}.tar.gz \ + && rm openssl-${OPENSSL_VERSION}.tar.gz \ + && cd openssl-${OPENSSL_VERSION} \ + && sed -i -e "s/mandroid/target\ x86_64\-linux\-android/" Configure \ + && CC=clang CXX=clang++ \ + ./Configure android \ + no-asm \ + no-shared --static \ + --with-zlib-include=${WORKDIR}/zlib/include --with-zlib-lib=${WORKDIR}/zlib/lib \ + --prefix=${PREFIX} --openssldir=${PREFIX} \ + && make -j${NPROC} \ + && make install + +# ZMQ +ARG ZMQ_VERSION=master +ARG ZMQ_HASH=501d0815bf2b0abb93be8214fc66519918ef6c40 +RUN git clone https://github.com/zeromq/libzmq.git -b ${ZMQ_VERSION} \ + && cd libzmq \ + && git checkout ${ZMQ_HASH} \ + && ./autogen.sh \ + && CC=clang CXX=clang++ ./configure --prefix=${PREFIX} --host=x86_64-linux-android --enable-static --disable-shared \ + && make -j${NPROC} \ + && make install + +# Sodium +ARG SODIUM_VERSION=1.0.16 +ARG SODIUM_HASH=675149b9b8b66ff44152553fb3ebf9858128363d +RUN set -ex \ + && git clone https://github.com/jedisct1/libsodium.git -b ${SODIUM_VERSION} \ + && cd libsodium \ + && test `git rev-parse HEAD` = ${SODIUM_HASH} || exit 1 \ + && ./autogen.sh \ + && CC=clang CXX=clang++ ./configure --prefix=${PREFIX} --host=x86_64-linux-android --enable-static --disable-shared \ + && make -j${NPROC} \ + && make install + +COPY . /src +ARG NPROC=4 +RUN set -ex \ + && cd /src \ + && CMAKE_INCLUDE_PATH="${PREFIX}/include" \ + CMAKE_LIBRARY_PATH="${PREFIX}/lib" \ + ANDROID_STANDALONE_TOOLCHAIN_PATH=${TOOLCHAIN_DIR} \ + USE_SINGLE_BUILDDIR=1 \ + PATH=${HOST_PATH} make release-static-android-x86_64-wallet_api -j${NPROC} + +RUN set -ex \ + && cd /src/build/release \ + && find . -path ./lib -prune -o -name '*.a' -exec cp '{}' lib \; diff --git a/external-libs/boost/lib/arm64-v8a/.gitignore b/external-libs/boost/lib/arm64-v8a/.gitignore deleted file mode 100644 index 5e7d273..0000000 --- a/external-libs/boost/lib/arm64-v8a/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -# Ignore everything in this directory -* -# Except this file -!.gitignore diff --git a/external-libs/boost/lib/armeabi-v7a/.gitignore b/external-libs/boost/lib/armeabi-v7a/.gitignore deleted file mode 100644 index 5e7d273..0000000 --- a/external-libs/boost/lib/armeabi-v7a/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -# Ignore everything in this directory -* -# Except this file -!.gitignore diff --git a/external-libs/boost/lib/x86/.gitignore b/external-libs/boost/lib/x86/.gitignore deleted file mode 100644 index 5e7d273..0000000 --- a/external-libs/boost/lib/x86/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -# Ignore everything in this directory -* -# Except this file -!.gitignore diff --git a/external-libs/boost/lib/x86_64/.gitignore b/external-libs/boost/lib/x86_64/.gitignore deleted file mode 100644 index 5e7d273..0000000 --- a/external-libs/boost/lib/x86_64/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -# Ignore everything in this directory -* -# Except this file -!.gitignore diff --git a/external-libs/monero/include/wallet2_api.h b/external-libs/include/wallet2_api.h similarity index 100% rename from external-libs/monero/include/wallet2_api.h rename to external-libs/include/wallet2_api.h diff --git a/external-libs/libsodium/lib/arm64-v8a/.gitignore b/external-libs/libsodium/lib/arm64-v8a/.gitignore deleted file mode 100644 index 5e7d273..0000000 --- a/external-libs/libsodium/lib/arm64-v8a/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -# Ignore everything in this directory -* -# Except this file -!.gitignore diff --git a/external-libs/libsodium/lib/armeabi-v7a/.gitignore b/external-libs/libsodium/lib/armeabi-v7a/.gitignore deleted file mode 100644 index 5e7d273..0000000 --- a/external-libs/libsodium/lib/armeabi-v7a/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -# Ignore everything in this directory -* -# Except this file -!.gitignore diff --git a/external-libs/libsodium/lib/x86/.gitignore b/external-libs/libsodium/lib/x86/.gitignore deleted file mode 100644 index 5e7d273..0000000 --- a/external-libs/libsodium/lib/x86/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -# Ignore everything in this directory -* -# Except this file -!.gitignore diff --git a/external-libs/libsodium/lib/x86_64/.gitignore b/external-libs/libsodium/lib/x86_64/.gitignore deleted file mode 100644 index 5e7d273..0000000 --- a/external-libs/libsodium/lib/x86_64/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -# Ignore everything in this directory -* -# Except this file -!.gitignore diff --git a/external-libs/openssl/lib/arm64-v8a/.gitignore b/external-libs/openssl/lib/arm64-v8a/.gitignore deleted file mode 100644 index 5e7d273..0000000 --- a/external-libs/openssl/lib/arm64-v8a/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -# Ignore everything in this directory -* -# Except this file -!.gitignore diff --git a/external-libs/openssl/lib/armeabi-v7a/.gitignore b/external-libs/openssl/lib/armeabi-v7a/.gitignore deleted file mode 100644 index 5e7d273..0000000 --- a/external-libs/openssl/lib/armeabi-v7a/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -# Ignore everything in this directory -* -# Except this file -!.gitignore diff --git a/external-libs/openssl/lib/x86/.gitignore b/external-libs/openssl/lib/x86/.gitignore deleted file mode 100644 index 5e7d273..0000000 --- a/external-libs/openssl/lib/x86/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -# Ignore everything in this directory -* -# Except this file -!.gitignore diff --git a/external-libs/openssl/lib/x86_64/.gitignore b/external-libs/openssl/lib/x86_64/.gitignore deleted file mode 100644 index 5e7d273..0000000 --- a/external-libs/openssl/lib/x86_64/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -# Ignore everything in this directory -* -# Except this file -!.gitignore diff --git a/external-libs/script/android-openssl/build-all-arch.sh b/external-libs/script/android-openssl/build-all-arch.sh deleted file mode 100755 index 29ca84e..0000000 --- a/external-libs/script/android-openssl/build-all-arch.sh +++ /dev/null @@ -1,87 +0,0 @@ -#!/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 - diff --git a/external-libs/script/android-openssl/setenv-android-mod.sh b/external-libs/script/android-openssl/setenv-android-mod.sh deleted file mode 100755 index bdda180..0000000 --- a/external-libs/script/android-openssl/setenv-android-mod.sh +++ /dev/null @@ -1,269 +0,0 @@ -#!/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 diff --git a/external-libs/script/boost-build.sh b/external-libs/script/boost-build.sh deleted file mode 100755 index c5113aa..0000000 --- a/external-libs/script/boost-build.sh +++ /dev/null @@ -1,50 +0,0 @@ -#!/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 diff --git a/external-libs/script/boost-fetch.sh b/external-libs/script/boost-fetch.sh deleted file mode 100755 index ed37806..0000000 --- a/external-libs/script/boost-fetch.sh +++ /dev/null @@ -1,18 +0,0 @@ -#!/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 diff --git a/external-libs/script/clean.sh b/external-libs/script/clean.sh deleted file mode 100755 index aa91863..0000000 --- a/external-libs/script/clean.sh +++ /dev/null @@ -1,8 +0,0 @@ -#!/usr/bin/env bash - -set -e - -source script/env.sh - -rm -rf $EXTERNAL_LIBS_BUILD -mkdir -p $EXTERNAL_LIBS_BUILD/src diff --git a/external-libs/script/env.sh b/external-libs/script/env.sh deleted file mode 100755 index 6dffc80..0000000 --- a/external-libs/script/env.sh +++ /dev/null @@ -1,20 +0,0 @@ -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%/} diff --git a/external-libs/script/install.sh b/external-libs/script/install.sh deleted file mode 100755 index 9e7c090..0000000 --- a/external-libs/script/install.sh +++ /dev/null @@ -1,44 +0,0 @@ -#!/bin/bash -# -# -D BOOST_ROOT=/opt/android/boost_1_58_0 - -set -e - -packages=(boost openssl monero libsodium) -archs=(arm arm64 x86 x86_64) - -for arch in ${archs[@]}; do - case ${arch} in - "arm") - xarch="armeabi-v7a" - ;; - "arm64") - xarch="arm64-v8a" - ;; - "x86") - xarch="x86" - ;; - "x86_64") - xarch="x86_64" - ;; - *) - exit 16 - ;; - 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 $INPUT_DIR/$arch/lib/*.a $OUTPUT_DIR - - if [ $package = "monero" ]; then - rm -rf $OUTPUT_DIR/../../include - cp -a $INPUT_DIR/include $OUTPUT_DIR/../.. - fi - - done -done -exit 0 - diff --git a/external-libs/script/libsodium-build.sh b/external-libs/script/libsodium-build.sh deleted file mode 100755 index 8736e2d..0000000 --- a/external-libs/script/libsodium-build.sh +++ /dev/null @@ -1,55 +0,0 @@ -#!/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 diff --git a/external-libs/script/libsodium-fetch.sh b/external-libs/script/libsodium-fetch.sh deleted file mode 100755 index 511fab0..0000000 --- a/external-libs/script/libsodium-fetch.sh +++ /dev/null @@ -1,16 +0,0 @@ -#!/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 diff --git a/external-libs/script/monero-build.sh b/external-libs/script/monero-build.sh deleted file mode 100755 index 09d021d..0000000 --- a/external-libs/script/monero-build.sh +++ /dev/null @@ -1,102 +0,0 @@ -#!/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 - echo "$TARGET_LIB_DIR/libwallet_api.a exists" - 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 USE_DEVICE_TREZOR=OFF \ - -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 $base_dir/src/wallet/api/wallet2_api.h $TARGET_INC_DIR - - cd $base_dir -done - -exit 0 diff --git a/external-libs/script/monero-fetch.sh b/external-libs/script/monero-fetch.sh deleted file mode 100755 index fbe4bc2..0000000 --- a/external-libs/script/monero-fetch.sh +++ /dev/null @@ -1,22 +0,0 @@ -#!/usr/bin/env bash - -set -e - -source script/env.sh - -cd $EXTERNAL_LIBS_BUILD_ROOT - -url="https://github.com/m2049r/monero" -version="release-v0.17.1.3-monerujo" - -if [ ! -d "monero" ]; then - git clone ${url} -b ${version} - cd monero - git submodule update --recursive --init -else - cd monero - git fetch - git checkout ${version} - git pull - git submodule update --recursive --init -fi diff --git a/external-libs/script/openssl-build.sh b/external-libs/script/openssl-build.sh deleted file mode 100755 index df9407d..0000000 --- a/external-libs/script/openssl-build.sh +++ /dev/null @@ -1,9 +0,0 @@ -#!/usr/bin/env bash - -set -e - -source script/env.sh - -cd $EXTERNAL_LIBS_BUILD_ROOT/android-openssl - -./build-all-arch.sh diff --git a/external-libs/script/openssl-fetch.sh b/external-libs/script/openssl-fetch.sh deleted file mode 100755 index 2695d06..0000000 --- a/external-libs/script/openssl-fetch.sh +++ /dev/null @@ -1,16 +0,0 @@ -#!/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 diff --git a/external-libs/script/openssl-install.sh b/external-libs/script/openssl-install.sh deleted file mode 100755 index f7f9dd5..0000000 --- a/external-libs/script/openssl-install.sh +++ /dev/null @@ -1,20 +0,0 @@ -#!/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 diff --git a/external-libs/script/openssl-patch.sh b/external-libs/script/openssl-patch.sh deleted file mode 100755 index 2c790d6..0000000 --- a/external-libs/script/openssl-patch.sh +++ /dev/null @@ -1,7 +0,0 @@ -#!/usr/bin/env bash - -set -e - -source script/env.sh - -cp -a script/android-openssl $EXTERNAL_LIBS_BUILD_ROOT diff --git a/external-libs/script/toolchain-build.sh b/external-libs/script/toolchain-build.sh deleted file mode 100755 index d4804af..0000000 --- a/external-libs/script/toolchain-build.sh +++ /dev/null @@ -1,20 +0,0 @@ -#!/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