Source
FROM scratch AS build
ARG VERSION
COPY --from=stagex/core-busybox . /
COPY --from=stagex/core-binutils . /
COPY --from=stagex/core-cmake . /
COPY --from=stagex/core-samurai . /
COPY --from=stagex/core-musl . /
COPY --from=stagex/core-gcc . /
COPY --from=stagex/core-python . /
COPY --from=stagex/core-py-setuptools . /
COPY --from=stagex/core-zlib . /
COPY --from=stagex/core-openssl . /
ADD fetch/llvm17-${VERSION}.tar.xz .
WORKDIR /llvm-project-${VERSION}.src
ADD *.patch .
RUN --network=none <<-EOF
set -eux
python -c "import setuptools; print(setuptools.__version__)"
ARCH="$(uname -m)"
cmake \
-B build \
-G Ninja \
-Wno-dev -S llvm \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=/usr/ \
-DCMAKE_INSTALL_RPATH=/usr/ \
-DLLVM_DEFAULT_TARGET_TRIPLE="${ARCH}-linux-musl" \
-DLLVM_HOST_TRIPLE="${ARCH}-linux-musl" \
-DLLVM_APPEND_VC_REV=OFF \
-DLLVM_BINUTILS_INCDIR=/usr/include \
-DLLVM_BUILD_DOCS=OFF \
-DLLVM_BUILD_EXAMPLES=OFF \
-DLLVM_BUILD_EXTERNAL_COMPILER_RT=ON \
-DLLVM_BUILD_LLVM_DYLIB=ON \
-DLLVM_BUILD_TESTS=ON \
-DLLVM_ENABLE_ASSERTIONS=OFF \
-DLLVM_ENABLE_DUMP=ON \
-DLLVM_ENABLE_EH=ON \
-DLLVM_ENABLE_FFI=OFF \
-DLLVM_ENABLE_LIBCXX=OFF \
-DLLVM_ENABLE_LIBEDIT=OFF \
-DLLVM_ENABLE_PIC=ON \
-DLLVM_ENABLE_RTTI=ON \
-DLLVM_ENABLE_SPHINX=OFF \
-DLLVM_ENABLE_TERMINFO=ON \
-DLLVM_ENABLE_ZLIB=FORCE_ON \
-DLLVM_ENABLE_ZSTD=OFF \
-DLLVM_INCLUDE_BENCHMARKS=OFF \
-DLLVM_INCLUDE_EXAMPLES=OFF \
-DLLVM_INSTALL_UTILS=ON \
-DLLVM_LINK_LLVM_DYLIB=ON \
-DLLVM_USE_PERF=ON
cmake --build build
python3 llvm/utils/lit/setup.py build
DESTDIR="/rootfs" cmake --install build
python3 llvm/utils/lit/setup.py install --root="/rootfs"
ln -s lit /rootfs/usr/bin/llvm-lit
EOF
FROM stagex/core-filesystem AS package
COPY --from=build /rootfs/ /