path: root/package/pkg-kconfig.mk
diff options
authorGravatar Floris Bos <bos@je-eigen-domein.nl>2015-04-28 16:34:31 +0200
committerGravatar Thomas Petazzoni <thomas.petazzoni@free-electrons.com>2015-05-21 23:41:46 +0200
commit0cfb5549b37f7072cb49c984743b0dd4b9e0bea9 (patch)
treec453909800479878592c34912237ef2e3041d3ca /package/pkg-kconfig.mk
parentd28882745daa79f43c6e0592818cc9d3b2df5ec5 (diff)
kconfig-package: add support for config fragments
Adds functionality to the kconfig infrastructure to merge additional configuration fragment files to the main configuration file of kconfig packages, using support/kconfig/merge_config.sh Typical use-case is when you want your configuration to be kept in sync with an upstream (def)config file, but do require some minor local modifications. Disables -update-config and -update-defconfig targets when fragment files are set. [Thomas: take into account comments made by Arnout: - Minor fixes in the documentation changes - Add @ before the tests done in the $(1)-update-config and $(1)-update-defconfig targets.] Signed-off-by: Floris Bos <bos@je-eigen-domein.nl> Tested-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be> Tested-by: Gergely Imreh <imrehg@gmail.com> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Diffstat (limited to 'package/pkg-kconfig.mk')
1 files changed, 10 insertions, 4 deletions
diff --git a/package/pkg-kconfig.mk b/package/pkg-kconfig.mk
index 8361064e2b..dcaed53dd2 100644
--- a/package/pkg-kconfig.mk
+++ b/package/pkg-kconfig.mk
@@ -35,18 +35,20 @@ $(call inner-generic-package,$(1),$(2),$(3),$(4))
$(2)_KCONFIG_EDITORS ?= menuconfig
# The config file could be in-tree, so before depending on it the package should
# be extracted (and patched) first
$$($(2)_KCONFIG_FILE): | $(1)-patch
-# The .config file is obtained by copying it from the specified source
-# configuration file, after the package has been patched.
+# The specified source configuration file and any additional configuration file
+# fragments are merged together to .config, after the package has been patched.
# Since the file could be a defconfig file it needs to be expanded to a
# full .config first. We use 'make oldconfig' because this can be safely
# done even when the package does not support defconfigs.
-$$($(2)_DIR)/.config: $$($(2)_KCONFIG_FILE)
- $$(INSTALL) -m 0644 $$($(2)_KCONFIG_FILE) $$($(2)_DIR)/.config
+$$($(2)_DIR)/.config: $$($(2)_KCONFIG_FILE) $$($(2)_KCONFIG_FRAGMENT_FILES)
+ support/kconfig/merge_config.sh -m -O $$(@D) \
@yes "" | $$($(2)_MAKE_ENV) $$(MAKE) -C $$($(2)_DIR) \
$$($(2)_KCONFIG_OPTS) oldconfig
@@ -87,6 +89,8 @@ $(1)-savedefconfig: $$($(2)_DIR)/.stamp_kconfig_fixup_done
# Even though we could use 'cp --preserve-timestamps' here, the separate
# cp and 'touch --reference' is used for symmetry with $(1)-update-defconfig.
$(1)-update-config: $$($(2)_DIR)/.stamp_kconfig_fixup_done
+ @$$(if $$($(2)_KCONFIG_FRAGMENT_FILES), \
+ echo "Unable to perform $(1)-update-config when fragment files are set"; exit 1)
cp -f $$($(2)_DIR)/.config $$($(2)_KCONFIG_FILE)
touch --reference $$($(2)_DIR)/.config $$($(2)_KCONFIG_FILE)
@@ -95,6 +99,8 @@ $(1)-update-config: $$($(2)_DIR)/.stamp_kconfig_fixup_done
# $(1)-update-config, the reference for 'touch' is _not_ the file from which
# we copy.
$(1)-update-defconfig: $(1)-savedefconfig
+ @$$(if $$($(2)_KCONFIG_FRAGMENT_FILES), \
+ echo "Unable to perform $(1)-update-defconfig when fragment files are set"; exit 1)
cp -f $$($(2)_DIR)/defconfig $$($(2)_KCONFIG_FILE)
touch --reference $$($(2)_DIR)/.config $$($(2)_KCONFIG_FILE)