Messages in this thread | | | Date | Thu, 17 Feb 2022 11:10:42 -0700 | From | Nathan Chancellor <> | Subject | Re: [PATCH] tools: fix unavoidable GCC call in Clang builds |
| |
Hi Adrian
On Thu, Feb 17, 2022 at 05:36:48AM +0200, Adrian Ratiu wrote: > In ChromeOS and Gentoo we catch any unwanted mixed Clang/LLVM > and GCC/binutils usage via toolchain wrappers which fail builds.
Neat for hermetic builds.
> This has revealed that GCC is called unconditionally in Clang > configured builds to populate GCC_TOOLCHAIN_DIR. > > Allow overriding the variable to avoid the GCC call - in our > case we can set GCC_TOOLCHAIN_DIR directly in the ebuild recipe.
Would you just set GCC_TOOLCHAIN_DIR to nothing to avoid triggering the 'gcc -print-sysroot' call?
An alternative might be allowing CLANG_CROSS_FLAGS to be supplied by the user, so that you can stil benefit from cross compiling tools, but with the flags and sysroot that you expect.
> Suggested-by: Manoj Gupta <manojgupta@chromium.com> > Signed-off-by: Adrian Ratiu <adrian.ratiu@collabora.com>
Regardless, as long as it works for your use case:
Acked-by: Nathan Chancellor <nathan@kernel.org>
The change that this patch fixes [1] went via bpf-next [2] last cycle, you could either target that tree to have it fixed for 5.18 or make a case for having it merged in the 5.17 cycle via bpf [3]. I would resend this change to the kernel/bpf maintainers, as Nick and I do not currently pick up patches.
[1]: https://lore.kernel.org/r/20211216163842.829836-2-jean-philippe@linaro.org/ [2]: https://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next.git/ [3]: https://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf.git/
> --- > tools/scripts/Makefile.include | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/tools/scripts/Makefile.include b/tools/scripts/Makefile.include > index 79d102304470..98c098c064dd 100644 > --- a/tools/scripts/Makefile.include > +++ b/tools/scripts/Makefile.include > @@ -90,7 +90,7 @@ EXTRA_WARNINGS += -Wstrict-aliasing=3 > > else ifneq ($(CROSS_COMPILE),) > CLANG_CROSS_FLAGS := --target=$(notdir $(CROSS_COMPILE:%-=%)) > -GCC_TOOLCHAIN_DIR := $(dir $(shell which $(CROSS_COMPILE)gcc 2>/dev/null)) > +GCC_TOOLCHAIN_DIR ?= $(dir $(shell which $(CROSS_COMPILE)gcc 2>/dev/null)) > ifneq ($(GCC_TOOLCHAIN_DIR),) > CLANG_CROSS_FLAGS += --prefix=$(GCC_TOOLCHAIN_DIR)$(notdir $(CROSS_COMPILE)) > CLANG_CROSS_FLAGS += --sysroot=$(shell $(CROSS_COMPILE)gcc -print-sysroot) > -- > 2.35.0 >
| |