diff options
| author | Alexander Blair <snipa@jagtech.io> | 2020-10-28 00:42:35 -0700 |
|---|---|---|
| committer | Alexander Blair <snipa@jagtech.io> | 2020-10-28 00:42:36 -0700 |
| commit | c9fd9634ee7b2fec90778a21e93935c62cd90788 (patch) | |
| tree | 641a369d49ac338007e2415a8ee9372e6d5abb7f /android/docker | |
| parent | ddcee95b88c5628c88b90f7fc2317981f4e72652 (diff) | |
| parent | cd054f6c26c27964425ec7d93de99821e6309fc2 (diff) | |
| download | monzero-gui-c9fd9634ee7b2fec90778a21e93935c62cd90788.tar.gz monzero-gui-c9fd9634ee7b2fec90778a21e93935c62cd90788.tar.xz monzero-gui-c9fd9634ee7b2fec90778a21e93935c62cd90788.zip | |
Merge pull request #3187
cd054f6c docker: fix Android build, update to Qt 5.15, README.md build steps (xiphon)
d6cb9b6c docker: move Android Dockerfile to root (xiphon)
Diffstat (limited to 'android/docker')
| -rw-r--r-- | android/docker/Dockerfile | 107 | ||||
| -rw-r--r-- | android/docker/android.mk.patch | 61 | ||||
| -rw-r--r-- | android/docker/androiddeployqt.patch | 62 |
3 files changed, 0 insertions, 230 deletions
diff --git a/android/docker/Dockerfile b/android/docker/Dockerfile deleted file mode 100644 index 286e3baf..00000000 --- a/android/docker/Dockerfile +++ /dev/null @@ -1,107 +0,0 @@ -FROM monero-android - -#INSTALL JAVA -RUN echo "deb http://ftp.fr.debian.org/debian/ jessie-backports main contrib non-free" >> /etc/apt/sources.list -RUN dpkg --add-architecture i386 \ - && apt-get update \ - && apt-get install -y libc6:i386 libncurses5:i386 libstdc++6:i386 libz1:i386 \ - && apt-get install -y -t jessie-backports ca-certificates-java openjdk-8-jdk-headless openjdk-8-jre-headless ant -ENV JAVA_HOME /usr/lib/jvm/java-8-openjdk-amd64 -ENV PATH $JAVA_HOME/bin:$PATH - -#Get Qt -ENV QT_VERSION 5.8 - -RUN git clone git://code.qt.io/qt/qt5.git -b ${QT_VERSION} \ - && cd qt5 \ - && perl init-repository - -## Note: Need to use libc++ but Qt does not provide mkspec for libc++. -## Their support of it is quite recent and they claim they don't use it by default -## [only because it produces bigger binary objects](https://bugreports.qt.io/browse/QTBUG-50724). - -#Create new mkspec for clang + libc++ -RUN cp -r qt5/qtbase/mkspecs/android-clang qt5/qtbase/mkspecs/android-clang-libc \ - && cd qt5/qtbase/mkspecs/android-clang-libc \ - && sed -i '16i ANDROID_SOURCES_CXX_STL_LIBDIR = $$NDK_ROOT/sources/cxx-stl/llvm-libc++/libs/$$ANDROID_TARGET_ARCH' qmake.conf \ - && sed -i '17i ANDROID_SOURCES_CXX_STL_INCDIR = $$NDK_ROOT/sources/cxx-stl/llvm-libc++/include' qmake.conf \ - && echo "QMAKE_LIBS_PRIVATE = -lc++_shared -llog -lz -lm -ldl -lc -lgcc " >> qmake.conf \ - && echo "QMAKE_CFLAGS -= -mfpu=vfp " >> qmake.conf \ - && echo "QMAKE_CXXFLAGS -= -mfpu=vfp " >> qmake.conf \ - && echo "QMAKE_CFLAGS += -mfpu=vfp4 " >> qmake.conf \ - && echo "QMAKE_CXXFLAGS += -mfpu=vfp4 " >> qmake.conf - -ENV ANDROID_API android-21 - -#ANDROID SDK TOOLS -RUN echo y | $ANDROID_SDK_ROOT/tools/android update sdk --no-ui --all --filter platform-tools -RUN echo y | $ANDROID_SDK_ROOT/tools/android update sdk --no-ui --all --filter ${ANDROID_API} -RUN echo y | $ANDROID_SDK_ROOT/tools/android update sdk --no-ui --all --filter build-tools-25.0.1 - -ENV CLEAN_PATH $JAVA_HOME/bin:/usr/cmake-3.6.3-Linux-x86_64/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin - -#build Qt -RUN cd qt5 && PATH=${CLEAN_PATH} ./configure -developer-build -release \ - -xplatform android-clang-libc \ - -android-ndk-platform ${ANDROID_API} \ - -android-ndk $ANDROID_NDK_ROOT \ - -android-sdk $ANDROID_SDK_ROOT \ - -opensource -confirm-license \ - -prefix ${WORKDIR}/Qt-${QT_VERSION} \ - -nomake tests -nomake examples \ - -skip qtserialport \ - -skip qtconnectivity \ - -skip qttranslations \ - -skip qtgamepad -skip qtscript -skip qtdoc - -# build Qt tools : gnustl_shared.so is hard-coded in androiddeployqt -# replace it with libc++_shared.so -COPY androiddeployqt.patch qt5/qttools/androiddeployqt.patch -RUN cd qt5/qttools \ - && git apply androiddeployqt.patch \ - && cd .. \ - && PATH=${CLEAN_PATH} make -j4 \ - && PATH=${CLEAN_PATH} make install - -# Get iconv and ZBar -ENV ICONV_VERSION 1.14 -RUN git clone https://github.com/ZBar/ZBar.git \ - && curl -s -O http://ftp.gnu.org/pub/gnu/libiconv/libiconv-${ICONV_VERSION}.tar.gz \ - && tar -xzf 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-eabi --prefix=${WORKDIR}/libiconv --disable-rpath - -ENV PATH $ANDROID_SDK_ROOT/tools:$ANDROID_SDK_ROOT/platform-tools:${WORKDIR}/Qt-${QT_VERSION}/bin:$PATH - -#Build libiconv.a and libzbarjni.a -COPY android.mk.patch ZBar/android.mk.patch -RUN cd ZBar \ - && git apply android.mk.patch \ - && echo \ -"APP_ABI := armeabi-v7a \n\ -APP_STL := c++_shared \n\ -TARGET_PLATFORM := ${ANDROID_API} \n\ -TARGET_ARCH_ABI := armeabi-v7a \n\ -APP_CFLAGS += -target armv7-none-linux-androideabi -fexceptions -fstack-protector-strong -fno-limit-debug-info -mfloat-abi=softfp -mfpu=vfp -fno-builtin-memmove -fno-omit-frame-pointer -fno-stack-protector\n"\ - >> android/jni/Application.mk \ - && cd android \ - && android update project --path . -t "${ANDROID_API}" \ - && CC=arm-linux-androideabi-clang CXX=arm-linux-androideabi-clang++ ant -Dndk.dir=${ANDROID_NDK_ROOT} -Diconv.src=${WORKDIR}/libiconv-${ICONV_VERSION} zbar-clean zbar-ndk-build - -RUN cp openssl/lib* ${ANDROID_NDK_ROOT}/platforms/${ANDROID_API}/arch-arm/usr/lib -RUN cp boost_${BOOST_VERSION}/android32/lib/lib* ${ANDROID_NDK_ROOT}/platforms/${ANDROID_API}/arch-arm/usr/lib -RUN cp ZBar/android/obj/local/armeabi-v7a/lib* ${ANDROID_NDK_ROOT}/platforms/${ANDROID_API}/arch-arm/usr/lib - -RUN git clone https://github.com/monero-project/monero-gui.git \ - && cd monero-gui \ - && git submodule update \ - && CC=arm-linux-androideabi-clang CXX=arm-linux-androideabi-clang++ BOOST_ROOT=/opt/android/boost_1_62_0 \ - BOOST_LIBRARYDIR=${WORKDIR}/boost_${BOOST_VERSION}/android32/lib/ \ - OPENSSL_ROOT_DIR=${WORKDIR}/openssl/ \ - CMAKE_INCLUDE_PATH=${WORKDIR}/cppzmq/ \ - CMAKE_LIBRARY_PATH=${WORKDIR}/zeromq4-1/.libs \ - CXXFLAGS="-I ${WORKDIR}/zeromq4-1/include/" \ - ./build.sh release-android \ - && cd build \ - && make deploy - diff --git a/android/docker/android.mk.patch b/android/docker/android.mk.patch deleted file mode 100644 index 9fd7f172..00000000 --- a/android/docker/android.mk.patch +++ /dev/null @@ -1,61 +0,0 @@ -diff --git a/android/jni/Android.mk b/android/jni/Android.mk -index e442b07..158afd5 100644 ---- a/android/jni/Android.mk -+++ b/android/jni/Android.mk -@@ -12,14 +12,18 @@ LOCAL_PATH := $(ICONV_SRC) - - LOCAL_MODULE := libiconv - -+LOCAL_ARM_MODE := arm -+LOCAL_CPP_FEATURES := exceptions rtti features - LOCAL_CFLAGS := \ - -Wno-multichar \ - -D_ANDROID \ -- -DLIBDIR="c" \ -+ -DLIBDIR="\".\"" \ - -DBUILDING_LIBICONV \ - -DBUILDING_LIBCHARSET \ - -DIN_LIBRARY - -+LOCAL_CFLAGS += -fno-stack-protector -+ - LOCAL_SRC_FILES := \ - lib/iconv.c \ - libcharset/lib/localcharset.c \ -@@ -30,13 +34,14 @@ LOCAL_C_INCLUDES := \ - $(ICONV_SRC)/libcharset \ - $(ICONV_SRC)/libcharset/include - --include $(BUILD_SHARED_LIBRARY) -+include $(BUILD_STATIC_LIBRARY) - - LOCAL_LDLIBS := -llog -lcharset - - # libzbarjni - include $(CLEAR_VARS) - -+ - LOCAL_PATH := $(MY_LOCAL_PATH) - LOCAL_MODULE := zbarjni - LOCAL_SRC_FILES := ../../java/zbarjni.c \ -@@ -71,6 +76,17 @@ LOCAL_C_INCLUDES := ../include \ - ../zbar \ - $(ICONV_SRC)/include - --LOCAL_SHARED_LIBRARIES := libiconv -+LOCAL_STATIC_LIBRARIES := libiconv -+LOCAL_ARM_MODE := arm -+LOCAL_CPP_FEATURES := exceptions rtti features -+ -+LOCAL_CFLAGS := \ -+ -Wno-multichar \ -+ -D_ANDROID \ -+ -DLIBDIR="\".\"" \ -+ -DBUILDING_LIBICONV \ -+ -DBUILDING_LIBCHARSET \ -+ -DIN_LIBRARY -+ - --include $(BUILD_SHARED_LIBRARY) -\ No newline at end of file -+include $(BUILD_STATIC_LIBRARY) diff --git a/android/docker/androiddeployqt.patch b/android/docker/androiddeployqt.patch deleted file mode 100644 index b0657677..00000000 --- a/android/docker/androiddeployqt.patch +++ /dev/null @@ -1,62 +0,0 @@ -diff --git a/src/androiddeployqt/main.cpp b/src/androiddeployqt/main.cpp -index 8a8e591..71d693e 100644 ---- a/src/androiddeployqt/main.cpp -+++ b/src/androiddeployqt/main.cpp -@@ -1122,7 +1122,7 @@ bool updateLibsXml(const Options &options) - - QString libsPath = QLatin1String("libs/") + options.architecture + QLatin1Char('/'); - -- QString qtLibs = QLatin1String("<item>gnustl_shared</item>\n"); -+ QString qtLibs = QLatin1String("<item>c++_shared</item>\n"); - QString bundledInLibs; - QString bundledInAssets; - foreach (Options::BundledFile bundledFile, options.bundledFiles) { -@@ -2519,6 +2519,39 @@ bool installApk(const Options &options) - return true; - } - -+bool copyStl(Options *options) -+{ -+ if (options->deploymentMechanism == Options::Debug && !options->installApk) -+ return true; -+ -+ if (options->verbose) -+ fprintf(stdout, "Copying LIBC++ STL library\n"); -+ -+ QString filePath = options->ndkPath -+ + QLatin1String("/sources/cxx-stl/llvm-libc++") -+ + QLatin1String("/libs/") -+ + options->architecture -+ + QLatin1String("/libc++_shared.so"); -+ if (!QFile::exists(filePath)) { -+ fprintf(stderr, "LIBC STL library does not exist at %s\n", qPrintable(filePath)); -+ return false; -+ } -+ -+ QString destinationDirectory = -+ options->deploymentMechanism == Options::Debug -+ ? options->temporaryDirectoryName + QLatin1String("/lib") -+ : options->outputDirectory + QLatin1String("/libs/") + options->architecture; -+ -+ if (!copyFileIfNewer(filePath, destinationDirectory -+ + QLatin1String("/libc++_shared.so"), options->verbose)) { -+ return false; -+ } -+ -+ if (options->deploymentMechanism == Options::Debug && !deployToLocalTmp(options, QLatin1String("/lib/libc++_shared.so"))) -+ return false; -+ -+ return true; -+} - bool copyGnuStl(Options *options) - { - if (options->deploymentMechanism == Options::Debug && !options->installApk) -@@ -2870,7 +2903,7 @@ int main(int argc, char *argv[]) - if (Q_UNLIKELY(options.timing)) - fprintf(stdout, "[TIMING] %d ms: Read dependencies\n", options.timer.elapsed()); - -- if (options.deploymentMechanism != Options::Ministro && !copyGnuStl(&options)) -+ if (options.deploymentMechanism != Options::Ministro && !copyStl(&options)) - return CannotCopyGnuStl; - - if (Q_UNLIKELY(options.timing)) |
