FROM --platform=${BUILDPLATFORM} pull registry.opensuse.org/opensuse/bci/rust:latest as builder

RUN \
if [ "${TARGETPLATFORM}" != "${BUILDPLATFORM}" ]; then \
  if [ "${TARGETPLATFORM}" == "linux/amd64" ]; then \
      zypper in -y cross-x86_64-gcc15 ; \
      rustup target add x86_64-unknown-linux-gnu ; \
  elif [ "${TARGETPLATFORM}" == "linux/arm64" ]; then \
      zypper in -y cross-aarch64-gcc15 ; \
      rustup target add aarch64-unknown-linux-gnu ; \
  fi; \
fi ; \
if [ "${TARGETPLATFORM}" == "linux/amd64" ]; then \
  export CARGO_BUILD_TARGET=x86_64-unknown-linux-gnu ; \
  export CARGO_TARGET_X86_64_UNKNOWN_LINUX_GNU_LINKER=x86_64-suse-linux-gcc-15 ; \
  export CC_X86_64_UNKNOWN_LINUX_GNU=x86_64-suse-linux-gcc-15 ; \
  export CXX_X86_64_UNKNOWN_LINUX_GNU=x86_64-suse-linux-g++-15 ; \
elif [ "${TARGETPLATFORM}" == "linux/arm64" ]; then \
  export CARGO_BUILD_TARGET=aarch64-unknown-linux-gnu ; \
  export CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER=aarch64-suse-linux-gcc-15 ; \
  export CC_AARCH64_UNKNOWN_LINUX_GNU=aarch64-suse-linux-gcc-15 ; \
  export CXX_AARCH64_UNKNOWN_LINUX_GNU=aarch64-suse-linux-g++-15 ; \
fi

WORKDIR /app

COPY . ./

RUN cargo build --release && mv "/app/target/${CARGO_BUILD_TARGET}" /app/target/final

FROM --platform=${TARGETPLATFORM} registry.suse.com/bci/bci-micro:latest

COPY --link --from=builder /app/target/final/release/hkj /usr/local/bin/hkj

CMD ["hkj"]
