[3/3] linux: use HOSTCC_NOCCACHE as kconfig HOSTCC

Message ID 20190110211500.14368-4-thomas.petazzoni@bootlin.com
State Accepted
Commit 71a31b23570f343432ad042979e1a20f42d562a0
Headers show
Series
  • Fix pkg-kconfig packages with ccache enabled
Related show

Commit Message

Thomas Petazzoni Jan. 10, 2019, 9:15 p.m.
linux is a bit different than other kconfig-package, because it has
"toolchain" in KCONFIG_DEPENDENCIES. Thanks to this, host-ccache *is*
ready by the time kconfig invocations are made, so we could use
$(HOSTCC) as the host compiler for kconfig related operations.

However, for consistency with other kconfig-package packages, we chose
to use $(HOSTCC_NOCCACHE) as well.

We cannot rely on the default value of HOSTCC passed by the
kconfig-package infrastructure, because $(LINUX_MAKE_FLAGS) also
contains a HOSTCC definition that would override the one passed by the
kconfig-package infrastructure.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
---
 linux/linux.mk | 17 ++++++++++-------
 1 file changed, 10 insertions(+), 7 deletions(-)

Comments

Yann E. MORIN Jan. 13, 2019, 9:50 p.m. | #1
Thomas, All,

On 2019-01-10 22:15 +0100, Thomas Petazzoni spake thusly:
> linux is a bit different than other kconfig-package, because it has
> "toolchain" in KCONFIG_DEPENDENCIES. Thanks to this, host-ccache *is*
> ready by the time kconfig invocations are made, so we could use
> $(HOSTCC) as the host compiler for kconfig related operations.
> 
> However, for consistency with other kconfig-package packages, we chose
> to use $(HOSTCC_NOCCACHE) as well.
> 
> We cannot rely on the default value of HOSTCC passed by the
> kconfig-package infrastructure, because $(LINUX_MAKE_FLAGS) also
> contains a HOSTCC definition that would override the one passed by the
> kconfig-package infrastructure.
> 
> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>

Acked-by: "Yann E. MORIN" <yann.morin.1998@free.fr>

Regards,
Yann E. MORIN.

> ---
>  linux/linux.mk | 17 ++++++++++-------
>  1 file changed, 10 insertions(+), 7 deletions(-)
> 
> diff --git a/linux/linux.mk b/linux/linux.mk
> index 6bf2b88038..02def89113 100644
> --- a/linux/linux.mk
> +++ b/linux/linux.mk
> @@ -269,13 +269,16 @@ endif
>  LINUX_KCONFIG_FRAGMENT_FILES = $(call qstrip,$(BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES))
>  LINUX_KCONFIG_EDITORS = menuconfig xconfig gconfig nconfig
>  
> -# LINUX_MAKE_FLAGS overrides HOSTCC to allow the kernel build to find our
> -# host-openssl and host-libelf. However, this triggers a bug in the kconfig
> -# build script that causes it to build with /usr/include/ncurses.h (which is
> -# typically wchar) but link with $(HOST_DIR)/lib/libncurses.so (which is not).
> -# We don't actually need any host-package for kconfig, so remove the HOSTCC
> -# override again.
> -LINUX_KCONFIG_OPTS = $(LINUX_MAKE_FLAGS) HOSTCC="$(HOSTCC)"
> +# LINUX_MAKE_FLAGS overrides HOSTCC to allow the kernel build to find
> +# our host-openssl and host-libelf. However, this triggers a bug in
> +# the kconfig build script that causes it to build with
> +# /usr/include/ncurses.h (which is typically wchar) but link with
> +# $(HOST_DIR)/lib/libncurses.so (which is not).  We don't actually
> +# need any host-package for kconfig, so remove the HOSTCC override
> +# again. In addition, even though linux depends on the toolchain and
> +# therefore host-ccache would be ready, we use HOSTCC_NOCCACHE for
> +# consistency with other kconfig packages.
> +LINUX_KCONFIG_OPTS = $(LINUX_MAKE_FLAGS) HOSTCC="$(HOSTCC_NOCCACHE)"
>  
>  # If no package has yet set it, set it from the Kconfig option
>  LINUX_NEEDS_MODULES ?= $(BR2_LINUX_NEEDS_MODULES)
> -- 
> 2.20.1
> 
> _______________________________________________
> buildroot mailing list
> buildroot@busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot
Peter Korsgaard Jan. 16, 2019, 10:40 p.m. | #2
>>>>> "Thomas" == Thomas Petazzoni <thomas.petazzoni@bootlin.com> writes:

 > linux is a bit different than other kconfig-package, because it has
 > "toolchain" in KCONFIG_DEPENDENCIES. Thanks to this, host-ccache *is*
 > ready by the time kconfig invocations are made, so we could use
 > $(HOSTCC) as the host compiler for kconfig related operations.

 > However, for consistency with other kconfig-package packages, we chose
 > to use $(HOSTCC_NOCCACHE) as well.

 > We cannot rely on the default value of HOSTCC passed by the
 > kconfig-package infrastructure, because $(LINUX_MAKE_FLAGS) also
 > contains a HOSTCC definition that would override the one passed by the
 > kconfig-package infrastructure.

 > Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>

