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

From: Ben Gardiner
Date: Tue Dec 14 2010 - 11:40:14 EST


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 <bengardiner@xxxxxxxxxxxxxx>
CC: Roman Zippel <zippel@xxxxxxxxxxxxxx>
CC: Michal Marek <mmarek@xxxxxxx>
Reviewed-by: Michal Marek <mmarek@xxxxxxx>

---

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

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/