From 91bb236194162472d1e19b0cbc215e25eddc11d0 Mon Sep 17 00:00:00 2001 From: Dmitrii Sharshakov Date: Sat, 8 Nov 2025 21:48:46 +0100 Subject: [PATCH] build: fix prefix for Clang when CROSS_COMPILE is an absolute path Clang cross-compilation worked when cross binutils were available in PATH. However, when binutils are not in the PATH clang failed to discover the assembler, falling back to host one. Make --prefix always absolute, Clang supports this and will search for e.g. $(prefix)-as for assembler. This makes sure user does not have to add cross binutils to PATH for Clang build. Fixes build for these examples (with qemu_arm(64)_defconfig): make CC=clang-21 CROSS_COMPILE=/.../bin/arm-none-eabi- make CC=clang-20 CROSS_COMPILE=/.../bin/aarch64-linux-gnu- Also validated for the case when provided with cross toolchain on PATH: PATH=/.../bin:$PATH make CC=clang-21 CROSS_COMPILE=arm-none-eabi- -j20 This patch does not affect GCC builds, and they have _not_ been validated against regressions. Reported-by: Tom Rini Closes: https://lore.kernel.org/u-boot/20251106221355.GZ6688@bill-the-cat/ Signed-off-by: Dmitrii Sharshakov --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 62a24e38283..cca82a01843 100644 --- a/Makefile +++ b/Makefile @@ -600,7 +600,7 @@ ifneq ($(shell $(CC) --version 2>&1 | head -n 1 | grep clang),) ifneq ($(CROSS_COMPILE),) CLANG_FLAGS := --target=$(notdir $(CROSS_COMPILE:%-=%)) GCC_TOOLCHAIN_DIR := $(dir $(shell which $(CROSS_COMPILE)elfedit)) -CLANG_FLAGS += --prefix=$(GCC_TOOLCHAIN_DIR) +CLANG_FLAGS += --prefix=$(GCC_TOOLCHAIN_DIR)$(notdir $(CROSS_COMPILE:%-=%))- GCC_TOOLCHAIN := $(realpath $(GCC_TOOLCHAIN_DIR)/..) endif ifneq ($(GCC_TOOLCHAIN),) -- 2.47.3