[PATCH v2 01/16] Makefile: detect HOST_ARCH properly when CROSS_COMPILE is multi-word
Jerome Forissier
jerome.forissier at linaro.org
Mon Sep 2 17:21:06 CEST 2024
On 9/1/24 22:09, Simon Glass wrote:
> Hi Jerome,
>
> On Fri, 30 Aug 2024 at 04:17, Jerome Forissier
> <jerome.forissier at linaro.org> wrote:
>>
>> When CROSS_COMPILE contains multiple words, HOST_ARCH is not properly
>> detected and the sandbox build fail. It typically happens when using
>> ccache. For example:
>>
>> $ make sandbox_defconfig
>> $ make CROSS_COMPILE="ccache x86_64-linux-gnu-" \
>> CC="ccache x86_64-linux-gnu-gcc"
>> [...]
>> In file included from boot/bootmeth_efi.c:16:
>> include/efi_default_filename.h:33:2: error: #error Unsupported UEFI architecture
>> 33 | #error Unsupported UEFI architecture
>> | ^~~~~
>>
>> A similar error occurs when the build is done via buildman and
>> ~/.buildman contains:
>>
>> [toolchain-wrapper]
>> wrapper = ccache
>>
>> Fix the issue by considering only the last word in $(CROSS_COMPILE).
>>
>> Signed-off-by: Jerome Forissier <jerome.forissier at linaro.org>
>> Reviewed-by: Peter Robinson <pbrobinson at gmail.com>
>> Reviewed-by: Ilias Apalodimas <ilias.apalodimas at linaro.org>
>> ---
>> Makefile | 2 +-
>> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> This patch[1] seems to fix the problem you mention, for the CC part at least.
No, it fails with buildman:
$ git log --oneline -n 1
454b2b2e6ed (HEAD) efi: Use the same filename for all sandbox builds
jerome at builder:~/work/u-boot ((454b2b2e6ed...))$ ./tools/buildman/buildman sandbox_noinst
Building current source for 1 boards (1 thread, 24 jobs per thread)
sandbox: + sandbox_noinst
+arch/sandbox/lib/reloc_sandbox_efi.c:10:15: error: operator '==' has no left operand
+ 10 | #if HOST_ARCH == HOST_ARCH_X86_64
+ | ^~
[...]
> For the CROSS_COMPILE bit, why is it valid to use a cross compiler on sandbox?
Why not? "CROSS_COMPILE=x86_64-linux-gnu-" should result in x86_64-linux-gnu-gcc
being used which is equivalent to gcc on a x86_64 system.
>>
>> diff --git a/Makefile b/Makefile
>> index f90e48f58a..dc7bdd7942 100644
>> --- a/Makefile
>> +++ b/Makefile
>> @@ -21,7 +21,7 @@ include include/host_arch.h
>> ifeq ("", "$(CROSS_COMPILE)")
>> MK_ARCH="${shell uname -m}"
>> else
>> - MK_ARCH="${shell echo $(CROSS_COMPILE) | sed -n 's/^[[:space:]]*\([^\/]*\/\)*\([^-]*\)-[^[:space:]]*/\2/p'}"
>> + MK_ARCH="${shell echo ${lastword $(CROSS_COMPILE)} | sed -n 's/^[[:space:]]*\([^\/]*\/\)*\([^-]*\)-[^[:space:]]*/\2/p'}"
>> endif
>> unexport HOST_ARCH
>> ifeq ("x86_64", $(MK_ARCH))
>> --
>> 2.40.1
>>
>
> Regards,
> Simon
>
> [1] https://patchwork.ozlabs.org/project/uboot/patch/20240815202424.766778-9-sjg@chromium.org/
Thanks,
--
Jerome
More information about the U-Boot
mailing list