FROM ubuntu:24.04 as clang ENV DEBIAN_FRONTEND=noninteractive ARG LLVM_VERSION=20 RUN apt-get update \ && apt-get install -y \ wget \ lsb-release \ software-properties-common \ gnupg RUN wget https://apt.llvm.org/llvm.sh \ && chmod +x llvm.sh \ && ./llvm.sh ${LLVM_VERSION} \ && rm llvm.sh RUN update-alternatives --install /usr/bin/clang clang /usr/bin/clang-${LLVM_VERSION} 100 \ --slave /usr/bin/clang++ clang++ /usr/bin/clang++-${LLVM_VERSION} RUN update-alternatives --install /usr/bin/lld lld /usr/bin/lld-${LLVM_VERSION} 100 RUN apt-get install -y \ libc++-${LLVM_VERSION}-dev \ libc++abi-${LLVM_VERSION}-dev \ && rm -rf /var/lib/apt/lists/* ENV CC="clang" \ CXX="clang++" \ CC_LD="lld" \ CXX_LD="lld" FROM clang AS ivjcraft ARG MESON_VERSION=1.10.2 RUN apt-get update \ && apt-get install -y software-properties-common \ && add-apt-repository ppa:ubuntu-toolchain-r/test \ && apt-get update \ && apt-get install -y \ build-essential \ ninja-build \ libsdl2-dev \ libgl-dev \ libglm-dev \ libglu1-mesa-dev \ libpthread-stubs0-dev \ libssl-dev \ gcc-15 g++-15 \ && update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-15 100 \ && update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-15 100 \ && apt-get autoremove -y \ && apt-get clean -y \ && rm -rf /var/lib/apt/lists/* RUN wget -qO meson.tar.gz https://github.com/mesonbuild/meson/releases/latest/download/meson-${MESON_VERSION}.tar.gz \ && mkdir /opt/meson \ && tar xf meson.tar.gz --strip-components=1 -C /opt/meson \ && mv /opt/meson/meson.py /opt/meson/meson \ && ln -s /opt/meson/meson /usr/bin/meson \ && rm -rf meson.tar.gz