#bobthehamster/ohrrpgce-build-env-android-oldstyle

#-----------------------------------------------------------------------
# Old-style Android SDK with OHRRPGCE build-deps
# and both Freebasic and Euphoria Compilers

FROM debian:11-slim

#
# Apt packages
#

# Install the packages needed to compile the ohrrpgce.
# Also include git and subversion because build scripts use them.
# g++-multilib is needed for when we install euphoria later.
# We don't bother with timidity or freepats because those
# are really run-time requirements, not build-time.

RUN apt-get update \
    && apt-get install -y --no-install-recommends \
      curl \
      git \
      subversion \
      bzip2 \
      zip unzip \
      libx11-dev \
      libxpm-dev \
      libxrandr-dev \
      libxrender-dev \
      libsdl2-dev \
      libsdl2-mixer-dev \
      libsdl1.2-dev \
      libsdl-mixer1.2-dev \
      libncurses5-dev \
      scons \
      g++ \
      g++-multilib \
      make \
      fakeroot \
      libtinfo5 \
      ca-certificates \
      less \
      nano \
      ant \
      file \
      gpg \
      imagemagick \
      libsdl-image1.2-dev \
    && rm -rf /var/lib/apt/lists/*
# Note that libsdl-image1.2-dev is only used for the sdl-android button image theme converter

# Correto is Amazon's LTS distribution of OpenJDK 8.
# This seems to be the easiest way to get openjdk8 on Debian 10+
# because only openjdk11 is available on debian+ and our crusty old
# Android SDK is too old for openjdk11
RUN curl -sS https://apt.corretto.aws/corretto.key \
  | gpg --dearmor -o /usr/share/keyrings/corretto-keyring.gpg \
  && echo "deb [signed-by=/usr/share/keyrings/corretto-keyring.gpg] https://apt.corretto.aws stable main" \
  > /etc/apt/sources.list.d/corretto.list \
  && apt-get update \
  && apt-get install -y java-1.8.0-amazon-corretto-jdk \
  && rm -rf /var/lib/apt/lists/* \
  && update-java-alternatives -s /usr/lib/jvm/java-1.8.0-amazon-corretto

#
# Freebasic
#

ENV FBC_VERSION 1.08.1

# First install the 64 bit version
WORKDIR /freebasic-installer/
RUN curl -sS http://mirror.motherhamster.org/dependencies/FreeBASIC-${FBC_VERSION}-linux-x86_64.tar.gz \
  | tar -zx
WORKDIR /freebasic-installer/FreeBASIC-${FBC_VERSION}-linux-x86_64/
RUN ./install.sh -i

# Also add in the 32 bit libraries for multilib support
WORKDIR /freebasic-installer/
RUN curl -sS http://mirror.motherhamster.org/dependencies/FreeBASIC-${FBC_VERSION}-linux-x86.tar.gz \
  | tar -zx
WORKDIR /freebasic-installer/FreeBASIC-${FBC_VERSION}-linux-x86/
RUN cp -r ./lib/freebasic/linux-x86 /usr/local/lib/freebasic/

WORKDIR /
RUN rm -rf /freebasic-installer

#
# Euphoria
#

# Install the euphoria compiler. In spite of the deb name
# this is actually a 32 bit binary (which is why we need g++-multilib)
WORKDIR /euphoria-install/
RUN curl -sS -O http://mirror.motherhamster.org/dependencies/euphoria_4.0.5_amd64.deb
RUN dpkg -i /euphoria-install/euphoria_4.0.5_amd64.deb
WORKDIR /
RUN rm -rf /euphoria-install

#
# Freebasic ARM support
#

WORKDIR /fbc-arm-install
RUN git clone --branch android https://github.com/rversteegen/fbc.git freebasic && \
  echo "CFLAGS := -Wfatal-errors -g" > /fbc-arm-install/freebasic/config.mk && \
  echo "FBCFLAGS := -g" >> /fbc-arm-install/freebasic/config.mk && \
  echo "FBLFLAGS := -g" >> /fbc-arm-install/freebasic/config.mk && \
  echo "prefix=/opt/fbc-arm/fbc-1.06-android" >> /fbc-arm-install/freebasic/config.mk && \
  cd /fbc-arm-install/freebasic && \
  make compiler && \
  make install-compiler install-includes

RUN mkdir -p /src/ && \
  cp -pr /fbc-arm-install/freebasic/src/rtlib /src/fbc-arm-rtlib

WORKDIR /
RUN rm -rf /fbc-arm-install

ENV FBCARM /opt/fbc-arm/fbc-1.06-android/bin/fbc

#
# Symlinks fixer
#

COPY fix_symlinks.sh /src/fix_symlinks.sh
RUN chmod +x /src/fix_symlinks.sh

#
# Final stuff
#

# This is mounted as a volume by wrapper script
ENV SDLANDROID /src/sdl-android
ENV ANDROIDNDK /opt/android-ndk-r12b
ENV ANDROIDNDKVER r12b
ENV ANDROIDAPI 26
ENV ANDROIDSDK /opt/android-sdk
ENV ANDROID_HOME /opt/android-sdk
ENV PATH="${PATH}:/opt/android-sdk/platform-tools:/opt/android-sdk/tools:/opt/android-ndk-r12b:/opt/android-sdk/build-tools/26.0.3"

WORKDIR /src
# See also wrapper script which sets up the correct volume mount and UID:GID