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 /core/tasks | |
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
Diffstat (limited to 'core/tasks')
-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 |