ARG BASE_IMAGE=xml-cli-benchmark-baseline
FROM ghcr.io/graalvm/native-image-community:25i2-25.0.4@sha256:7187b4a37ebd4055f7a5fb518f9882ad6e25331862633991cbe007a1f43d739d AS builder

RUN microdnf install -y maven \
    && microdnf clean all

ENV PATH=/usr/lib64/graalvm/graalvm-community-java25i2/bin:${PATH}
WORKDIR /src

COPY work/java-parser-benchmark/pom.xml ./pom.xml
RUN mvn --batch-mode --no-transfer-progress dependency:copy-dependencies \
      -DincludeScope=runtime -DoutputDirectory=/deps

COPY work/java-parser-benchmark/*.java ./
COPY work/java-parser-benchmark/META-INF /classes/META-INF
RUN mkdir -p /classes /out \
    && javac --release 21 -cp '/deps/*' -d /classes *.java \
    && native-image -cp /classes JdkSaxLint -o /out/jdk-sax-lint \
    && native-image -cp /classes JdkStaxLint -o /out/jdk-stax-lint \
    && native-image \
         -cp '/classes:/deps/aalto-xml-1.4.0.jar:/deps/stax2-api-4.3.0.jar' \
         AaltoLint -o /out/aalto-lint \
    && native-image \
         -cp '/classes:/deps/woodstox-core-7.2.1.jar:/deps/stax2-api-4.3.0.jar' \
         WoodstoxLint -o /out/woodstox-lint

FROM ${BASE_IMAGE}

COPY --from=builder /classes /opt/java-parsers/classes
COPY --from=builder /deps /opt/java-parsers/lib
COPY --from=builder /out /opt/java-parsers/native
COPY work/java-parser-benchmark/verify-java-only.sh /usr/local/bin/verify-java-only
COPY work/java-parser-benchmark/benchmark-java-only.sh /usr/local/bin/benchmark-java-only
RUN chmod +x /usr/local/bin/verify-java-only /usr/local/bin/benchmark-java-only
