FROM --platform=$BUILDPLATFORM alpine:latest AS builder # Add build arguments for platform ARG TARGETPLATFORM ARG BUILDPLATFORM # Install build dependencies RUN apk add --no-cache \ build-base \ cmake \ git \ musl-dev \ curl \ bash \ musl \ g++ \ ninja \ linux-headers \ mold # Set working directory WORKDIR /build # Copy source files COPY . . # Configure and build RUN mkdir -p build_static && \ cmake -G Ninja -B build_static -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_EXE_LINKER_FLAGS="-static" \ -DCMAKE_FIND_LIBRARY_SUFFIXES=".a" \ -DBUILD_SHARED_LIBS=OFF \ ${CMAKE_TOOLCHAIN_FILE:+-DCMAKE_TOOLCHAIN_FILE=$CMAKE_TOOLCHAIN_FILE} RUN cmake --build build_static # Final stage that only contains the binary FROM scratch AS $PROJECT COPY --from=builder /build/build_static/$PROJECT /$PROJECT