kernel: prevent additional config from being always rebuilt

* A simple "make kernel" or incremental system build
   always triggers a complete kernel recompilation,
   even though the kernel sources were unchanged

 * The reason is because .additional_config is always
   considered new and invalidates the .config file,
   forcing the kernel to rebuild itself every time

 * Instead, prevent the /dev/null and KERNEL_OBJ dependencies
   having irrelevant timestamp changes with an empty variable

 * Command "make kernel" takes 3 seconds versus 40s before

Change-Id: I3b583077b7ef5873eebde3e4b0e790f5d7587ed3
Signed-off-by: Adrian DC <radian.dc@gmail.com>
gugelfrei
Adrian DC 4 years ago
parent 1de3b3019f
commit 70d5cc42e0

@ -89,10 +89,13 @@ KERNEL_DEFCONFIG_SRC := $(KERNEL_DEFCONFIG_DIR)/$(KERNEL_DEFCONFIG)
ifneq ($(TARGET_KERNEL_ADDITIONAL_CONFIG),)
KERNEL_ADDITIONAL_CONFIG := $(TARGET_KERNEL_ADDITIONAL_CONFIG)
KERNEL_ADDITIONAL_CONFIG_DEPENDENCY :=
KERNEL_ADDITIONAL_CONFIG_SRC := $(KERNEL_DEFCONFIG_DIR)/$(KERNEL_ADDITIONAL_CONFIG)
ifeq ("$(wildcard $(KERNEL_ADDITIONAL_CONFIG_SRC))","")
$(warning TARGET_KERNEL_ADDITIONAL_CONFIG '$(TARGET_KERNEL_ADDITIONAL_CONFIG)' doesn't exist)
KERNEL_ADDITIONAL_CONFIG_SRC := /dev/null
else
KERNEL_ADDITIONAL_CONFIG_DEPENDENCY := $(KERNEL_ADDITIONAL_CONFIG_SRC)
endif
else
KERNEL_ADDITIONAL_CONFIG_SRC := /dev/null
@ -239,10 +242,8 @@ define make-dtb-target
$(call internal-make-kernel-target,$(DTB_OUT),$(1))
endef
$(KERNEL_OUT):
$(KERNEL_ADDITIONAL_CONFIG_OUT): $(KERNEL_ADDITIONAL_CONFIG_DEPENDENCY)
mkdir -p $(KERNEL_OUT)
$(KERNEL_ADDITIONAL_CONFIG_OUT): $(KERNEL_OUT)
$(hide) cmp -s $(KERNEL_ADDITIONAL_CONFIG_SRC) $@ || cp $(KERNEL_ADDITIONAL_CONFIG_SRC) $@;
$(KERNEL_CONFIG): $(KERNEL_DEFCONFIG_SRC) $(KERNEL_ADDITIONAL_CONFIG_OUT)
@ -288,13 +289,15 @@ kerneltags: $(KERNEL_CONFIG)
.PHONY: kernelsavedefconfig alldefconfig
kernelsavedefconfig: $(KERNEL_OUT)
kernelsavedefconfig:
mkdir -p $(KERNEL_OUT)
$(call make-kernel-target,$(KERNEL_DEFCONFIG))
env KCONFIG_NOTIMESTAMP=true \
$(call make-kernel-target,savedefconfig)
cp $(KERNEL_OUT)/defconfig $(KERNEL_DEFCONFIG_SRC)
alldefconfig: $(KERNEL_OUT)
alldefconfig:
mkdir -p $(KERNEL_OUT)
env KCONFIG_NOTIMESTAMP=true \
$(call make-kernel-target,alldefconfig)

Loading…
Cancel
Save