Committed, thanks.
Peter Korsgaard Jan. 28, 2019, 5:01 p.m. | #3
>>>>> "Thomas" == Thomas Petazzoni <thomas.petazzoni@bootlin.com> writes:

 > linux is a bit different than other kconfig-package, because it has
 > "toolchain" in KCONFIG_DEPENDENCIES. Thanks to this, host-ccache *is*
 > ready by the time kconfig invocations are made, so we could use
 > $(HOSTCC) as the host compiler for kconfig related operations.

 > However, for consistency with other kconfig-package packages, we chose
 > to use $(HOSTCC_NOCCACHE) as well.

 > We cannot rely on the default value of HOSTCC passed by the
 > kconfig-package infrastructure, because $(LINUX_MAKE_FLAGS) also
 > contains a HOSTCC definition that would override the one passed by the
 > kconfig-package infrastructure.

 > Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>

Committed to 2018.11.x, thanks.

Patch

diff --git a/linux/linux.mk b/linux/linux.mk
index 6bf2b88038..02def89113 100644
--- a/linux/linux.mk
+++ b/linux/linux.mk
@@ -269,13 +269,16 @@  endif
 LINUX_KCONFIG_FRAGMENT_FILES = $(call qstrip,$(BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES))
 LINUX_KCONFIG_EDITORS = menuconfig xconfig gconfig nconfig
 
-# LINUX_MAKE_FLAGS overrides HOSTCC to allow the kernel build to find our
-# host-openssl and host-libelf. However, this triggers a bug in the kconfig
-# build script that causes it to build with /usr/include/ncurses.h (which is
-# typically wchar) but link with $(HOST_DIR)/lib/libncurses.so (which is not).
-# We don't actually need any host-package for kconfig, so remove the HOSTCC
-# override again.
-LINUX_KCONFIG_OPTS = $(LINUX_MAKE_FLAGS) HOSTCC="$(HOSTCC)"
+# LINUX_MAKE_FLAGS overrides HOSTCC to allow the kernel build to find
+# our host-openssl and host-libelf. However, this triggers a bug in
+# the kconfig build script that causes it to build with
+# /usr/include/ncurses.h (which is typically wchar) but link with
+# $(HOST_DIR)/lib/libncurses.so (which is not).  We don't actually
+# need any host-package for kconfig, so remove the HOSTCC override
+# again. In addition, even though linux depends on the toolchain and
+# therefore host-ccache would be ready, we use HOSTCC_NOCCACHE for
+# consistency with other kconfig packages.
+LINUX_KCONFIG_OPTS = $(LINUX_MAKE_FLAGS) HOSTCC="$(HOSTCC_NOCCACHE)"
 
 # If no package has yet set it, set it from the Kconfig option
 LINUX_NEEDS_MODULES ?= $(BR2_LINUX_NEEDS_MODULES)