FROM alpine:3.23 AS base

FROM base AS build
ARG VERSION
RUN --mount=type=cache,target=/var/cache/apk apk add gcc g++ musl-dev cmake ninja hwloc-dev libuv-dev openssl-dev git upx linux-headers
RUN adduser -D -S -h /home/luser luser
WORKDIR /home/luser
USER luser
ADD --chown=luser:luser git@github.com:xmrig/xmrig.git#v${VERSION} xmrig
ADD 001-remove-donation.patch .
RUN mkdir build
WORKDIR xmrig
RUN git apply /home/luser/001-remove-donation.patch
WORKDIR /home/luser
RUN cmake -G Ninja -S xmrig -B build -DCMAKE_BUILD_TYPE=Release \ 
  -DWITH_VAES=TRUE \
  -DWITH_RANDOMX=ON \
  -DWITH_OPENCL=OFF \
  -DWITH_MSR=ON \
  -DWITH_CUDA=OFF \
  -DWITH_BENCHMARK=OFF \
  -DWITH_HWLOC=ON \
  -DWITH_HTTP=ON \
  -DWITH_SSE41=ON \
  -DWITH_AVX2=ON \
  -DWITH_ASM=ON \
  -DWITH_ARGON2=ON \
  -DWITH_ADL=ON \
  -DWITH_CN_PICO=ON \
  -DWITH_CN_LITE=ON \
  -DWITH_CN_HEAVY=ON \
  -DWITH_CN_FEMTO=ON \
  -DWITH_GHOSTRIDER=ON \
  -DWITH_KAWPOW=ON \
  -DWITH_ENV_VARS=ON \
  -DWITH_RANDOMX=ON

WORKDIR build
RUN ninja
RUN strip -s xmrig
RUN upx -6 xmrig



FROM base AS release
RUN --mount=type=cache,target=/var/cache/apk apk add hwloc libuv openssl
COPY --from=build /home/luser/build/xmrig /usr/local/bin/xmrig
RUN adduser -D -S -h /var/lib/xmrig xmrig
WORKDIR /var/lib/xmrig
USER xmrig
ENTRYPOINT ["/usr/local/bin/xmrig"]
