build: fix prefix for Clang when CROSS_COMPILE is an absolute path
authorDmitrii Sharshakov <d3dx12.xx@gmail.com>
Sat, 8 Nov 2025 20:48:46 +0000 (21:48 +0100)
committerTom Rini <trini@konsulko.com>
Tue, 18 Nov 2025 21:52:11 +0000 (15:52 -0600)
commit91bb236194162472d1e19b0cbc215e25eddc11d0
tree7eba76c05cb31219ed0461cb9d8109f07197fd66
parent928af44314a1a086e946ef3c0901d40bdb3e19a9
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 <trini@konsulko.com>
Closes: https://lore.kernel.org/u-boot/20251106221355.GZ6688@bill-the-cat/
Signed-off-by: Dmitrii Sharshakov <d3dx12.xx@gmail.com>
Makefile