127 lines
8.7 KiB
Docker
127 lines
8.7 KiB
Docker
ARG DOCKER_PREFIX=wapmobil/
|
|
FROM ${DOCKER_PREFIX}debian-base
|
|
|
|
ARG JOBS_COUNT=4
|
|
ARG QT_DOWNLOAD_SERVER=https://shstk.ru/files
|
|
|
|
ENV CUR_SODIUM_VERSION=1.0.21
|
|
ENV CUR_FFTW_VERSION=3.3.10
|
|
ENV CUR_QT_VERSION_MAJOR=5.14
|
|
ENV CUR_QT_VERSION=5.14.1
|
|
|
|
|
|
# dev soft for our SDK
|
|
RUN mkdir -p /usr/share/man/man1 && apt-get update \
|
|
&& apt-get install -y cpio libglu1-mesa-dev libgl1-mesa-dev libwayland-dev libncurses-dev flex bison gperf \
|
|
python3 python3-pip python3-setuptools python3-serial python3-click python3-cryptography python3-pyparsing python3-pyelftools \
|
|
ccache libffi-dev libssl-dev doxygen graphviz libx11-dev libxkbcommon-dev libpkgconfig-perl libfreetype6-dev libfontconfig1-dev \
|
|
liblzma-dev libxml2-dev libbz2-dev libmpc-dev libmpfr-dev libgmp-dev libicu-dev libusb-1.0-0-dev libreadline-dev \
|
|
build-essential android-sdk openjdk-25-jdk && rm -rf /var/cache/apt/archives/*
|
|
|
|
|
|
# Android SDK and NDK
|
|
WORKDIR /soft/android
|
|
|
|
ENV ANDROID_HOME=/usr/lib/android-sdk
|
|
ENV ANDROID_NDK_HOME=${ANDROID_HOME}/ndk-bundle
|
|
ENV ANDROID_TOOLCHAIN=${ANDROID_NDK_HOME}/build/cmake/android.toolchain.cmake
|
|
ENV CMDLINE_TOOLS=${ANDROID_HOME}/cmdline-tools
|
|
ENV NDK_PLATFORM="android-21"
|
|
|
|
RUN wget -nv -O commandlinetools.zip https://dl.google.com/android/repository/commandlinetools-linux-14742923_latest.zip \
|
|
&& unzip -o commandlinetools.zip -d ${ANDROID_HOME} && rm -f commandlinetools.zip
|
|
RUN yes | ${CMDLINE_TOOLS}/bin/sdkmanager --sdk_root=${ANDROID_HOME} --licenses
|
|
RUN ${CMDLINE_TOOLS}/bin/sdkmanager --sdk_root=${ANDROID_HOME} --update
|
|
RUN ${CMDLINE_TOOLS}/bin/sdkmanager --sdk_root=${ANDROID_HOME} "platforms;android-21" "platforms;android-29" "platforms;android-30" "platforms;android-31" "platforms;android-32" "platforms;android-33" "platforms;android-34" "platforms;android-35" "ndk-bundle" "build-tools;29.0.3" "platform-tools" "tools"
|
|
|
|
COPY android.toolchain.cmake.add /soft/android/
|
|
RUN cat /soft/android/android.toolchain.cmake.add >> ${ANDROID_TOOLCHAIN}
|
|
RUN mkdir -p /soft/android/armeabi-v7a && mkdir -p /soft/android/arm64-v8a && mkdir -p /soft/android/x86 && mkdir -p /soft/android/x86_64
|
|
|
|
|
|
# sodium
|
|
WORKDIR /soft
|
|
RUN curl -s https://download.libsodium.org/libsodium/releases/libsodium-${CUR_SODIUM_VERSION}.tar.gz \
|
|
-o libsodium-${CUR_SODIUM_VERSION}.tar.gz \
|
|
&& tar -xf libsodium-${CUR_SODIUM_VERSION}.tar.gz -C /soft \
|
|
&& rm -f libsodium-${CUR_SODIUM_VERSION}.tar.gz
|
|
WORKDIR /soft/libsodium-${CUR_SODIUM_VERSION}
|
|
|
|
RUN TARGET_ARCH=armv7-a \
|
|
CFLAGS="-O3 -mfloat-abi=softfp -mfpu=vfpv3-d16 -mthumb -marm -march=armv7-a" \
|
|
ARCH=arm \
|
|
HOST_COMPILER=armv7a-linux-androideabi \
|
|
dist-build/android-build.sh && \
|
|
cp -rfv /soft/libsodium-${CUR_SODIUM_VERSION}/libsodium-android-armv7-a/* /soft/android/armeabi-v7a/ && \
|
|
rm -rf /soft/libsodium-${CUR_SODIUM_VERSION}/libsodium-android-* && \
|
|
make distclean && rm -rf ./android-toolchain*
|
|
RUN TARGET_ARCH=armv8-a \
|
|
CFLAGS="-O3 -march=armv8-a" \
|
|
ARCH=arm64 \
|
|
HOST_COMPILER=aarch64-linux-android \
|
|
dist-build/android-build.sh && \
|
|
cp -rfv /soft/libsodium-${CUR_SODIUM_VERSION}/libsodium-android-armv8-a/* /soft/android/arm64-v8a/ && \
|
|
rm -rf /soft/libsodium-${CUR_SODIUM_VERSION}/libsodium-android-* && \
|
|
make distclean && rm -rf ./android-toolchain*
|
|
RUN TARGET_ARCH=i686 \
|
|
CFLAGS="-O3 -march=i686" \
|
|
ARCH=x86 \
|
|
HOST_COMPILER=i686-linux-android \
|
|
dist-build/android-build.sh && \
|
|
cp -rfv /soft/libsodium-${CUR_SODIUM_VERSION}/libsodium-android-i686/* /soft/android/x86/ && \
|
|
rm -rf /soft/libsodium-${CUR_SODIUM_VERSION}/libsodium-android-* && \
|
|
make distclean && rm -rf ./android-toolchain*
|
|
RUN TARGET_ARCH=westmere \
|
|
CFLAGS="-O3 -march=westmere" \
|
|
ARCH=x86_64 \
|
|
HOST_COMPILER=x86_64-linux-android \
|
|
dist-build/android-build.sh && \
|
|
cp -rfv /soft/libsodium-${CUR_SODIUM_VERSION}/libsodium-android-westmere/* /soft/android/x86_64/ && \
|
|
rm -rf /soft/libsodium-${CUR_SODIUM_VERSION}/libsodium-android-* && \
|
|
make distclean && rm -rf ./android-toolchain*
|
|
WORKDIR /soft
|
|
RUN rm -rf /soft/libsodium-*
|
|
|
|
|
|
# fftw3
|
|
WORKDIR /soft
|
|
RUN wget -nv http://www.fftw.org/fftw-${CUR_FFTW_VERSION}.tar.gz \
|
|
&& tar -xf fftw-${CUR_FFTW_VERSION}.tar.gz -C /soft \
|
|
&& rm -f fftw-${CUR_FFTW_VERSION}.tar.gz
|
|
WORKDIR /soft/fftw-${CUR_FFTW_VERSION}_build
|
|
|
|
ENV _CUR_ABI=armeabi-v7a
|
|
RUN cmake -DCMAKE_INSTALL_PREFIX=/soft/android/${_CUR_ABI} -DENABLE_FLOAT=0 -DENABLE_LONG_DOUBLE=0 -DENABLE_QUAD_PRECISION=0 -DENABLE_THREADS=1 -DWITH_COMBINED_THREADS=1 -DCMAKE_TOOLCHAIN_FILE=${ANDROID_TOOLCHAIN} -DANDROID_PLATFORM=${NDK_PLATFORM} -DANDROID_ABI=${_CUR_ABI} /soft/fftw-${CUR_FFTW_VERSION} && make install -j${JOBS_COUNT} && rm -rf ./*
|
|
RUN cmake -DCMAKE_INSTALL_PREFIX=/soft/android/${_CUR_ABI} -DENABLE_FLOAT=1 -DENABLE_LONG_DOUBLE=0 -DENABLE_QUAD_PRECISION=0 -DENABLE_THREADS=1 -DWITH_COMBINED_THREADS=1 -DCMAKE_TOOLCHAIN_FILE=${ANDROID_TOOLCHAIN} -DANDROID_PLATFORM=${NDK_PLATFORM} -DANDROID_ABI=${_CUR_ABI} /soft/fftw-${CUR_FFTW_VERSION} && make install -j${JOBS_COUNT} && rm -rf ./*
|
|
RUN cmake -DCMAKE_INSTALL_PREFIX=/soft/android/${_CUR_ABI} -DENABLE_FLOAT=0 -DENABLE_LONG_DOUBLE=1 -DENABLE_QUAD_PRECISION=0 -DENABLE_THREADS=1 -DWITH_COMBINED_THREADS=1 -DCMAKE_TOOLCHAIN_FILE=${ANDROID_TOOLCHAIN} -DANDROID_PLATFORM=${NDK_PLATFORM} -DANDROID_ABI=${_CUR_ABI} /soft/fftw-${CUR_FFTW_VERSION} && make install -j${JOBS_COUNT} && rm -rf ./*
|
|
|
|
ENV _CUR_ABI=arm64-v8a
|
|
RUN cmake -DCMAKE_INSTALL_PREFIX=/soft/android/${_CUR_ABI} -DENABLE_FLOAT=0 -DENABLE_LONG_DOUBLE=0 -DENABLE_QUAD_PRECISION=0 -DENABLE_THREADS=1 -DWITH_COMBINED_THREADS=1 -DCMAKE_TOOLCHAIN_FILE=${ANDROID_TOOLCHAIN} -DANDROID_PLATFORM=${NDK_PLATFORM} -DANDROID_ABI=${_CUR_ABI} /soft/fftw-${CUR_FFTW_VERSION} && make install -j${JOBS_COUNT} && rm -rf ./*
|
|
RUN cmake -DCMAKE_INSTALL_PREFIX=/soft/android/${_CUR_ABI} -DENABLE_FLOAT=1 -DENABLE_LONG_DOUBLE=0 -DENABLE_QUAD_PRECISION=0 -DENABLE_THREADS=1 -DWITH_COMBINED_THREADS=1 -DCMAKE_TOOLCHAIN_FILE=${ANDROID_TOOLCHAIN} -DANDROID_PLATFORM=${NDK_PLATFORM} -DANDROID_ABI=${_CUR_ABI} /soft/fftw-${CUR_FFTW_VERSION} && make install -j${JOBS_COUNT} && rm -rf ./*
|
|
RUN cmake -DCMAKE_INSTALL_PREFIX=/soft/android/${_CUR_ABI} -DENABLE_FLOAT=0 -DENABLE_LONG_DOUBLE=1 -DENABLE_QUAD_PRECISION=0 -DENABLE_THREADS=1 -DWITH_COMBINED_THREADS=1 -DCMAKE_TOOLCHAIN_FILE=${ANDROID_TOOLCHAIN} -DANDROID_PLATFORM=${NDK_PLATFORM} -DANDROID_ABI=${_CUR_ABI} /soft/fftw-${CUR_FFTW_VERSION} && make install -j${JOBS_COUNT} && rm -rf ./*
|
|
|
|
ENV _CUR_ABI=x86
|
|
RUN cmake -DCMAKE_INSTALL_PREFIX=/soft/android/${_CUR_ABI} -DENABLE_FLOAT=0 -DENABLE_LONG_DOUBLE=0 -DENABLE_QUAD_PRECISION=0 -DENABLE_THREADS=1 -DWITH_COMBINED_THREADS=1 -DCMAKE_TOOLCHAIN_FILE=${ANDROID_TOOLCHAIN} -DANDROID_PLATFORM=${NDK_PLATFORM} -DANDROID_ABI=${_CUR_ABI} /soft/fftw-${CUR_FFTW_VERSION} && make install -j${JOBS_COUNT} && rm -rf ./*
|
|
RUN cmake -DCMAKE_INSTALL_PREFIX=/soft/android/${_CUR_ABI} -DENABLE_FLOAT=1 -DENABLE_LONG_DOUBLE=0 -DENABLE_QUAD_PRECISION=0 -DENABLE_THREADS=1 -DWITH_COMBINED_THREADS=1 -DCMAKE_TOOLCHAIN_FILE=${ANDROID_TOOLCHAIN} -DANDROID_PLATFORM=${NDK_PLATFORM} -DANDROID_ABI=${_CUR_ABI} /soft/fftw-${CUR_FFTW_VERSION} && make install -j${JOBS_COUNT} && rm -rf ./*
|
|
RUN cmake -DCMAKE_INSTALL_PREFIX=/soft/android/${_CUR_ABI} -DENABLE_FLOAT=0 -DENABLE_LONG_DOUBLE=1 -DENABLE_QUAD_PRECISION=0 -DENABLE_THREADS=1 -DWITH_COMBINED_THREADS=1 -DCMAKE_TOOLCHAIN_FILE=${ANDROID_TOOLCHAIN} -DANDROID_PLATFORM=${NDK_PLATFORM} -DANDROID_ABI=${_CUR_ABI} /soft/fftw-${CUR_FFTW_VERSION} && make install -j${JOBS_COUNT} && rm -rf ./*
|
|
|
|
ENV _CUR_ABI=x86_64
|
|
RUN cmake -DCMAKE_INSTALL_PREFIX=/soft/android/${_CUR_ABI} -DENABLE_FLOAT=0 -DENABLE_LONG_DOUBLE=0 -DENABLE_QUAD_PRECISION=0 -DENABLE_THREADS=1 -DWITH_COMBINED_THREADS=1 -DCMAKE_TOOLCHAIN_FILE=${ANDROID_TOOLCHAIN} -DANDROID_PLATFORM=${NDK_PLATFORM} -DANDROID_ABI=${_CUR_ABI} /soft/fftw-${CUR_FFTW_VERSION} && make install -j${JOBS_COUNT} && rm -rf ./*
|
|
RUN cmake -DCMAKE_INSTALL_PREFIX=/soft/android/${_CUR_ABI} -DENABLE_FLOAT=1 -DENABLE_LONG_DOUBLE=0 -DENABLE_QUAD_PRECISION=0 -DENABLE_THREADS=1 -DWITH_COMBINED_THREADS=1 -DCMAKE_TOOLCHAIN_FILE=${ANDROID_TOOLCHAIN} -DANDROID_PLATFORM=${NDK_PLATFORM} -DANDROID_ABI=${_CUR_ABI} /soft/fftw-${CUR_FFTW_VERSION} && make install -j${JOBS_COUNT} && rm -rf ./*
|
|
RUN cmake -DCMAKE_INSTALL_PREFIX=/soft/android/${_CUR_ABI} -DENABLE_FLOAT=0 -DENABLE_LONG_DOUBLE=1 -DENABLE_QUAD_PRECISION=0 -DENABLE_THREADS=1 -DWITH_COMBINED_THREADS=1 -DCMAKE_TOOLCHAIN_FILE=${ANDROID_TOOLCHAIN} -DANDROID_PLATFORM=${NDK_PLATFORM} -DANDROID_ABI=${_CUR_ABI} /soft/fftw-${CUR_FFTW_VERSION} && make install -j${JOBS_COUNT} && rm -rf ./*
|
|
|
|
|
|
# Qt
|
|
WORKDIR /soft/android
|
|
|
|
RUN wget -nv ${QT_DOWNLOAD_SERVER}/qt-android-${CUR_QT_VERSION}.zip \
|
|
&& unzip -o qt-android-${CUR_QT_VERSION}.zip -d /soft/android/qt \
|
|
&& rm -f qt-android-${CUR_QT_VERSION}.zip
|
|
WORKDIR /soft/android/qt/lib/cmake/Qt5
|
|
COPY Qt5Config.patch /soft/android/qt/lib/cmake/Qt5
|
|
RUN patch < Qt5Config.patch
|
|
|
|
ENV BUILD_TYPE=Release
|
|
|
|
WORKDIR /soft
|