diff options
author | Matt Wagantall <mwagantall@cyngn.com> | 2015-10-15 13:54:19 -0700 |
---|---|---|
committer | Michael Bestas <mikeioannina@gmail.com> | 2015-10-27 00:45:16 +0200 |
commit | 0db12370e9552627dfdb69ee2a2d54f01e4b6448 (patch) | |
tree | 6fde84bef7cad3cbbc47564429b4f5a7e05281f0 | |
parent | abcd19499d0ba475715dd76a8d0f7c08c630c7ea (diff) | |
download | build-0db12370e9552627dfdb69ee2a2d54f01e4b6448.zip build-0db12370e9552627dfdb69ee2a2d54f01e4b6448.tar.gz build-0db12370e9552627dfdb69ee2a2d54f01e4b6448.tar.bz2 |
kernel: use merge-config.sh for integrating KERNEL_ADDITIONAL_CONFIG
Using 'cat' to combine defconfig fragments is not, in general,
safe. Overriding options is not correctly handled, and it's
possible to produce illegal configurations which violate Kconfig
dependency constraints.
Instead, use the merge-config.sh script from the kernel tree
which more intelligently combines defconfig fragments. An
'alldefconfig' make target is also introduced, as merge-config.sh
depends on it.
Change-Id: I91a8c5e4bcf7072a3f95651dffe17380174134e4
-rw-r--r-- | core/tasks/kernel.mk | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/core/tasks/kernel.mk b/core/tasks/kernel.mk index 293b867..ce05153 100644 --- a/core/tasks/kernel.mk +++ b/core/tasks/kernel.mk @@ -226,8 +226,8 @@ $(KERNEL_CONFIG): $(KERNEL_OUT) $(MAKE) -C $(KERNEL_SRC) O=$(KERNEL_OUT) ARCH=$(KERNEL_ARCH) $(KERNEL_CROSS_COMPILE) oldconfig; fi $(hide) if [ ! -z "$(KERNEL_ADDITIONAL_CONFIG)" ]; then \ echo "Using additional config '$(KERNEL_ADDITIONAL_CONFIG)'"; \ - cat $(KERNEL_SRC)/arch/$(KERNEL_ARCH)/configs/$(KERNEL_ADDITIONAL_CONFIG) >> $(KERNEL_OUT)/.config; \ - $(MAKE) -C $(KERNEL_SRC) O=$(KERNEL_OUT) ARCH=$(KERNEL_ARCH) $(KERNEL_CROSS_COMPILE) oldconfig; fi + $(KERNEL_SRC)/scripts/kconfig/merge_config.sh -m -O $(KERNEL_OUT) $(KERNEL_OUT)/.config $(KERNEL_SRC)/arch/$(KERNEL_ARCH)/configs/$(KERNEL_ADDITIONAL_CONFIG); \ + $(MAKE) -C $(KERNEL_SRC) O=$(KERNEL_OUT) ARCH=$(KERNEL_ARCH) $(KERNEL_CROSS_COMPILE) KCONFIG_ALLCONFIG=$(KERNEL_OUT)/.config alldefconfig; fi TARGET_KERNEL_BINARIES: $(KERNEL_OUT) $(KERNEL_CONFIG) $(KERNEL_HEADERS_INSTALL) $(MAKE) $(MAKE_FLAGS) -C $(KERNEL_SRC) O=$(KERNEL_OUT) ARCH=$(KERNEL_ARCH) $(KERNEL_CROSS_COMPILE) $(TARGET_PREBUILT_INT_KERNEL_TYPE) @@ -258,8 +258,8 @@ $(KERNEL_HEADERS_INSTALL): $(KERNEL_OUT) $(KERNEL_CONFIG) $(MAKE) -C $(KERNEL_SRC) O=$(KERNEL_OUT) ARCH=$(KERNEL_ARCH) $(KERNEL_CROSS_COMPILE) oldconfig; fi $(hide) if [ ! -z "$(KERNEL_ADDITIONAL_CONFIG)" ]; then \ echo "Using additional config '$(KERNEL_ADDITIONAL_CONFIG)'"; \ - cat $(KERNEL_SRC)/arch/$(KERNEL_ARCH)/configs/$(KERNEL_ADDITIONAL_CONFIG) >> $(KERNEL_OUT)/.config; \ - $(MAKE) -C $(KERNEL_SRC) O=$(KERNEL_OUT) ARCH=$(KERNEL_ARCH) $(KERNEL_CROSS_COMPILE) oldconfig; fi + $(KERNEL_SRC)/scripts/kconfig/merge_config.sh -m -O $(KERNEL_OUT) $(KERNEL_OUT)/.config $(KERNEL_SRC)/arch/$(KERNEL_ARCH)/configs/$(KERNEL_ADDITIONAL_CONFIG); \ + $(MAKE) -C $(KERNEL_SRC) O=$(KERNEL_OUT) ARCH=$(KERNEL_ARCH) $(KERNEL_CROSS_COMPILE) KCONFIG_ALLCONFIG=$(KERNEL_OUT)/.config alldefconfig; fi kerneltags: $(KERNEL_OUT) $(KERNEL_CONFIG) $(MAKE) -C $(KERNEL_SRC) O=$(KERNEL_OUT) ARCH=$(KERNEL_ARCH) $(KERNEL_CROSS_COMPILE) tags @@ -271,6 +271,10 @@ kernelconfig: $(KERNEL_OUT) $(KERNEL_CONFIG) $(MAKE) -C $(KERNEL_SRC) O=$(KERNEL_OUT) ARCH=$(KERNEL_ARCH) $(KERNEL_CROSS_COMPILE) savedefconfig cp $(KERNEL_OUT)/defconfig $(KERNEL_SRC)/arch/$(KERNEL_ARCH)/configs/$(KERNEL_DEFCONFIG) +alldefconfig: $(KERNEL_OUT) + env KCONFIG_NOTIMESTAMP=true \ + $(MAKE) -C $(KERNEL_SRC) O=$(KERNEL_OUT) ARCH=$(KERNEL_ARCH) $(KERNEL_CROSS_COMPILE) alldefconfig + endif # FULL_KERNEL_BUILD ## Install it |