Am 11. November 2024 14:20:49 MEZ schrieb Quentin Schulz <foss+ub...@0leil.net>: >From: Quentin Schulz <quentin.sch...@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.sch...@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. The correct way is to cross-compile a binary. Then use readelf to retrieve the target architecture. Best regards Heinrich > endif > unexport HOST_ARCH > ifeq ("x86_64", $(MK_ARCH)) > >--- >base-commit: 9c25cd563179cf32cf3b119d5ae78ef8348d0335 >change-id: 20241111-mk_arch-ccache-7150482cfde8 > >Best regards,