diff mbox series

CONFIG_CC_IS_CLANG

Message ID CAKwvOdkkJ48d_a1K-LPRsTweDXgpGX51NH=nuWK5weNfQ_8RBw@mail.gmail.com (mailing list archive)
State New, archived
Headers show
Series CONFIG_CC_IS_CLANG | expand

Commit Message

Nick Desaulniers Feb. 7, 2019, 9:03 p.m. UTC
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:


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?

Comments

Nathan Chancellor Feb. 7, 2019, 9:21 p.m. UTC | #1
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
Masahiro Yamada Feb. 11, 2019, 3:05 p.m. UTC | #2
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 mbox series

Patch

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)))