diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile index a105d4b1c..bef21bbe6 100644 --- a/.devcontainer/Dockerfile +++ b/.devcontainer/Dockerfile @@ -1,33 +1,62 @@ -FROM mcr.microsoft.com/devcontainers/cpp:1-ubuntu-24.04 +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 -y ppa:ubuntu-toolchain-r/test \ + && add-apt-repository ppa:ubuntu-toolchain-r/test \ && apt-get update \ && apt-get install -y \ build-essential \ - gcc-15 g++-15 \ - python3 \ 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 MESON_VERSION=1.10.2 \ - && wget -qO meson.tar.gz https://github.com/mesonbuild/meson/releases/latest/download/meson-${MESON_VERSION}.tar.gz \ +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 - -ENV DEBIAN_FRONTEND=dialog