# syntax=docker/dockerfile:1.7
# SPDX-License-Identifier: GPL-3.0-or-later
ARG UBUNTU_IMAGE=ubuntu:26.04@sha256:651ba3fe3a830441e3deaf70fafac40d808a6bd2800a6f2c43130055159f23e6
FROM ${UBUNTU_IMAGE} AS build

ARG DEBIAN_FRONTEND=noninteractive
RUN apt-get update && apt-get install -y --no-install-recommends \
      ca-certificates \
      bsdextrautils \
      clang-18 \
      clang-format-18 \
      clang-tidy-18 \
      cmake \
      curl \
      git \
      lld-18 \
      llvm-18-dev \
      ninja-build \
      python3 \
      unzip \
    && rm -rf /var/lib/apt/lists/*

ARG PS5_SDK_URL=https://github.com/ps5-payload-dev/sdk/releases/download/v0.41/ps5-payload-sdk.zip
ARG PS5_SDK_SHA256=ebfb0acb5260511951a80e17db41650c62d20a8caf8659a230b928dc85005984
RUN curl -fL --retry 3 --output /tmp/ps5-payload-sdk.zip "${PS5_SDK_URL}" \
    && echo "${PS5_SDK_SHA256}  /tmp/ps5-payload-sdk.zip" | sha256sum --check --strict \
    && unzip -q /tmp/ps5-payload-sdk.zip -d /opt \
    && rm /tmp/ps5-payload-sdk.zip

ENV PS5_PAYLOAD_SDK=/opt/ps5-payload-sdk
ENV LLVM_CONFIG=/usr/bin/llvm-config-18

WORKDIR /src
COPY . /src

RUN cmake -S /src -B /build/host -G Ninja \
      -DCMAKE_BUILD_TYPE=Release \
      -DCMAKE_C_COMPILER=clang-18 \
      -DCHIMERA_GFX_ENABLE_CLANG_TIDY=ON \
      -DBUILD_TESTING=ON \
    && cmake --build /build/host \
    && ctest --test-dir /build/host --output-on-failure

RUN cmake -S /src -B /build/ps5 -G Ninja \
      -DCMAKE_TOOLCHAIN_FILE=/opt/ps5-payload-sdk/toolchain/prospero.cmake \
      -DCHIMERA_GFX_BUILD_PS5_PROBE=ON \
      -DCHIMERA_GFX_PS5_ALLOWED_FIRMWARE=NONE \
      -DBUILD_TESTING=OFF \
    && cmake --build /build/ps5

FROM scratch AS artifacts
COPY --from=build /build/ps5/chimera-gfx-capability-probe.elf /
