FROM ubuntu:24.04 AS builder ENV DEBIAN_FRONTEND=noninteractive RUN apt-get update && \ apt-get upgrade -y && \ apt-get install -y --no-install-recommends \ git \ gcc \ g++ \ cmake \ ninja-build \ python3 \ ca-certificates && \ # Build MLIR (no install — keep full build tree) cd /opt && \ git clone --filter=blob:none --no-checkout https://github.com/llvm/llvm-project.git && \ cd llvm-project && \ git fetch --depth 1 origin 0c2701fe7fa002e1befc5f86c268a7964f96d286 && \ git checkout FETCH_HEAD && \ cmake -S llvm -B build \ -G Ninja \ -DCMAKE_BUILD_TYPE=Release \ -DLLVM_ENABLE_PROJECTS="mlir;clang" \ -DLLVM_ENABLE_RUNTIMES="openmp" \ -DLLVM_TARGETS_TO_BUILD="host" \ -DLLVM_ENABLE_ASSERTIONS=ON \ -DLLVM_ENABLE_RTTI=ON \ -DENABLE_LIBOMPTARGET=OFF \ -DLLVM_ENABLE_LIBEDIT=OFF \ -DLLVM_PARALLEL_LINK_JOBS=1 && \ cmake --build build -j $(nproc) && \ # Build protobuf cd /tmp && \ git clone --depth 1 --branch v34.0 https://github.com/protocolbuffers/protobuf && \ cd protobuf && \ cmake -S . -B build \ -G Ninja \ -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_INSTALL_PREFIX=/opt/protobuf && \ cmake --build build -j $(nproc) && \ cmake --build build -- install && \ # Cleanup only temp files, keep /opt/llvm-project rm -rf /tmp/* FROM ubuntu:24.04 ENV DEBIAN_FRONTEND=noninteractive RUN apt-get update && \ apt-get upgrade -y && \ apt-get install -y --no-install-recommends \ ca-certificates \ cmake \ ninja-build \ build-essential \ python3 \ python3-pip && \ apt-get autoremove -y && \ apt-get clean -y && \ rm -rf /var/lib/apt/lists/* COPY --from=builder /opt/llvm-project /opt/llvm-project COPY --from=builder /opt/protobuf /opt/protobuf RUN echo "/opt/protobuf/lib" > /etc/ld.so.conf.d/protobuf.conf && ldconfig