# Plain Ubuntu base — multi-arch (ARM64/x86_64 auto-detected)
FROM ubuntu:22.04

ENV DEBIAN_FRONTEND=noninteractive

# Install build tools required for KiCad WASM build
RUN apt-get update && apt-get install -y \
    cmake \
    autoconf \
    automake \
    libtool \
    meson \
    ninja-build \
    pkg-config \
    curl \
    git \
    python3 \
    python3-dev \
    protobuf-compiler \
    swig \
    unixodbc-dev \
    ccache \
    rsync \
    xz-utils \
    unzip \
    && rm -rf /var/lib/apt/lists/*

# Install emsdk from source (same approach as scripts/setup-emsdk.sh). The version is the SINGLE
# source of truth in scripts/common/versions.sh, passed in as a build arg by docker/build.sh (via the
# compose build.args). Do NOT hardcode it here — fail fast if the arg is missing so a stale image can
# never silently use the wrong toolchain.
ARG EMSCRIPTEN_VERSION
RUN test -n "${EMSCRIPTEN_VERSION}" || { echo "EMSCRIPTEN_VERSION build-arg required (scripts/common/versions.sh)"; exit 1; }; \
    git clone https://github.com/emscripten-core/emsdk.git /emsdk \
    && cd /emsdk \
    && ./emsdk install ${EMSCRIPTEN_VERSION} \
    && ./emsdk activate ${EMSCRIPTEN_VERSION}

# Make Docker's own emsdk authoritative for EVERY process in the container, including
# `docker compose exec` (which bypasses the ENTRYPOINT). env.sh keys off $EMSDK: with it
# set, env.sh sources /emsdk/emsdk_env.sh and never falls back to the local tools/emsdk
# (which, inside this Linux container, can be a host macOS emsdk rsync'd in by mistake and
# thus unrunnable). This is what lets the wxWidgets autoconf build find emmake on PATH.
ENV EMSDK=/emsdk

# Configure ccache for Emscripten
# CCACHE_DIR in named volume persists across containers
ENV CCACHE_DIR=/workspace/build-wasm/.ccache
ENV CCACHE_MAXSIZE=10G
ENV CCACHE_COMPILERCHECK=content
ENV CCACHE_SLOPPINESS=include_file_mtime,time_macros,pch_defines
ENV CCACHE_BASEDIR=/workspace

WORKDIR /workspace

# Entry point that sources Emscripten environment
COPY docker/entrypoint.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh

ENTRYPOINT ["/entrypoint.sh"]
CMD ["bash"]
