[PATCH] Makefile: fix empty MK_ARCH when using ccache

Tom Rini trini at konsulko.com
Mon Nov 11 16:43:05 CET 2024


On Mon, Nov 11, 2024 at 03:43:27PM +0100, Quentin Schulz wrote:
> Hi Heinrich,
> 
> On 11/11/24 3:27 PM, Heinrich Schuchardt wrote:
> > Am 11. November 2024 14:20:49 MEZ schrieb Quentin Schulz <foss+uboot at 0leil.net>:
> > > From: Quentin Schulz <quentin.schulz at cherry.de>
> > > 
> > > One can use ccache by prefixing the typical CROSS_COMPILE value with
> > > "ccache " (e.g. "ccache aarch64-gnu-linux-" for Aarch64). This however
> > > makes the MK_ARCH empty because sed won't find a match anymore since it
> > > expects the CROSS_COMPILE value to start with the actual toolchain (with
> > > an unlimited number of white spaces before).
> > > 
> > > This is failing builds since commit 7506c1566998 ("sandbox: Report host
> > > default-filename in native mode").
> > > 
> > > Add "ccache" prefix to ignore but participate in the matching regex used
> > > by sed to identify the target architecture.
> > > 
> > > Signed-off-by: Quentin Schulz <quentin.schulz at cherry.de>
> > > ---
> > > One can use ccache by prefixing the typical CROSS_COMPILE value with
> > > "ccache " (e.g. "ccache aarch64-gnu-linux-" for Aarch64). This however
> > > makes the MK_ARCH empty because sed won't find a match anymore since it
> > > expects the CROSS_COMPILE value to start with the actual toolchain (with
> > > an unlimited number of white spaces before).
> > > 
> > > This is failing builds since commit 7506c1566998 ("sandbox: Report host
> > > default-filename in native mode").
> > > 
> > > Add "ccache" prefix to ignore but participate in the matching regex used
> > > by sed to identify the target architecture.
> > > ---
> > > Makefile | 2 +-
> > > 1 file changed, 1 insertion(+), 1 deletion(-)
> > > 
> > > diff --git a/Makefile b/Makefile
> > > index 7275a02f24ca64ebd46c5dc6e769dcdee9917dca..71743db16fca930567edd67eb77f1c94e9b7b4e9 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 $(CROSS_COMPILE) | sed -n 's/^\(ccache\)\?[[:space:]]*\([^\/]*\/\)*\([^-]*\)-[^[:space:]]*/\3/p'}"
> > 
> > The target architecture cannot be determined in this way.
> > 
> > You could use the riscv64 compiler to compile riscv32 when providing a gcc flag.
> > 
> > You should not make any assumptions about the naming scheme of vendor toolchains.
> > 
> 
> I am assuming nothing more than what we are already assuming for the last
> three and half years, c.f. f7691a6d736bec7915c227ac14076f9993a27367.

Yes and also, ugh, I wonder if that works right for using clang, too. It
does for how I use it, which involves setting CROSS_COMPILE anyhow but I
don't know if the LLVM-only option would work. Of course I also don't
know if that works today. The original logic is fragile, this makes it
no more or less fragile, and I'm not 100% sure I like that everyone know
has to set and test against HOST_ARCH, which we weren't before
7506c1566998 ("sandbox: Report host default-filename in native mode").

This should probably come in just after I tag -rc2 as it's a fix at
least.

-- 
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 659 bytes
Desc: not available
URL: <https://lists.denx.de/pipermail/u-boot/attachments/20241111/9d7799bd/attachment.sig>


More information about the U-Boot mailing list