diff options
Diffstat (limited to 'tiger-compiler/docker/Dockerfile-testing')
| -rw-r--r-- | tiger-compiler/docker/Dockerfile-testing | 134 |
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 |
