#bobthehamster/ohrrpgce-build-env-emscripten

#-----------------------------------------------------------------------
# Emscripten with OHRRPGCE build-deps
# and both Freebasic and Euphoria Compilers

# Seems to descend from Ubuntu Jammy
FROM emscripten/emsdk:latest

#
# 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 \
      libncurses5-dev \
      scons \
      make \
      libtinfo5 \
      less \
      nano \
    && rm -rf /var/lib/apt/lists/*

#
# 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-1.08.1-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-1.08.1-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

#
# Freebasic with emscripten support
#

WORKDIR /fbc-tmc-source
RUN git clone --branch emscripten https://github.com/rversteegen/fbc.git freebasic && \
  echo "CFLAGS := -Wfatal-errors -g" > /fbc-tmc-source/freebasic/config.mk && \
  echo "FBCFLAGS := -g" >> /fbc-tmc-source/freebasic/config.mk && \
  echo "FBLFLAGS := -g" >> /fbc-tmc-source/freebasic/config.mk && \
  echo "prefix=/opt/fbc-emscripten" >> /fbc-tmc-source/freebasic/config.mk && \
  cd /fbc-tmc-source/freebasic && \
  make -j4 install-compiler install-includes && \
  make -j4 install-rtlib TARGET=asmjs-unknown-emscripten

WORKDIR /
RUN rm -rf /fbc-tmc-source

# Put the emscripten fbc in the front of the path so it will shadow the other fbc
ENV PATH /opt/fbc-emscripten/bin:${PATH}

#
# Final stuff
#

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