Make savedefconfig save to a configured file.

Store BR2_DEFCONFIG in .config, and use it to update the original input
defconfig file after updating the configuration.  When a config is
created by using the BR2_DEFCONFIG=... option, this is saved in the
.config file; later runs of savedefconfig will update that same location.
It is also possible to configure this place in the interactive
configuration.

The BR2_DEFCONFIG value itself is not saved into the generated
defconfig, since Kconfig considers it at its default. This is
intentional, to avoid hard-coding an absolute path in the defconfig.
It will anyway be set again when the defconfig is used with the
'make BR2_DEFCONFIG=... defconfig' command.

As a side-effect of this change, the *config options have been moved out
of the BR2_HAVE_DOT_CONFIG condition.  This doesn't make any functional
difference, because the .config is still not read for the *config targets.
However, the defconfig and savedefconfig targets do need to include
.config now, which makes them slightly slower.

[Peter: slightly tweak help text]
Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
Acked-by: Luca Ceresoli <luca@lucaceresoli.net>
Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
This commit is contained in:
Arnout Vandecappelle (Essensium/Mind) 2013-02-05 07:16:02 +00:00 committed by Peter Korsgaard
parent f026d3642d
commit 1ed4996346
3 changed files with 31 additions and 8 deletions

View File

@ -22,6 +22,18 @@ config BR2_HOSTARCH_NEEDS_IA32_LIBS
source "arch/Config.in" source "arch/Config.in"
config BR2_DEFCONFIG_FROM_ENV
string
option env="BR2_DEFCONFIG"
config BR2_DEFCONFIG
string "Location to save buildroot config"
default BR2_DEFCONFIG_FROM_ENV if BR2_DEFCONFIG_FROM_ENV != ""
default "$(CONFIG_DIR)/defconfig"
help
When running 'make savedefconfig', the defconfig file will be saved
in this location.
menu "Build options" menu "Build options"
menu "Commands" menu "Commands"

View File

