llvm19
Source
FROM scratch AS build
COPY --from=stagex/bootstrap-stage3 . /
ARG VERSION
ARG CPORTS_VERSION
ARG TARGETARCH
COPY <<-'EOF' /etc/profile
set -eux
[[ "$TARGETARCH" == "amd64" ]] \
&& ARCH="x86_64" \
&& LLVM_TARGET_ARCH="X86"
[[ "$TARGETARCH" == "arm64" ]] \
&& ARCH="aarch64" \
&& LLVM_TARGET_ARCH="AArch64"
export ARCH
export MAKEFLAGS="-j$(nproc)"
export BUILD=${ARCH}-unknown-linux-musl
export TARGET=${ARCH}-unknown-linux-musl
EOF
SHELL ["/bin/sh","-l","-c"]
ENV CFLAGS="-fPIC"
ENV CXXFLAGS="$CFLAGS"
ADD fetch/llvm19-${VERSION}.tar.xz /
ADD fetch/cports-${CPORTS_VERSION}.tar.gz .
WORKDIR /llvm-project-${VERSION}.src
ADD patches/*.patch .
RUN --network=none <<-EOF
cp /cports-${CPORTS_VERSION}/main/llvm/patches/*.patch .
patch -p1 < 0001-llvm-always-set-a-larger-stack-size-explicitly.patch
patch -p1 < 0002-llvm-musl-workarounds.patch
patch -p1 < 0003-llvm-fix-some-MF_EXEC-related-test-failures-on-aarch.patch
patch -p1 < 0004-llvm-disable-dependency-on-libexecinfo-everywhere.patch
patch -p1 < 0005-compiler-rt-ppc-sanitizer-fixes.patch
patch -p1 < 0006-compiler-rt-default-to-libc-for-sanitizers.patch
patch -p1 < 0007-compiler-rt-build-crt-in-runtimes-build.patch
patch -p1 < 0008-compiler-rt-lsan-basic-musl-fixes-on-various-archs.patch
patch -p1 < 0009-compiler-rt-HACK-hwasan-build-on-x86_64.patch
patch -p1 < 0010-compiler-rt-libcxx-abi-libunwind-HACK-force-fno-lto.patch
patch -p1 < 0011-compiler-rt-HACK-always-compile-in-gcc_personality_v.patch
patch -p1 < 0012-libc-libc-abi-libunwind-disable-multiarch-locations.patch
patch -p1 < 0013-libc-musl-locale-workarounds.patch
patch -p1 < 0014-clang-disable-multiarch-layout-on-musl.patch
patch -p1 < 0015-clang-drop-incorrect-warning-about-vector-equality-r.patch
patch -p1 < 0016-clang-add-fortify-include-paths-for-musl-triplets-en.patch
patch -p1 < 0017-clang-use-as-needed-by-default.patch
patch -p1 < 0018-clang-switch-on-default-now-relro.patch
patch -p1 < 0019-clang-default-to-fno-semantic-interposition.patch
patch -p1 < 0020-clang-implicitly-link-to-libatomic-on-linux-targets.patch
patch -p1 < 0021-clang-use-strong-stack-protector-by-default.patch
patch -p1 < 0022-clang-fix-unwind-chain-inclusion.patch
patch -p1 < 0023-clang-error-when-using-ifunc-attribute-on-unsupporte.patch
patch -p1 < 0024-clang-link-libcxxabi-on-linux-when-using-libc.patch
patch -p1 < 0025-Get-rid-of-spurious-trailing-space-in-__clang_versio.patch
patch -p1 < 0026-clang-implicitly-include-stdc-predef.h.patch
patch -p1 < 0027-32-bit-musl-sanitizer-fixes.patch
patch -p1 < 0028-compiler-rt-use-getauxval-instead-of-__getauxval-for.patch
patch -p1 < 0029-fix-scan-build.patch
patch -p1 < 0030-libcxx-default-to-type-2.patch
patch -p1 < 91b5bef358e6763c5e18e34b1bc37e64114b3e04.patch
patch -p1 < more-musl-hacks.patch
find compiler-rt -iname CMakeLists.txt -exec sed -i '1s/^/set(COMPILER_RT_BUILD_SANITIZERS OFF)\n/' {} \;
find compiler-rt -iname CMakeLists.txt -exec sed -i '1s/^/set(COMPILER_RT_BUILD_GWP_ASAN OFF)\n/' {} \;
find compiler-rt -iname CMakeLists.txt -exec sed -i '1s/^/set(COMPILER_RT_HAS_GWP_ASAN FALSE)\n/' {} \;
find compiler-rt -iname *.cmake -exec sed -i '1s/^/set(COMPILER_RT_BUILD_SANITIZERS OFF)\n/' {} \;
find compiler-rt -iname *.cmake -exec sed -i '1s/^/set(COMPILER_RT_BUILD_MEMPROF OFF)\n/' {} \;
find compiler-rt -iname *.cmake -exec sed -i '1s/^/set(COMPILER_RT_HAS_MEMPROF FALSE)\n/' {} \;
find compiler-rt -iname *.cmake -exec sed -i '1s/^/set(COMPILER_RT_BUILD_GWP_ASAN OFF)\n/' {} \;
find compiler-rt -iname *.cmake -exec sed -i '1s/^/set(COMPILER_RT_HAS_GWP_ASAN FALSE)\n/' {} \;
cmake \
-B build \
-S llvm \
-Wno-dev \
-DCMAKE_BUILD_TYPE=Release \
-DENABLE_LINKER_BUILD_ID=YES \
-DCMAKE_INSTALL_PREFIX=/usr/ \
-DCMAKE_INSTALL_RPATH=/usr/lib \
-DLLVM_TARGET_ARCH="$LLVM_TARGET_ARCH" \
-DLLVM_TARGETS_TO_BUILD="$LLVM_TARGET_ARCH" \
-DLLVM_HOST_TRIPLE="$TARGET" \
-DLLVM_RUNTIME_TARGETS="$TARGET" \
-DLLVM_BUILTIN_TARGETS="$TARGET" \
-DLLVM_ENABLE_PROJECTS="clang;lld" \
-DLLVM_ENABLE_RUNTIMES="compiler-rt;libunwind;libcxx;libcxxabi" \
-DLLVM_ENABLE_PER_TARGET_RUNTIME_DIR=ON \
-DLLVM_ENABLE_LIBXML2=OFF \
-DLLVM_ENABLE_LIBEDIT=OFF \
-DLLVM_ENABLE_LIBPFM=OFF \
-DLLVM_ENABLE_LIBCXX=ON \
-DLLVM_BUILD_LLVM_DYLIB=ON \
-DLLVM_LINK_LLVM_DYLIB=ON \
-DLLVM_ENABLE_RTTI=OFF \
-DLLVM_INSTALL_UTILS=ON \
-DLLVM_INSTALL_BINUTILS_SYMLINKS=ON \
-DCLANG_CONFIG_FILE_SYSTEM_DIR=/etc/clang \
-DCLANG_ENABLE_BOOTSTRAP=ON \
-DCLANG_DEFAULT_RTLIB=compiler-rt \
-DCLANG_DEFAULT_UNWINDLIB=libunwind \
-DCLANG_DEFAULT_CXX_STDLIB=libc++ \
-DLIBCXX_HAS_MUSL_LIBC=ON \
-DLIBCXX_CXX_ABI=libcxxabi \
-DLIBCXX_USE_COMPILER_RT=ON \
-DLIBCXX_ENABLE_STATIC_ABI_LIBRARY=OFF \
-DLIBCXX_HAS_MUSL_LIBC=ON \
-DLIBCXX_HARDENING_MODE=fast \
-DLIBCXX_ENABLE_LOCALIZATION=OFF \
-DLIBCXX_ENABLE_FILESYSTEM=OFF \
-DLIBCXXABI_ENABLE_STATIC_UNWINDER=OFF \
-DLIBCXXABI_USE_LLVM_UNWINDER=ON \
-DLIBCXXABI_USE_COMPILER_RT=ON \
-DLIBUNWIND_USE_COMPILER_RT=ON \
-DCOMPILER_RT_DEFAULT_TARGET_TRIPLE="$TARGET" \
-DCOMPILER_RT_DEFAULT_TARGET_ONLY=ON \
-DCOMPILER_RT_USE_BUILTINS_LIBRARY=ON \
-DCOMPILER_RT_BUILD_GWP_ASAN=OFF \
-DCOMPILER_RT_HAS_GWP_ASAN=FALSE \
-DCOMPILER_RT_BUILD_SANITIZERS=OFF \
-DCOMPILER_RT_BUILD_XRAY=OFF \
-DCOMPILER_RT_BUILD_LIBFUZZER=OFF \
-DCOMPILER_RT_BUILD_PROFILE=OFF \
-DCOMPILER_RT_BUILD_MEMPROF=OFF \
-DCOMPILER_RT_BUILD_CTX_PROFILE=OFF \
-DCOMPILER_RT_TEST_COMPILER=OFF \
-DCOMPILER_RT_TEST_CXX_COMPILER=OFF
cmake --build build -v --parallel $(nproc)
cmake --install build
export LIBCC="/usr/lib/clang/19/lib/${TARGET}/libclang_rt.builtins.a"
export LDFLAGS="-fuse-ld=/usr/bin/ld.lld"
rm -rf build
cmake \
-B build \
-S llvm \
-Wno-dev \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=/usr/lib/llvm19 \
-DCMAKE_INSTALL_RPATH=/usr/lib/llvm19/lib \
-DCMAKE_C_COMPILER=/usr/bin/clang \
-DCMAKE_CXX_COMPILER=/usr/bin/clang++ \
-DCMAKE_AR=/usr/bin/llvm-ar \
-DCMAKE_NM=/usr/bin/llvm-nm \
-DCMAKE_RANLIB=/usr/bin/llvm-ranlib \
-DCLANG_TABLEGEN=/usr/bin/clang-tblgen \
-DCLANG_PSEUDO_GEN=/usr/bin/clang-pseudo-gen \
-DLLVM_HEADERS_TABLEGEN=/usr/bin/llvm-tblgen \
-DCLANG_TIDY_CONFUSABLE_CHARS_GEN=/usr/bin/clang-tidy-confusable-chars-gen \
-DMLIR_TABLEGEN=/usr/bin/mlir-tblgen \
-DMLIR_PDLL_TABLEGEN=/usr/bin/mlir-pdll \
-DMLIR_LINALG_ODS_YAML_GEN=/usr/bin/mlir-linalg-ods-yaml-gen \
-DLLVM_NATIVE_TOOL_DIR=/usr/bin/ \
-DLLVM_CONFIG_PATH=/usr/bin/llvm-config \
-DENABLE_LINKER_BUILD_ID=YES \
-DLLVM_TARGET_ARCH="${LLVM_TARGET_ARCH}" \
-DLLVM_TARGETS_TO_BUILD="${LLVM_TARGET_ARCH}" \
-DLLVM_HOST_TRIPLE="${TARGET}" \
-DLLVM_DEFAULT_TARGET_TRIPLE="${TARGET}" \
-DLLVM_HOST_TRIPLE="${TARGET}" \
-DLLVM_RUNTIME_TARGETS="${TARGET}" \
-DLLVM_BUILTIN_TARGETS="${TARGET}" \
-DLLVM_ENABLE_PROJECTS="clang;lld;lldb" \
-DLLVM_ENABLE_RUNTIMES="compiler-rt;libunwind;libcxx;libcxxabi" \
-DLLVM_ENABLE_PER_TARGET_RUNTIME_DIR=YES \
-DLLVM_ENABLE_ZLIB=YES \
-DLLVM_ENABLE_LLD=YES \
-DLLVM_ENABLE_LIBXML2=NO \
-DLLVM_ENABLE_LIBCXX=YES \
-DLLVM_BUILD_LLVM_DYLIB=YES \
-DLLVM_LINK_LLVM_DYLIB=YES \
-DLLVM_ENABLE_RTTI=YES \
-DLLVM_INSTALL_UTILS=YES \
-DLLVM_INSTALL_BINUTILS_SYMLINKS=YES \
-DCLANG_CONFIG_FILE_SYSTEM_DIR=/etc/clang \
-DCLANG_ENABLE_BOOTSTRAP=YES \
-DCLANG_DEFAULT_RTLIB=compiler-rt \
-DCLANG_DEFAULT_UNWINDLIB=libunwind \
-DCLANG_DEFAULT_CXX_STDLIB=libc++ \
-DLIBCXX_CXX_ABI=libcxxabi \
-DLIBCXX_USE_COMPILER_RT=YES \
-DLIBCXX_ENABLE_STATIC_ABI_LIBRARY=NO \
-DLIBCXX_HAS_MUSL_LIBC=YES \
-DLIBCXX_HARDENING_MODE=fast \
-DLIBCXX_ENABLE_LOCALIZATION=NO \
-DLIBCXX_ENABLE_FILESYSTEM=NO \
-DLIBCXXABI_ENABLE_STATIC_UNWINDER=NO \
-DLIBCXXABI_USE_LLVM_UNWINDER=YES \
-DLIBCXXABI_USE_COMPILER_RT=YES \
-DLIBUNWIND_USE_COMPILER_RT=YES \
-DMLIR_INSTALL_AGGREGATE_OBJECTS=OFF \
-DCOMPILER_RT_DEFAULT_TARGET_TRIPLE="${TARGET}" \
-DCOMPILER_RT_DEFAULT_TARGET_ONLY=YES \
-DCOMPILER_RT_USE_BUILTINS_LIBRARY=YES \
-DCOMPILER_RT_HAS_GWP_ASAN=FALSE \
-DCOMPILER_RT_BUILD_GWP_ASAN=NO \
-DCOMPILER_RT_TEST_COMPILER=NO \
-DCOMPILER_RT_TEST_CXX_COMPILER=NO
cmake --build build -v --parallel $(nproc)
DESTDIR="/rootfs" cmake --install build
cmake \
-B build \
-S llvm \
-Wno-dev \
-DCMAKE_ASM_COMPILER_TARGET="${TARGET}" \
-DCMAKE_C_COMPILER_TARGET="${TARGET}" \
-DCMAKE_CXX_COMPILER_TARGET="${TARGET}" \
-DCMAKE_TRY_COMPILE_TARGET_TYPE=STATIC_LIBRARY \
-DCMAKE_BUILD_TYPE=Release \
-DLLVM_ENABLE_PER_TARGET_RUNTIME_DIR=ON \
-DCOMPILER_RT_BUILTINS_HIDE_SYMBOLS=OFF \
-DCOMPILER_RT_DEFAULT_TARGET_ONLY=ON \
-DCOMPILER_RT_BUILD_BUILTINS=ON \
-DCOMPILER_RT_BUILD_CRT=OFF \
-DCOMPILER_RT_BUILD_LIBFUZZER=OFF \
-DCOMPILER_RT_BUILD_MEMPROF=OFF \
-DCOMPILER_RT_BUILD_PROFILE=OFF \
-DCOMPILER_RT_BUILD_SANITIZERS=OFF \
-DCOMPILER_RT_BUILD_XRAY=OFF \
-DCOMPILER_RT_BUILD_ORC=OFF \
-DCOMPILER_RT_BUILD_CTX_PROFILE=OFF \
-DCOMPILER_RT_DEFAULT_TARGET_ONLY=YES
/usr/bin/clang++ \
-nodefaultlibs \
-shared \
-Wl,-soname,libgcc_s.so.1 \
-Wl,--no-undefined \
-Wl,--whole-archive \
build/lib/clang/19/lib/${TARGET}/libclang_rt.builtins.a \
-Wl,--no-as-needed \
-lc \
-lunwind \
-o build/libgcc_s.so.1
cp build/libgcc_s.so.1 /rootfs/usr/lib/llvm19/lib/
EOF
FROM stagex/core-filesystem AS package-llvm19
COPY --from=build /rootfs/ /Copied to clipboard!