Message ID | CAKwvOdkkJ48d_a1K-LPRsTweDXgpGX51NH=nuWK5weNfQ_8RBw@mail.gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | CONFIG_CC_IS_CLANG | expand |
On Thu, Feb 07, 2019 at 01:03:01PM -0800, Nick Desaulniers wrote: > Masahiro, > I was looking into sprucing up Kbuild for improved LLD support. One > thing I was curious about was the different checks for clang in the > top level Makefile. > > How come a change like: > diff --git a/Makefile b/Makefile > index 3142e67d03f1..525b3fef7d27 100644 > --- a/Makefile > +++ b/Makefile > @@ -489,7 +489,7 @@ ifneq ($(KBUILD_SRC),) > $(Q)$(CONFIG_SHELL) $(srctree)/scripts/mkmakefile $(srctree) > endif > > -ifneq ($(shell $(CC) --version 2>&1 | head -n 1 | grep clang),) > +ifdef CONFIG_CC_IS_CLANG > ifneq ($(CROSS_COMPILE),) > CLANG_FLAGS := --target=$(notdir $(CROSS_COMPILE:%-=%)) > GCC_TOOLCHAIN_DIR := $(dir $(shell which $(LD))) > > > doesn't work? It's odd that later on in the top level Makefile, we > have that kind of check. I was hoping to do something similar for > LLD, but it seems that the config options are not defined for that > particular make target? Does this have to do with config-targets? > > -- > Thanks, > ~Nick Desaulniers According to commit 995167420797 ("kbuild: remove cc-name variable"), it says that this section of the Makefile runs before Kconfig. Masahiro can obviously give more context and explanation. Nathan
On Fri, Feb 8, 2019 at 6:04 AM Nick Desaulniers <ndesaulniers@google.com> wrote: > > Masahiro, > I was looking into sprucing up Kbuild for improved LLD support. One > thing I was curious about was the different checks for clang in the > top level Makefile. > > How come a change like: > diff --git a/Makefile b/Makefile > index 3142e67d03f1..525b3fef7d27 100644 > --- a/Makefile > +++ b/Makefile > @@ -489,7 +489,7 @@ ifneq ($(KBUILD_SRC),) > $(Q)$(CONFIG_SHELL) $(srctree)/scripts/mkmakefile $(srctree) > endif > > -ifneq ($(shell $(CC) --version 2>&1 | head -n 1 | grep clang),) > +ifdef CONFIG_CC_IS_CLANG > ifneq ($(CROSS_COMPILE),) > CLANG_FLAGS := --target=$(notdir $(CROSS_COMPILE:%-=%)) > GCC_TOOLCHAIN_DIR := $(dir $(shell which $(LD))) > > > doesn't work? It's odd that later on in the top level Makefile, we > have that kind of check. I was hoping to do something similar for > LLD, but it seems that the config options are not defined for that > particular make target? Does this have to do with config-targets? include/config/auto.conf is included at line 594 of top Makefile. 'ifdef CONFIG_CC_IS_CLANG' is always false here.
diff --git a/Makefile b/Makefile index 3142e67d03f1..525b3fef7d27 100644 --- a/Makefile +++ b/Makefile @@ -489,7 +489,7 @@ ifneq ($(KBUILD_SRC),) $(Q)$(CONFIG_SHELL) $(srctree)/scripts/mkmakefile $(srctree) endif -ifneq ($(shell $(CC) --version 2>&1 | head -n 1 | grep clang),) +ifdef CONFIG_CC_IS_CLANG ifneq ($(CROSS_COMPILE),) CLANG_FLAGS := --target=$(notdir $(CROSS_COMPILE:%-=%)) GCC_TOOLCHAIN_DIR := $(dir $(shell which $(LD)))