# 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 " 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 " 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 " 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 " # 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 " \ 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