config: Add support for xconfig
authorAlper Yildirim <ayildirim@aselsan.com>
Mon, 20 Jul 2009 17:17:10 +0000 (19:17 +0200)
committerThomas Petazzoni <thomas.petazzoni@free-electrons.com>
Mon, 27 Jul 2009 14:07:00 +0000 (16:07 +0200)
It involved:

 * Modifying the top-level Makefile to create the xconfig target, and
   the $(CONFIG)/qconf target to compile the qconf utility

 * Modifying the package/config/Makefile magic so that C++ files and
   binaries gets linked properly, re-using the
   package/config/Makefile.kconfig logic inherited from the kernel

 * Hacking a little bit package/config/Makefile.kconfig in a way
   similar to the modifications done for the mconf (menuconfig
   interface)

Signed-off-by: Alper Yildirim <ayildirim@aselsan.com>
Makefile
package/config/Makefile
package/config/Makefile.kconfig
package/config/kconfig-to-buildroot2.patch

index 76dd2cdf0f0211c7cd449c323f9b785a1abca80c..71a1ce5c44419402df5edef124e064bd2a9c21f7 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -28,7 +28,7 @@ CONFIG_DEFCONFIG=.defconfig
 CONFIG=package/config
 DATE:=$(shell date +%Y%m%d)
 
-noconfig_targets:=menuconfig config oldconfig randconfig \
+noconfig_targets:=menuconfig xconfig config oldconfig randconfig \
        defconfig allyesconfig allnoconfig release tags \
        source-check help
 
@@ -431,13 +431,29 @@ $(CONFIG)/conf:
        -@if [ ! -f .config ]; then \
                cp $(CONFIG_DEFCONFIG) .config; \
        fi
+
 $(CONFIG)/mconf:
        @mkdir -p $(CONFIG)/buildroot-config
-       $(MAKE) CC="$(HOSTCC)" -C $(CONFIG) conf mconf
+       $(MAKE) CC="$(HOSTCC)" -C $(CONFIG) mconf
+       -@if [ ! -f .config ]; then \
+               cp $(CONFIG_DEFCONFIG) .config; \
+       fi
+
+$(CONFIG)/qconf:
+       @mkdir -p $(CONFIG)/buildroot-config
+       $(MAKE) CC="$(HOSTCC)" -C $(CONFIG) qconf
        -@if [ ! -f .config ]; then \
                cp $(CONFIG_DEFCONFIG) .config; \
        fi
 
+xconfig: $(CONFIG)/qconf
+       @mkdir -p $(CONFIG)/buildroot-config
+       @if ! KCONFIG_AUTOCONFIG=$(CONFIG)/buildroot-config/auto.conf \
+               KCONFIG_AUTOHEADER=$(CONFIG)/buildroot-config/autoconf.h \
+               $(CONFIG)/qconf $(CONFIG_CONFIG_IN); then \
+               test -f .config.cmd || rm -f .config; \
+       fi
+
 menuconfig: $(CONFIG)/mconf
        @mkdir -p $(CONFIG)/buildroot-config
        @if ! KCONFIG_AUTOCONFIG=$(CONFIG)/buildroot-config/auto.conf \
@@ -559,5 +575,5 @@ release: distclean
        rm -rf $$OUT
 
 .PHONY: dummy subdirs release distclean clean config oldconfig \
-       menuconfig tags check test depend defconfig help
+       menuconfig xconfig tags check test depend defconfig help
 
index 3af4bd8de6e9b8dcd5516667173068d7c710c931..a2184fa3c74a80c1624bc21179420c5c6b930cf5 100644 (file)
@@ -14,7 +14,10 @@ __hostprogs := $(sort $(hostprogs-y) $(hostprogs-m))
 host-csingle := $(foreach m,$(__hostprogs),$(if $($(m)-objs),,$(m)))
 host-cmulti := $(foreach m,$(__hostprogs),\
            $(if $($(m)-cxxobjs),,$(if $($(m)-objs),$(m))))
+host-cxxmulti := $(foreach m,$(__hostprogs),\
+           $(if $($(m)-cxxobjs),$(m),$(if $($(m)-objs),)))
 host-cobjs := $(sort $(foreach m,$(__hostprogs),$($(m)-objs)))
+host-cxxobjs := $(sort $(foreach m,$(__hostprogs),$($(m)-cxxobjs)))
 
 $(host-csingle): %: %.c
        $(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCFLAGS_$@) $< $(HOST_LOADLIBES) -o $@
@@ -22,9 +25,15 @@ $(host-csingle): %: %.c
 $(host-cmulti): %: $(host-cobjs) $(host-cshlib)
        $(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCFLAGS_$@) $($@-objs) $(HOST_LOADLIBES) -o $@
 
+$(host-cxxmulti): %: $(host-cxxobjs) $(host-cobjs) $(host-cshlib)
+       $(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCFLAGS_$@) $($@-objs) $($@-cxxobjs) $(HOSTLOADLIBES_$@) -o $@
+
 $(host-cobjs): %.o: %.c
        $(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCFLAGS_$@) -c $< -o $@
 
+$(host-cxxobjs): %.o: %.cc
+       $(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCXXFLAGS_$@) -c $< -o $@
+
 $(obj)/%:: $(src)/%_shipped
        $(Q)cat $< > $@
 
index 747f23d4c72b395e23f930a92f272ba7753dafaf..6974cc3b5e6c6b4bddf09e2ef89bf5a0ea1741b8 100644 (file)
@@ -131,6 +131,10 @@ endif
 ifeq ($(MAKECMDGOALS),xconfig)
        qconf-target := 1
 endif
+ifeq ($(findstring qconf,$(MAKECMDGOALS)),qconf)
+       qconf-target := 1
+endif
+
 ifeq ($(MAKECMDGOALS),gconfig)
        gconf-target := 1
 endif
index e89046b73b4389a32aec3a7ff19611e427e928af..8e7ce42ad07786c85bb5b78de45d835323787c39 100644 (file)
@@ -1,5 +1,5 @@
 ---
- Makefile            |    +
+ Makefile            |    7 +++
  README.buildroot2   |   22 ++++++++++
  conf.c              |   13 ++----
  confdata.c          |  101 ++++++++++++++++++++++++++------------------------
  util.c              |  105 +++++++++++++++++++++++++++++++++++++++++++++++++++-
  zconf.tab.c_shipped |    2 
  zconf.y             |    2 
- 11 files changed, 234 insertions(+), 101 deletions(-)
+ 11 files changed, 238 insertions(+), 101 deletions(-)
 
 Index: config/Makefile
 ===================================================================
 --- config.orig/Makefile
 +++ config/Makefile
-@@ -124,6 +124,9 @@
+@@ -124,10 +124,17 @@
  ifeq ($(MAKECMDGOALS),menuconfig)
        hostprogs-y += mconf
  endif
@@ -26,6 +26,14 @@ Index: config/Makefile
  
  ifeq ($(MAKECMDGOALS),xconfig)
        qconf-target := 1
+ endif
++ifeq ($(findstring qconf,$(MAKECMDGOALS)),qconf)
++      qconf-target := 1
++endif
++
+ ifeq ($(MAKECMDGOALS),gconfig)
+       gconf-target := 1
+ endif
 Index: config/README.buildroot2
 ===================================================================
 --- /dev/null