util/crossgcc: Update clang to 21.1.8

The current clang version cannot be built using GCC-15 so switch to a
more recent release.

It also adds a new dependency called third party. Its used in various
LLVM components and is needed to build clang.

Signed-off-by: Maximilian Brune <maximilian.brune@9elements.com>
Change-Id: I0f2ebc214726fd4ae4f7bba50a662dd5cb89a718
Reviewed-on: https://review.coreboot.org/c/coreboot/+/89377
Reviewed-by: Patrick Rudolph <patrick.rudolph@9elements.com>
Reviewed-by: Angel Pons <th3fanbus@gmail.com>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
This commit is contained in:
Maximilian Brune 2025-09-30 03:18:43 +02:00 committed by Matt DeVillier
commit 235bb1e617
20 changed files with 42 additions and 40 deletions

View file

@ -49,7 +49,7 @@ NASM_VERSION=2.16.03 # x86 assembly
IASL_VERSION=20250807 # ACPI compiler
# Clang/LLVM Toolchain (alternative to GCC, built separately)
CLANG_VERSION=18.1.8
CLANG_VERSION=21.1.8
CMAKE_VERSION=4.0.3 # Required for building Clang
# Architecture-specific options
@ -72,6 +72,7 @@ CTE_ARCHIVE="clang-tools-extra-${CLANG_VERSION}.src.tar.xz"
LLVMCMAKE_ARCHIVE="cmake-${CLANG_VERSION}.src.tar.xz"
LIBUNWIND_ARCHIVE="libunwind-${CLANG_VERSION}.src.tar.xz"
RUNTIMES_ARCHIVE="runtimes-${CLANG_VERSION}.src.tar.xz"
THIRD_PARTY_ARCHIVE="third-party-${CLANG_VERSION}.src.tar.xz"
CMAKE_ARCHIVE="cmake-${CMAKE_VERSION}.tar.gz"
NASM_ARCHIVE="nasm-${NASM_VERSION}.tar.bz2"
@ -96,6 +97,7 @@ LLVMCMAKE_BASE_URL="https://github.com/llvm/llvm-project/releases/download/llvmo
LLD_BASE_URL="https://github.com/llvm/llvm-project/releases/download/llvmorg-${CLANG_VERSION}"
LIBUNWIND_BASE_URL="https://github.com/llvm/llvm-project/releases/download/llvmorg-${CLANG_VERSION}"
RUNTIMES_BASE_URL="https://github.com/llvm/llvm-project/releases/download/llvmorg-${CLANG_VERSION}"
THIRD_PARTY_BASE_URL="https://github.com/llvm/llvm-project/releases/download/llvmorg-${CLANG_VERSION}"
CMAKE_BASE_URL="https://cmake.org/files/v${CMAKE_VERSION%.*}"
NASM_BASE_URL="https://www.nasm.us/pub/nasm/releasebuilds/${NASM_VERSION}"
@ -104,7 +106,8 @@ ALL_ARCHIVES="$GMP_BASE_URL/$GMP_ARCHIVE $MPFR_BASE_URL/$MPFR_ARCHIVE $MPC_BASE_
$LLD_BASE_URL/$LLD_ARCHIVE $LLVM_BASE_URL/$LLVM_ARCHIVE $CLANG_BASE_URL/$CLANG_ARCHIVE \
$LLVMCMAKE_BASE_URL/$LLVMCMAKE_ARCHIVE $CRT_BASE_URL/$CRT_ARCHIVE $CTE_BASE_URL/$CTE_ARCHIVE \
$LIBUNWIND_BASE_URL/$LIBUNWIND_ARCHIVE $RUNTIMES_BASE_URL/$RUNTIMES_ARCHIVE \
$CMAKE_BASE_URL/$CMAKE_ARCHIVE $NASM_BASE_URL/$NASM_ARCHIVE $LIBSTDCXX_BASE_URL/$LIBSTDCXX_ARCHIVE"
$THIRD_PARTY_BASE_URL/$THIRD_PARTY_ARCHIVE $CMAKE_BASE_URL/$CMAKE_ARCHIVE \
$NASM_BASE_URL/$NASM_ARCHIVE $LIBSTDCXX_BASE_URL/$LIBSTDCXX_ARCHIVE"
# GCC toolchain directories
GMP_DIR="gmp-${GMP_VERSION}"
@ -125,6 +128,7 @@ CTE_DIR="clang-tools-extra-${CLANG_VERSION}.src"
LLVMCMAKE_DIR="cmake-${CLANG_VERSION}.src"
LIBUNWIND_DIR="libunwind-${CLANG_VERSION}.src"
RUNTIMES_DIR="runtimes-${CLANG_VERSION}.src"
THIRD_PARTY_DIR="third-party-${CLANG_VERSION}.src"
CMAKE_DIR="cmake-${CMAKE_VERSION}"
NASM_DIR="nasm-${NASM_VERSION}"
@ -953,6 +957,7 @@ build_LLVM() {
ln -nsf "$LLVMCMAKE_DIR" ../cmake
ln -nsf "$LIBUNWIND_DIR" ../libunwind
ln -nsf "$RUNTIMES_DIR" ../runtimes
ln -nsf "$THIRD_PARTY_DIR" ../third-party
$CMAKE -G "Unix Makefiles" \
-DCMAKE_INSTALL_PREFIX="$DESTDIR$TARGETDIR" \
@ -1109,7 +1114,7 @@ case "$PACKAGE" in
CLANG|clang)
NAME="LLVM clang"
LLVM_VERSION=${CLANG_VERSION}
PACKAGES="CMAKE LLVM CLANG CRT CTE LLVMCMAKE LLD LIBUNWIND RUNTIMES"
PACKAGES="CMAKE LLVM CLANG CRT CTE LLVMCMAKE LLD LIBUNWIND RUNTIMES THIRD_PARTY"
CMAKE=${DESTDIR}${TARGETDIR}/bin/cmake
;;
IASL|iasl)

