ARG VERSION="24.04"
FROM ubuntu:$VERSION AS builder
ARG ARCH="x86_64"
ARG QT_VERSION="6.8.1"

RUN apt-get update
RUN apt-get install -y lsb-release software-properties-common gnupg
RUN apt-get install -y wget ninja-build ccache g++-14 gcc-14

# QT DEPS
RUN apt-get install -y libgl-dev libglu-dev  libx11-xcb-dev libxkbcommon-x11-dev libpcre2-dev libz-dev libfreetype6-dev libpng-dev libjpeg-dev libsqlite3-dev libharfbuzz-dev libb2-dev libdouble-conversion-dev libfontconfig1-dev
RUN apt-get install -y "libxcb*-dev"

WORKDIR /
RUN wget -q https://github.com/Kitware/CMake/releases/download/v3.30.4/cmake-3.30.4-linux-$ARCH.sh

# cmake bin
RUN sh /cmake-3.30.4-linux-$ARCH.sh --skip-license --prefix=/usr
RUN rm /cmake-3.30.4-linux-$ARCH.sh

# Install compilers
RUN wget -q https://apt.llvm.org/llvm.sh
RUN chmod +x llvm.sh
RUN ./llvm.sh 18

WORKDIR /
RUN wget -q https://download.qt.io/official_releases/qt/6.8/$QT_VERSION/single/qt-everywhere-src-$QT_VERSION.tar.xz
RUN tar xf qt-everywhere-src-$QT_VERSION.tar.xz
RUN rm qt-everywhere-src-$QT_VERSION.tar.xz
WORKDIR qt-everywhere-src-$QT_VERSION
RUN cmake -S . -B build -G Ninja \
       -D CMAKE_CXX_COMPILER=clang++-18 \
       -D CMAKE_C_COMPILER=clang-18 \
       -D CMAKE_INSTALL_PREFIX=\/usr \
       -D QT_BUILD_SUBMODULES='qtbase;qt5compat;qtmultimedia;qtdeclarative' \
       -D BUILD_qtbase=ON \
       # -D BUILD_qt5compat=ON \
       # -D BUILD_qtmultimedia=ON \
       # -D BUILD_qtdeclarative=ON \
       -D QT_FEATURE_zstd=OFF \
       -D QT_FEATURE_png=OFF \
       -D QT_FEATURE_jpeg=OFF \
       -D QT_FEATURE_ico=OFF \
       -D QT_FEATURE_gif=OFF \
       -D QT_FEATURE_harfbuzz=OFF \
       -D QT_FEATURE_freetype=OFF \
       -D BUILD_SHARED_LIBS=OFF \
       -D INPUT_icu=no \
       -D INPUT_pcre=system \
       -D INPUT_glib=no \
       -D INPUT_fontconfig=no \
       -D INPUT_optimize_size=yes \
       -D QT_USE_CCACHE=OFF \
       -D CMAKE_BUILD_TYPE=Release

RUN cmake --build build --parallel 6
RUN cmake --build build --target install
WORKDIR /
RUN ln -s /bin/clang-18 /bin/clang
RUN ln -s /bin/clang++-18 /bin/clang++

FROM ubuntu:$VERSION

COPY --from=builder /usr /usr
