2010-11-26 18:56:21

by Ben Gardiner

[permalink] [raw]
Subject: [PATCH] kbuild: fix interaction of CONFIG_IKCONFIG and KCONFIG_CONFIG

Change the use of .config in kernel/Makefile to $(KCONFIG_CONFIG).

Currently, if you try to build a kernel with KCONFIG_CONFIG set (to a value
not equal to .config) and the config file pointed to by KCONFIG_CONFIG sets
CONFIG_IKCONFIG then the build will fail with:

make[1]: *** No rule to make target `.config', needed by `kernel/config_data.gz'. Stop.

I think this has been present since the introduction of KCONFIG_CONFIG
in 14cdd3c402bf7c66f0bcd76e290f0770a54a4b21.

Signed-off-by: Ben Gardiner <[email protected]>
CC: Roman Zippel <[email protected]>
CC: Michal Marek <[email protected]>

---
based on 698fd6a2c3ca05ec796072defb5c415289a86cdc of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git

kernel/Makefile | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/kernel/Makefile b/kernel/Makefile
index 0b5ff08..33e0a39 100644
--- a/kernel/Makefile
+++ b/kernel/Makefile
@@ -121,7 +121,7 @@ $(obj)/configs.o: $(obj)/config_data.h
# config_data.h contains the same information as ikconfig.h but gzipped.
# Info from config_data can be extracted from /proc/config*
targets += config_data.gz
-$(obj)/config_data.gz: .config FORCE
+$(obj)/config_data.gz: $(KCONFIG_CONFIG) FORCE
$(call if_changed,gzip)

quiet_cmd_ikconfiggz = IKCFG $@
--
1.7.0.4


2010-12-14 15:29:22

by Michal Marek

[permalink] [raw]
Subject: Re: [PATCH] kbuild: fix interaction of CONFIG_IKCONFIG and KCONFIG_CONFIG

On 26.11.2010 19:56, Ben Gardiner wrote:
> Change the use of .config in kernel/Makefile to $(KCONFIG_CONFIG).
>
> Currently, if you try to build a kernel with KCONFIG_CONFIG set (to a value
> not equal to .config) and the config file pointed to by KCONFIG_CONFIG sets
> CONFIG_IKCONFIG then the build will fail with:
>
> make[1]: *** No rule to make target `.config', needed by `kernel/config_data.gz'. Stop.
>
> I think this has been present since the introduction of KCONFIG_CONFIG
> in 14cdd3c402bf7c66f0bcd76e290f0770a54a4b21.
>
> Signed-off-by: Ben Gardiner<[email protected]>
> CC: Roman Zippel<[email protected]>
> CC: Michal Marek<[email protected]>
>
> ---
> based on 698fd6a2c3ca05ec796072defb5c415289a86cdc of
> git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git
>
> kernel/Makefile | 2 +-
> 1 files changed, 1 insertions(+), 1 deletions(-)
>
> diff --git a/kernel/Makefile b/kernel/Makefile
> index 0b5ff08..33e0a39 100644
> --- a/kernel/Makefile
> +++ b/kernel/Makefile
> @@ -121,7 +121,7 @@ $(obj)/configs.o: $(obj)/config_data.h
> # config_data.h contains the same information as ikconfig.h but gzipped.
> # Info from config_data can be extracted from /proc/config*
> targets += config_data.gz
> -$(obj)/config_data.gz: .config FORCE
> +$(obj)/config_data.gz: $(KCONFIG_CONFIG) FORCE
> $(call if_changed,gzip)
>
> quiet_cmd_ikconfiggz = IKCFG $@

The problem is that KCONFIG_CONFIG is not exported in the top-level
Makefile. If you want to use it in other Makefiles, you need to add the
export.

Michal

2010-12-14 16:40:08

by Ben Gardiner

[permalink] [raw]
Subject: [PATCH v2] kbuild: fix interaction of CONFIG_IKCONFIG and KCONFIG_CONFIG

If you try to build a kernel with KCONFIG_CONFIG set (to a value
not equal to .config) and that config sets CONFIG_IKCONFIG then the
build will fail with:

make[1]: *** No rule to make target `.config', needed by \
`kernel/config_data.gz'. Stop.

because the kernel/Makefile contains a direct reference to .config.

This issue has been present since the introduction of KCONFIG_CONFIG
in 14cdd3c402bf7c66f0bcd76e290f0770a54a4b21.

Signed-off-by: Ben Gardiner <[email protected]>
CC: Roman Zippel <[email protected]>
CC: Michal Marek <[email protected]>
Reviewed-by: Michal Marek <[email protected]>

---

changes since v1:
* rebased to 6313e3c21743cc88bb5bd8aa72948ee1e83937b6 of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git
* export KCONFIG_CONFIG from top-level Makefile (Michal Marek)

---
Makefile | 1 +
kernel/Makefile | 2 +-
2 files changed, 2 insertions(+), 1 deletions(-)

diff --git a/Makefile b/Makefile
index 3d94974..e0973cc 100644
--- a/Makefile
+++ b/Makefile
@@ -224,6 +224,7 @@ ifeq ($(ARCH),m68knommu)
endif

KCONFIG_CONFIG ?= .config
+export KCONFIG_CONFIG

# SHELL used by kbuild
CONFIG_SHELL := $(shell if [ -x "$$BASH" ]; then echo $$BASH; \
diff --git a/kernel/Makefile b/kernel/Makefile
index 0b5ff08..33e0a39 100644
--- a/kernel/Makefile
+++ b/kernel/Makefile
@@ -121,7 +121,7 @@ $(obj)/configs.o: $(obj)/config_data.h
# config_data.h contains the same information as ikconfig.h but gzipped.
# Info from config_data can be extracted from /proc/config*
targets += config_data.gz
-$(obj)/config_data.gz: .config FORCE
+$(obj)/config_data.gz: $(KCONFIG_CONFIG) FORCE
$(call if_changed,gzip)

quiet_cmd_ikconfiggz = IKCFG $@
--
1.7.0.4

2010-12-14 22:18:10

by Michal Marek

[permalink] [raw]
Subject: Re: [PATCH v2] kbuild: fix interaction of CONFIG_IKCONFIG and KCONFIG_CONFIG

On Tue, Dec 14, 2010 at 11:39:44AM -0500, Ben Gardiner wrote:
> If you try to build a kernel with KCONFIG_CONFIG set (to a value
> not equal to .config) and that config sets CONFIG_IKCONFIG then the
> build will fail with:
>
> make[1]: *** No rule to make target `.config', needed by \
> `kernel/config_data.gz'. Stop.
>
> because the kernel/Makefile contains a direct reference to .config.
>
> This issue has been present since the introduction of KCONFIG_CONFIG
> in 14cdd3c402bf7c66f0bcd76e290f0770a54a4b21.
>
> Signed-off-by: Ben Gardiner <[email protected]>
> CC: Roman Zippel <[email protected]>
> CC: Michal Marek <[email protected]>
> Reviewed-by: Michal Marek <[email protected]>
>
> ---
>
> changes since v1:
> * rebased to 6313e3c21743cc88bb5bd8aa72948ee1e83937b6 of
> git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git
> * export KCONFIG_CONFIG from top-level Makefile (Michal Marek)

Thanks, applied to kbuild-2.6.git#kbuild.

Michal