62 lines
No EOL
2.7 KiB
Docker
62 lines
No EOL
2.7 KiB
Docker
FROM ubuntu:22.04
|
|
|
|
# Install tools
|
|
RUN apt-get update && apt-get upgrade -y
|
|
RUN apt-get install -y \
|
|
build-essential cmake git default-jre openjdk-19-jdk \
|
|
libxext-dev libgl-dev \
|
|
wget zip zstd \
|
|
libpng-dev libboost-all-dev \
|
|
libxi-dev libxrender-dev
|
|
|
|
# Set user
|
|
RUN useradd -u 1000 -U -d /home -M worker
|
|
RUN chown -R worker:worker /home /usr/local
|
|
USER worker
|
|
|
|
# Install android sdkmanager
|
|
RUN mkdir -v /home/sdk
|
|
WORKDIR /home/sdk
|
|
RUN wget https://dl.google.com/android/repository/commandlinetools-linux-9477386_latest.zip && unzip commandlinetools-linux-9477386_latest.zip && rm commandlinetools-linux-9477386_latest.zip
|
|
RUN mv -v cmdline-tools latest
|
|
RUN mkdir -v cmdline-tools
|
|
RUN mv -v latest cmdline-tools
|
|
|
|
# Install sdk
|
|
RUN yes | cmdline-tools/latest/bin/sdkmanager "build-tools;34.0.0" "platforms;android-34"
|
|
|
|
# Install ndk separately
|
|
RUN wget https://dl.google.com/android/repository/android-ndk-r26-beta1-linux.zip && unzip android-ndk-r26-beta1-linux.zip && rm android-ndk-r26-beta1-linux.zip
|
|
RUN mkdir -v ndk
|
|
RUN mv -v android-ndk-r26-beta1 ndk/26.0.10404224-beta1
|
|
|
|
# Env variables
|
|
ENV SDK_ROOT=/home/sdk
|
|
ENV BUILD_TOOLS_ROOT=${SDK_ROOT}/build-tools/34.0.0
|
|
ENV NDK_ROOT=${SDK_ROOT}/ndk/26.0.10404224-beta1
|
|
ENV PLATFORM_ROOT=${SDK_ROOT}/platforms/android-34
|
|
ENV PNG_ROOT=/home/png/install
|
|
ENV BOOST_ROOT=/home/boost/install
|
|
|
|
# Build libpng
|
|
RUN mkdir -v /home/png
|
|
WORKDIR /home/png
|
|
RUN git clone https://github.com/glennrp/libpng.git -b libpng16 --depth 1 source
|
|
RUN mkdir -v build install
|
|
RUN cmake -S source -B build -DCMAKE_INSTALL_PREFIX=install/arm64-v8a -DCMAKE_BUILD_TYPE=Release -DCMAKE_TOOLCHAIN_FILE="${NDK_ROOT}/build/cmake/android.toolchain.cmake" \
|
|
-DANDROID_USE_LEGACY_TOOLCHAIN_FILE=ON -DANDROID_PLATFORM=34 -DANDROID_STL=c++_shared -DANDROID_CPP_FEATURES="rtti exceptions" -DANDROID_ABI=arm64-v8a
|
|
RUN cmake --build build -t install -j
|
|
|
|
# Build boost
|
|
RUN mkdir -v /home/boost
|
|
WORKDIR /home/boost
|
|
RUN wget https://boostorg.jfrog.io/artifactory/main/release/1.82.0/source/boost_1_82_0.tar.gz && tar xvf boost_1_82_0.tar.gz && rm boost_1_82_0.tar.gz
|
|
RUN mv -v boost_1_82_0 source
|
|
RUN cd source && ./bootstrap.sh --with-libraries=random --prefix=../install/arm64-v8a
|
|
RUN mkdir -p build install
|
|
RUN echo "using clang : android : ${NDK_ROOT}/toolchains/llvm/prebuilt/linux-x86_64/bin/clang++ --target=aarch64-none-linux-android34 --sysroot=${NDK_ROOT}/toolchains/llvm/prebuilt/linux-x86_64/sysroot ;" > user-config.jam
|
|
RUN cd source && ./b2 toolset=clang-android target-os=android architecture=arm variant=release link=shared threading=single cxxflags=-fPIC --user-config=../user-config.jam --build-dir=../build install
|
|
|
|
# Finalize
|
|
WORKDIR /home
|
|
COPY package.sh package-helper.sh copy-files.sh ./ |