Message ID | 7de6a75453d11fa56ae81f3ad3d0f16f0d12546e.1724846454.git.jerome.forissier@linaro.org |
---|---|
State | Superseded |
Headers | show |
Series | Miscellaneous fixes | expand |
On Wed, 28 Aug 2024 at 15:10, Jerome Forissier <jerome.forissier@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@linaro.org> > --- > Makefile | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > 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 > Reviewed-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
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))
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@linaro.org> --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)