FROM debian:bookworm

ENV DEBIAN_FRONTEND=noninteractive

RUN apt-get update && \
    apt-get install -y openjdk-17-jdk-headless \
        cmake make m4 pkg-config python-is-python3 python3-venv \
        tcl gyp ninja-build bzip2 libffi-dev libsqlite3-dev binutils-dev clang lld \
        libssl-dev zlib1g-dev nodejs terser nasm git curl unzip wget patch \
        ca-certificates && \
    apt-get clean

# Gradle - multiple versions for different projects
RUN wget -q https://services.gradle.org/distributions/gradle-8.11.1-bin.zip -O /tmp/g1.zip && \
    unzip -q /tmp/g1.zip -d /opt && rm /tmp/g1.zip && \
    wget -q https://services.gradle.org/distributions/gradle-8.14.3-bin.zip -O /tmp/g2.zip && \
    unzip -q /tmp/g2.zip -d /opt && rm /tmp/g2.zip && \
    wget -q https://services.gradle.org/distributions/gradle-9.2.1-bin.zip -O /tmp/g3.zip && \
    unzip -q /tmp/g3.zip -d /opt && rm /tmp/g3.zip && \
    ln -s /opt/gradle-8.11.1/bin/gradle /usr/local/bin/gradle

# Rust
RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain 1.93.0 && \
    . /root/.cargo/env && \
    rustup target add aarch64-linux-android && \
    cargo install --force --vers 0.29.2 cbindgen

ENV JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
ENV ANDROID_HOME=/opt/android-sdk
ENV ANDROID_SDK=/opt/android-sdk
ENV PATH="/root/.cargo/bin:${ANDROID_HOME}/cmdline-tools/latest/bin:${PATH}"

# Android SDK
RUN mkdir -p ${ANDROID_HOME}/cmdline-tools && \
    cd /tmp && \
    wget -q https://dl.google.com/android/repository/commandlinetools-linux-11076708_latest.zip && \
    unzip -q commandlinetools-linux-11076708_latest.zip && \
    mv cmdline-tools ${ANDROID_HOME}/cmdline-tools/latest && \
    rm commandlinetools-linux-11076708_latest.zip && \
    yes | sdkmanager --licenses > /dev/null 2>&1 && \
    sdkmanager 'build-tools;36.1.0' 'platforms;android-36.1' 'ndk;29.0.14206865'

ENV ANDROID_NDK=${ANDROID_HOME}/ndk/29.0.14206865

WORKDIR /build
