[PATCH v2 01/16] Makefile: detect HOST_ARCH properly when CROSS_COMPILE is multi-word
Simon Glass
sjg at chromium.org
Sun Sep 1 22:09:45 CEST 2024
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.
For the CROSS_COMPILE bit, why is it valid to use a cross compiler on sandbox?
>
> 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/
More information about the U-Boot
mailing list