@ -56,7 +56,7 @@ DATE:=$(shell date +%Y%m%d)
export BR2_VERSION_FULL:=$(BR2_VERSION)$(shell $(TOPDIR)/support/scripts/setlocalversion) export BR2_VERSION_FULL:=$(BR2_VERSION)$(shell $(TOPDIR)/support/scripts/setlocalversion)
noconfig_targets:=menuconfig nconfig gconfig xconfig config oldconfig randconfig \ noconfig_targets:=menuconfig nconfig gconfig xconfig config oldconfig randconfig \
defconfig %_defconfig savedefconfig allyesconfig allnoconfig silentoldconfig release \ %_defconfig allyesconfig allnoconfig silentoldconfig release \
randpackageconfig allyespackageconfig allnopackageconfig \ randpackageconfig allyespackageconfig allnopackageconfig \
source-check print-version source-check print-version
@ -592,6 +592,8 @@ else # ifeq ($(BR2_HAVE_DOT_CONFIG),y)
all: menuconfig all: menuconfig
endif # ifeq ($(BR2_HAVE_DOT_CONFIG),y)
# configuration # configuration
# --------------------------------------------------------------------------- # ---------------------------------------------------------------------------
@ -602,7 +604,12 @@ $(BUILD_DIR)/buildroot-config/%onf:
mkdir -p $(@D)/lxdialog mkdir -p $(@D)/lxdialog
$(MAKE) CC="$(HOSTCC_NOCCACHE)" HOSTCC="$(HOSTCC_NOCCACHE)" obj=$(@D) -C $(CONFIG) -f Makefile.br $(@F) $(MAKE) CC="$(HOSTCC_NOCCACHE)" HOSTCC="$(HOSTCC_NOCCACHE)" obj=$(@D) -C $(CONFIG) -f Makefile.br $(@F)
DEFCONFIG = $(call qstrip,$(BR2_DEFCONFIG))
# We don't want to fully expand BR2_DEFCONFIG here, so Kconfig will
# recognize that if it's still at its default $(CONFIG_DIR)/defconfig
COMMON_CONFIG_ENV = \ COMMON_CONFIG_ENV = \
BR2_DEFCONFIG='$(call qstrip,$(value BR2_DEFCONFIG))' \
KCONFIG_AUTOCONFIG=$(BUILD_DIR)/buildroot-config/auto.conf \ KCONFIG_AUTOCONFIG=$(BUILD_DIR)/buildroot-config/auto.conf \
KCONFIG_AUTOHEADER=$(BUILD_DIR)/buildroot-config/autoconf.h \ KCONFIG_AUTOHEADER=$(BUILD_DIR)/buildroot-config/autoconf.h \
KCONFIG_TRISTATE=$(BUILD_DIR)/buildroot-config/tristate.config \ KCONFIG_TRISTATE=$(BUILD_DIR)/buildroot-config/tristate.config \
@ -680,7 +687,7 @@ silentoldconfig: $(BUILD_DIR)/buildroot-config/conf outputmakefile
defconfig: $(BUILD_DIR)/buildroot-config/conf outputmakefile defconfig: $(BUILD_DIR)/buildroot-config/conf outputmakefile
@mkdir -p $(BUILD_DIR)/buildroot-config @mkdir -p $(BUILD_DIR)/buildroot-config
@$(COMMON_CONFIG_ENV) $< --defconfig$(if $(BR2_DEFCONFIG),=$(BR2_DEFCONFIG)) $(CONFIG_CONFIG_IN) @$(COMMON_CONFIG_ENV) $< --defconfig$(if $(DEFCONFIG),=$(DEFCONFIG)) $(CONFIG_CONFIG_IN)
%_defconfig: $(BUILD_DIR)/buildroot-config/conf $(TOPDIR)/configs/%_defconfig outputmakefile %_defconfig: $(BUILD_DIR)/buildroot-config/conf $(TOPDIR)/configs/%_defconfig outputmakefile
@mkdir -p $(BUILD_DIR)/buildroot-config @mkdir -p $(BUILD_DIR)/buildroot-config
@ -688,13 +695,15 @@ defconfig: $(BUILD_DIR)/buildroot-config/conf outputmakefile
savedefconfig: $(BUILD_DIR)/buildroot-config/conf outputmakefile savedefconfig: $(BUILD_DIR)/buildroot-config/conf outputmakefile
@mkdir -p $(BUILD_DIR)/buildroot-config @mkdir -p $(BUILD_DIR)/buildroot-config
@$(COMMON_CONFIG_ENV) $< --savedefconfig=$(CONFIG_DIR)/defconfig $(CONFIG_CONFIG_IN) @$(COMMON_CONFIG_ENV) $< \
--savedefconfig=$(if $(DEFCONFIG),$(DEFCONFIG),$(CONFIG_DIR)/defconfig) \
$(CONFIG_CONFIG_IN)
# check if download URLs are outdated # check if download URLs are outdated
source-check: source-check:
$(MAKE) DL_MODE=SOURCE_CHECK $(EXTRAMAKEARGS) source $(MAKE) DL_MODE=SOURCE_CHECK $(EXTRAMAKEARGS) source
endif # ifeq ($(BR2_HAVE_DOT_CONFIG),y) .PHONY: defconfig savedefconfig
############################################################# #############################################################
# #

View File

@ -20,13 +20,15 @@ Buildroot configuration
^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^
For storing the buildroot configuration itself, buildroot offers the For storing the buildroot configuration itself, buildroot offers the
following command: +make savedefconfig+ following command: +make savedefconfig+.
This strips the buildroot configuration down by removing configuration This strips the buildroot configuration down by removing configuration
options that are at their default value. The result is stored in a file options that are at their default value. The result is stored in a file
called +defconfig+. Copy this file to +foo_defconfig+ in the +configs+ called +defconfig+. If you want to save it in another place, change
directory. The configuration can then be rebuilt by running the +BR2_DEFCONFIG+ option, or call make with +make savedefconfig
+make foo_defconfig+ BR2_DEFCONFIG=<path-to-defconfig>+. The usual place is
+configs/<boardname>_defconfig+. The configuration can then be rebuilt by
running +make <boardname>_defconfig+.
Alternatively, you can copy the file to any other place and rebuild with Alternatively, you can copy the file to any other place and rebuild with
+make defconfig BR2_DEFCONFIG=<path-to-defconfig-file>+. +make defconfig BR2_DEFCONFIG=<path-to-defconfig-file>+.