View file

@ -1,29 +0,0 @@
diff --git a/lib/Driver/ToolChains/BareMetal.cpp b/lib/Driver/ToolChains/BareMetal.cpp
index 852e0442..eb84a785 100644
--- a/lib/Driver/ToolChains/BareMetal.cpp
+++ b/lib/Driver/ToolChains/BareMetal.cpp
@@ -169,6 +169,12 @@ static bool isPPCBareMetal(const llvm::Triple &Triple) {
Triple.getEnvironment() == llvm::Triple::EABI;
}
+/// Is the triple x86_32 or x86_64 -*-none-elf?
+static bool isX86BareMetal(const llvm::Triple &Triple) {
+ return Triple.isX86() && Triple.getOS() == llvm::Triple::UnknownOS &&
+ Triple.getEnvironmentName() == "elf";
+}
+
static void findMultilibsFromYAML(const ToolChain &TC, const Driver &D,
StringRef MultilibPath, const ArgList &Args,
DetectedMultilibs &Result) {
@@ -234,9 +240,10 @@ void BareMetal::findMultilibs(const Driver &D, const llvm::Triple &Triple,
bool BareMetal::handlesTarget(const llvm::Triple &Triple) {
return isARMBareMetal(Triple) || isAArch64BareMetal(Triple) ||
- isRISCVBareMetal(Triple) || isPPCBareMetal(Triple);
+ isRISCVBareMetal(Triple) || isPPCBareMetal(Triple) || isX86BareMetal(Triple);
}
+
Tool *BareMetal::buildLinker() const {
return new tools::baremetal::Linker(*this);
}

View file

@ -0,0 +1,25 @@
diff -u a/lib/Driver/ToolChains/BareMetal.cpp b/lib/Driver/ToolChains/BareMetal.cpp
--- a/lib/Driver/ToolChains/BareMetal.cpp
+++ b/lib/Driver/ToolChains/BareMetal.cpp
@@ -51,6 +51,12 @@
Triple.getEnvironment() == llvm::Triple::EABI;
}
+/// Is the triple x86_32 or x86_64 -*-none-elf?
+static bool isX86BareMetal(const llvm::Triple &Triple) {
+ return Triple.isX86() && Triple.getOS() == llvm::Triple::UnknownOS &&
+ Triple.getEnvironmentName() == "elf";
+}
+
static bool findRISCVMultilibs(const Driver &D,
const llvm::Triple &TargetTriple,
const ArgList &Args, DetectedMultilibs &Result) {
@@ -351,7 +357,7 @@
bool BareMetal::handlesTarget(const llvm::Triple &Triple) {
return arm::isARMEABIBareMetal(Triple) ||
aarch64::isAArch64BareMetal(Triple) || isRISCVBareMetal(Triple) ||
- isPPCBareMetal(Triple);
+ isPPCBareMetal(Triple) || isX86BareMetal(Triple);
}
Tool *BareMetal::buildLinker() const {

View file

@ -1 +0,0 @@
581e929ba0d9fafc555081ab18d8c3fdf4478ac2 tarballs/clang-18.1.8.src.tar.xz

View file

@ -0,0 +1 @@
052b4b826aba886d0a3fada696445d2fb1ffec88 tarballs/clang-21.1.8.src.tar.xz

View file

@ -1 +0,0 @@
32923b812700526b76451384e4662ca45360d564 tarballs/clang-tools-extra-18.1.8.src.tar.xz

View file

@ -0,0 +1 @@
2429c7b1836e6db177e26cf4c85b5a817cda7c62 tarballs/clang-tools-extra-21.1.8.src.tar.xz

View file

@ -1 +0,0 @@
1ea03e355b705b4cada3051bd7301a57daa19283 tarballs/cmake-18.1.8.src.tar.xz

View file

@ -0,0 +1 @@
da308aa4c0e80835e123771ebe3e5fbfc5244a45 tarballs/cmake-21.1.8.src.tar.xz

View file

@ -1 +0,0 @@
6ecbfa5516b60adb4e4e60f991b0d8ddf5aab12a tarballs/compiler-rt-18.1.8.src.tar.xz

View file

@ -0,0 +1 @@
141a3877eedd036349feaddc0d303abeeff96b6c tarballs/compiler-rt-21.1.8.src.tar.xz

View file

@ -1 +0,0 @@
5bee6cd2847f6d468861c78a21236e1c6fdc8374 tarballs/libunwind-18.1.8.src.tar.xz

View file

@ -0,0 +1 @@
c71485804e2a8e531469ee461fc312218686d641 tarballs/libunwind-21.1.8.src.tar.xz

View file

@ -1 +0,0 @@
1cf1fa9848b05a07d3d52e69949d44003f2ab2af tarballs/lld-18.1.8.src.tar.xz

View file

@ -0,0 +1 @@
c41039defb66d59d292567fe1d3e4d28fc2dec70 tarballs/lld-21.1.8.src.tar.xz

View file

@ -1 +0,0 @@
f9befa4cbef3f688ab48fca42449e13c5bcb872d tarballs/llvm-18.1.8.src.tar.xz

View file

@ -0,0 +1 @@
5aea9c8a3b1f1fa7ddebc2d2cc6742d4a1ee569e tarballs/llvm-21.1.8.src.tar.xz

View file

@ -1 +0,0 @@
4a5ea2f22b2d81467e739f4b070cf7ff52785856 tarballs/runtimes-18.1.8.src.tar.xz

View file

@ -0,0 +1 @@
2edc085c606ef464cde44b5cbfb5727c59ae2fd3 tarballs/runtimes-21.1.8.src.tar.xz

View file

@ -0,0 +1 @@
a1a50bb1f6a02aa82ef6de5942b164061f9acbc4 tarballs/third-party-21.1.8.src.tar.xz