浏览代码

config: Add support for xconfig

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>
Alper Yildirim 16 年之前
父节点
当前提交
b0df9df39a
共有 4 个文件被更改,包括 43 次插入6 次删除
  1. 19 3
      Makefile
  2. 9 0
      package/config/Makefile
  3. 4 0
      package/config/Makefile.kconfig
  4. 11 3
      package/config/kconfig-to-buildroot2.patch

+ 19 - 3
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
 

+ 9 - 0
package/config/Makefile

@@ -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 $< > $@
 

+ 4 - 0
package/config/Makefile.kconfig

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

+ 11 - 3
package/config/kconfig-to-buildroot2.patch

@@ -1,5 +1,5 @@
 ---
- Makefile            |    3 +
+ Makefile            |    7 +++
  README.buildroot2   |   22 ++++++++++
  conf.c              |   13 ++----
  confdata.c          |  101 ++++++++++++++++++++++++++------------------------
@@ -10,13 +10,13 @@
  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