From 70d5cc42e0a681768d07e47a767d891993d165cb Mon Sep 17 00:00:00 2001 From: Adrian DC Date: Tue, 18 Aug 2020 00:13:11 +0200 Subject: [PATCH] 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 --- build/tasks/kernel.mk | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/build/tasks/kernel.mk b/build/tasks/kernel.mk index bdf264d4..23806d9f 100644 --- a/build/tasks/kernel.mk +++ b/build/tasks/kernel.mk @@ -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)