[PATCH 5/8] kconfig: Add support for merging defconfig fragments
Luis Chamberlain <[email protected]> Sat, 6 Dec 2025 08:56:19 -0800
| Newsgroups | dev.linux.lists.kdevops |
|---|---|
| Message-ID | <[email protected]> |
Add support for composing defconfigs from base configurations and fragments using the + syntax. This allows users to combine a base defconfig with additional config fragments stored in defconfigs/configs/. The merge_config.sh script from the kernel is used to combine the configurations. Multiple fragments can be chained together. Example usage: make defconfig-datacrunch-b200-or-less+myworkflow make defconfig-aws+fstests+debug This enables modular configuration management where common settings can be shared across different base configurations. Generated-by: Claude AI Signed-off-by: Luis Chamberlain <[email protected]> --- scripts/kconfig/kconfig.Makefile | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/scripts/kconfig/kconfig.Makefile b/scripts/kconfig/kconfig.Makefile index 5d6db4b8..0113ffd3 100644 --- a/scripts/kconfig/kconfig.Makefile +++ b/scripts/kconfig/kconfig.Makefile @@ -57,7 +57,25 @@ PHONY += $(simple-targets) $(simple-targets): $(KCONFIG_DIR)/conf Kconfig $< --$@ Kconfig +# Support merging config fragments with base defconfigs +# Usage: make defconfig-<base>+<fragment> +# Example: make defconfig-datacrunch-b200-or-less+myworkflow +# +# The fragment is looked up in defconfigs/configs/<fragment>.config +# Multiple fragments can be chained: make defconfig-base+frag1+frag2 defconfig-%:: $(KCONFIG_DIR)/conf include/config/project.release Kconfig - @$< --defconfig=defconfigs/$(@:defconfig-%=%) Kconfig + @STEM="$(@:defconfig-%=%)"; \ + if echo "$$STEM" | grep -q '+'; then \ + BASE=$$(echo "$$STEM" | cut -d'+' -f1); \ + FRAGS=$$(echo "$$STEM" | cut -d'+' -f2- | tr '+' ' '); \ + FRAG_FILES=""; \ + for f in $$FRAGS; do \ + FRAG_FILES="$$FRAG_FILES defconfigs/configs/$$f.config"; \ + done; \ + $(KCONFIG_DIR)/merge_config.sh -m -Q defconfigs/$$BASE $$FRAG_FILES && \ + $< --defconfig=.config Kconfig; \ + else \ + $< --defconfig=defconfigs/$$STEM Kconfig; \ + fi .PHONY: $(PHONY) -- 2.51.0