diff --git a/Dockerfile b/Dockerfile index 9e1e485..0df04bc 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,14 +1,58 @@ -FROM liv2/amiga-gcc:latest - -EXPOSE 10240/tcp - -ENV EXTRA_ARGS="--language c --language c++" - -ARG NODE_VERSION=v22.16.0 - +FROM ubuntu:24.04 AS build-base ENV DEBIAN_FRONTEND=noninteractive +# Install all prereqs +RUN apt-get -y update && \ + apt-get -y install \ + apt-utils curl git jlha-utils lhasa python3 python3-pip srecord wget \ + autoconf bison flex g++ gcc gettext git libgmpxx4ldbl libgmp-dev \ + libmpfr6 libmpfr-dev libmpc3 libmpc-dev libncurses-dev make rsync \ + texinfo + +# Make jlha the default +RUN cd /usr/bin && mv lha lha.lhasa && ln -s jlha lha + +FROM build-base AS build-gcc6 + +ENV PREFIX=/opt/amiga-gcc-6.5.0 +# Install Bebbo's amiga-gcc6 +RUN git config --global pull.rebase false && \ + cd /root && \ + git clone --depth 1 https://github.com/AmigaPorts/m68k-amigaos-gcc amiga-gcc && \ + cd /root/amiga-gcc && \ + mkdir -p ${PREFIX} && \ + make update && \ + make -j2 min ndk && \ + cd / && \ + rm -rf /root/amiga-gcc + +FROM build-base AS build-gcc13 +# Install Bebbo's amiga-gcc 13.2 +ENV PREFIX=/opt/amiga-gcc-13.2 + +RUN git config --global pull.rebase false && \ + cd /root && \ + git clone --depth 1 https://github.com/AmigaPorts/m68k-amigaos-gcc amiga-gcc && \ + cd /root/amiga-gcc && \ + mkdir -p ${PREFIX} && \ + make branch branch=amiga13.2 mod=gcc && \ + make update && \ + make -j2 min ndk && \ + cd / && \ + rm -rf /root/amiga-gcc + +FROM ubuntu:24.04 + +EXPOSE 10240/tcp +ENV EXTRA_ARGS="--language c --language c++" +ARG NODE_VERSION=v22.16.0 +ENV DEBIAN_FRONTEND=noninteractive + +COPY --from=build-gcc6 /opt/amiga-gcc-6.5.0 /opt/amiga-gcc-6.5.0 +COPY --from=build-gcc13 /opt/amiga-gcc-13.2 /opt/amiga-gcc-13.2 + RUN apt-get update && apt-get install -y \ + make \ curl \ git \ rsync \ diff --git a/README.md b/README.md index 6b41903..0aa5333 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,10 @@ # Amiga-Godbolt Docker Container -This repository provides a Docker container for running the Godbolt Compiler Explorer configured with `amiga-gcc`, enabling compilation and exploration of Amiga-specific C/C++ code in a web-based interface. +This repository provides a Docker container for running the Godbolt Compiler Explorer configured with `amiga-gcc` (GCC 6.5 and GCC 13.2), enabling compilation and exploration of Amiga-specific C/C++ code in a web-based interface. ## Overview -The container is pre-configured with the Godbolt Compiler Explorer and the `amiga-gcc` toolchain, allowing developers to write, compile, and analyze Amiga code directly from a browser. The web interface is accessible via an exposed port (default: 10240). +The container is pre-configured with the Godbolt Compiler Explorer and the `amiga-gcc` toolchain (GCC 6.5 and GCC 13.2), allowing developers to write, compile, and analyze Amiga code directly from a browser. The web interface is accessible via an exposed port (default: 10240). ## Getting Started diff --git a/configs/c++.local.properties b/configs/c++.local.properties index dda0f21..6828f47 100644 --- a/configs/c++.local.properties +++ b/configs/c++.local.properties @@ -1,13 +1,23 @@ compilers=&amiga -group.amiga.compilers=amigagpp +group.amiga.compilers=gpp6_5:gpp13_2 group.amiga.groupName=Amiga -compiler.amigagpp.exe=/opt/amiga/bin/m68k-amigaos-g++ -compiler.amigagpp.name=g++-6.5.0b -compiler.amigagpp.options=-mcpu=68000 -compiler.amigagpp.supportsExecute=false -compiler.amigagpp.supportsBinary=false -compiler.amigagpp.supportsBinaryObject=false -compiler.amigagpp.demangler=/opt/amiga/bin/m68k-amigaos-c++filt -compiler.amigagpp.objdumper=/opt/amiga/bin/m68k-amigaos-objdump -compiler.amigagpp.nm=/opt/amiga/bin/m68k-amigaos-nm -compiler.amigagcc.needsMulti=false +compiler.gpp6_5.exe=/opt/amiga-gcc-6.5.0/bin/m68k-amigaos-g++ +compiler.gpp6_5.name=g++-6.5.0b +compiler.gpp6_5.options= +compiler.gpp6_5.supportsExecute=false +compiler.gpp6_5.supportsBinary=false +compiler.gpp6_5.supportsBinaryObject=false +compiler.gpp6_5.demangler=/opt/amiga-gcc-6.5.0/bin/m68k-amigaos-c++filt +compiler.gpp6_5.objdumper=/opt/amiga-gcc-6.5.0/bin/m68k-amigaos-objdump +compiler.gpp6_5.nm=/opt/amiga-gcc-6.5.0/bin/m68k-amigaos-nm +compiler.gpp6_5.needsMulti=false +compiler.gpp13_2.exe=/opt/amiga-gcc-13.2/bin/m68k-amigaos-g++ +compiler.gpp13_2.name=g++-13.2b +compiler.gpp13_2.options= +compiler.gpp13_2.supportsExecute=false +compiler.gpp13_2.supportsBinary=false +compiler.gpp13_2.supportsBinaryObject=false +compiler.gpp13_2.demangler=/opt/amiga-gcc-13.2/bin/m68k-amigaos-c++filt +compiler.gpp13_2.objdumper=/opt/amiga-gcc-13.2/bin/m68k-amigaos-objdump +compiler.gpp13_2.nm=/opt/amiga-gcc-13.2/bin/m68k-amigaos-nm +compiler.gpp13_2.needsMulti=false diff --git a/configs/c.local.properties b/configs/c.local.properties index d296ee9..cb29d39 100644 --- a/configs/c.local.properties +++ b/configs/c.local.properties @@ -1,13 +1,23 @@ compilers=&amiga -group.amiga.compilers=amigagcc +group.amiga.compilers=gcc6_5:gcc13_2 group.amiga.groupName=Amiga -compiler.amigagcc.exe=/opt/amiga/bin/m68k-amigaos-gcc -compiler.amigagcc.name=gcc-6.5.0b -compiler.amigagcc.options=-mcpu=68000 -compiler.amigagcc.supportsExecute=false -compiler.amigagcc.supportsBinary=false -compiler.amigagcc.supportsBinaryObject=false -compiler.amigagcc.demangler=/opt/amiga/bin/m68k-amigaos-c++filt -compiler.amigagcc.objdumper=/opt/amiga/bin/m68k-amigaos-objdump -compiler.amigagcc.nm=/opt/amiga/bin/m68k-amigaos-nm -compiler.amigagcc.needsMulti=false +compiler.gcc6_5.exe=/opt/amiga-gcc-6.5.0/bin/m68k-amigaos-gcc +compiler.gcc6_5.name=gcc-6.5.0b +compiler.gcc6_5.options= +compiler.gcc6_5.supportsExecute=false +compiler.gcc6_5.supportsBinary=false +compiler.gcc6_5.supportsBinaryObject=false +compiler.gcc6_5.demangler=/opt/amiga-gcc-6.5.0/bin/m68k-amigaos-c++filt +compiler.gcc6_5.objdumper=/opt/amiga-gcc-6.5.0/bin/m68k-amigaos-objdump +compiler.gcc6_5.nm=/opt/amiga-gcc-6.5.0/bin/m68k-amigaos-nm +compiler.gcc6_5.needsMulti=false +compiler.gcc13_2.exe=/opt/amiga-gcc-13.2/bin/m68k-amigaos-gcc +compiler.gcc13_2.name=gcc-13.2 +compiler.gcc13_2.options= +compiler.gcc13_2.supportsExecute=false +compiler.gcc13_2.supportsBinary=false +compiler.gcc13_2.supportsBinaryObject=false +compiler.gcc13_2.demangler=/opt/amiga-gcc-13.2/bin/m68k-amigaos-c++filt +compiler.gcc13_2.objdumper=/opt/amiga-gcc-13.2/bin/m68k-amigaos-objdump +compiler.gcc13_2.nm=/opt/amiga-gcc-13.2/bin/m68k-amigaos-nm +compiler.gcc13_2.needsMulti=false