summaryrefslogtreecommitdiff
path: root/tiger-compiler/docker/Dockerfile-testing
diff options
context:
space:
mode:
Diffstat (limited to 'tiger-compiler/docker/Dockerfile-testing')
-rw-r--r--tiger-compiler/docker/Dockerfile-testing134
1 files changed, 134 insertions, 0 deletions
diff --git a/tiger-compiler/docker/Dockerfile-testing b/tiger-compiler/docker/Dockerfile-testing
new file mode 100644
index 0000000..fb2d904
--- /dev/null
+++ b/tiger-compiler/docker/Dockerfile-testing
@@ -0,0 +1,134 @@
+# This Dockerfile is currently a work in progress. Due to Criterion being a
+# wretched pain in the ass to configure on non-supported distribution, it is
+# currently not operational for typical usage. However, it still remains
+# available for testing and custom experimentations
+
+FROM alpine:3.21.3 AS build-havm
+LABEL org.opencontainer.image.authors="Clément Metz <clement.metz@epita.fr>"
+
+RUN apk add --no-cache \
+ build-base \
+ make \
+ automake \
+ autoconf \
+ texinfo \
+ ghc
+
+RUN wget https://gitlab.lre.epita.fr/tiger/havm/-/archive/master/havm-master.tar.gz \
+ && tar xvf havm-master.tar.gz \
+ && cd havm-master \
+ && ./bootstrap \
+ && ./configure \
+ && make -j install
+
+
+FROM alpine:3.21.3 AS build-nolimips
+LABEL org.opencontainer.image.authors="Clément Metz <clement.metz@epita.fr>"
+
+RUN apk add --no-cache \
+ build-base \
+ make \
+ automake \
+ autoconf \
+ autoconf-archive \
+ texinfo \
+ libtool \
+ python3 \
+ clang-extra-tools \
+ flex \
+ bison
+
+RUN wget https://gitlab.lre.epita.fr/tiger/nolimips/-/archive/master/nolimips-master.tar.gz \
+ && tar xvf nolimips-master.tar.gz \
+ && cd nolimips-master \
+ && ./bootstrap \
+ && ./configure \
+ && make -j install
+
+
+FROM alpine:3.21.3 AS build-re-flex
+LABEL org.opencontainer.image.authors="Clément Metz <clement.metz@epita.fr>"
+
+RUN apk add --no-cache \
+ build-base \
+ make \
+ automake \
+ autoconf \
+ && wget https://github.com/Genivia/RE-flex/archive/refs/tags/v3.2.12.zip \
+ && unzip v3.2.12.zip \
+ && cd RE-flex-3.2.12 \
+ && autoreconf --install --force \
+ && ./configure \
+ && make -j install
+
+
+FROM alpine:3.21.3 AS get-criterion
+LABEL org.opencontainer.image.authors="Clément Metz <clement.metz@epita.fr>"
+
+# TODO: Figure out a good way to fetch Criterion for the final repo
+
+RUN wget https://github.com/Snaipe/Criterion/releases/download/v2.4.2/criterion-2.4.2-linux-x86_64.tar.xz \
+ && tar -xf criterion-2.4.2-linux-x86_64.tar.xz \
+ && rm criterion-2.4.2-linux-x86_64.tar.xz
+
+
+FROM alpine:3.21.3 AS buildenv-slim
+LABEL org.opencontainer.image.name="buildenv-slim" \
+ org.opencontainer.image.authors="Clément Metz <clement.metz@epita.fr>" \
+ org.opencontainer.image.version="1.1.0" \
+ org.opencontainer.image.comment="il n'y avait pas à nous filer une image de 9Go aussi :c"
+
+COPY --from=build-havm \
+ /havm-master/src/havm \
+ /usr/local/bin/
+
+COPY --from=build-nolimips \
+ --chmod=644 \
+ /usr/local/lib/libnolimips.a \
+ /usr/local/lib/
+COPY --from=build-nolimips \
+ /usr/local/lib/libnolimips.la /usr/local/lib/libnolimips.so.0.0.0 \
+ /usr/local/lib/
+COPY --from=build-nolimips \
+ /nolimips-master/src/.libs/nolimips \
+ /usr/local/bin/
+
+COPY --from=build-re-flex \
+ --chmod=644 \
+ /usr/local/lib/libreflex.a \
+ /usr/local/lib/libreflexmin.a \
+ /usr/local/lib/
+COPY --from=build-re-flex \
+ /usr/local/include/reflex \
+ /usr/local/include/reflex
+COPY --from=build-re-flex \
+ /usr/local/bin/reflex \
+ /usr/local/bin/
+
+COPY --from=get-criterion \
+ /criterion-2.4.2/include/criterion \
+ /usr/local/include/criterion
+COPY --from=get-criterion \
+ /criterion-2.4.2/lib/libcriterion.so.3.2.0 \
+ /usr/local/lib/
+
+RUN apk add --no-cache \
+ build-base \
+ make \
+ autoconf \
+ automake \
+ libtool \
+ flex \
+ bison \
+ boost-dev \
+ llvm19-dev \
+ clang19 \
+ ghc
+
+RUN ln -s /usr/local/lib/libnolimips.so.0.0.0 /usr/local/lib/libnolimips.so.0 \
+ && ln -s /usr/local/lib/libnolimips.so.0 /usr/local/lib/libnolimips.so \
+ && ln -s /usr/local/lib/libcriterion.so.3.2.0 /usr/local/lib/libcriterion.so.3 \
+ && ln -s /usr/local/lib/libcriterion.so.3 /usr/local/lib/libcriterion.so \
+ && ranlib /usr/local/lib/libnolimips.a \
+ && ranlib /usr/local/lib/libreflex.a \
+ && PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/sbin" ldconfig -n /usr/local/lib