kernel: make the kernel build auto-clean the build dir like package builds
authorFelix Fietkau <nbd@nbd.name>
Fri, 5 Aug 2016 12:08:47 +0000 (14:08 +0200)
committerFelix Fietkau <nbd@nbd.name>
Fri, 5 Aug 2016 12:17:08 +0000 (14:17 +0200)
Previous behavior can be restored by using QUILT=1 on target/prepare

Signed-off-by: Felix Fietkau <nbd@nbd.name>
include/kernel-build.mk
include/kernel-defaults.mk
include/kernel.mk
include/quilt.mk

index a52c90d9e7f84e6057d93fe89a99ff215f8e0a68..0ba6db806d7c95578cb299871f5cfc4450905f8b 100644 (file)
@@ -6,13 +6,14 @@
 #
 include $(INCLUDE_DIR)/host.mk
 include $(INCLUDE_DIR)/prereq.mk
+include $(INCLUDE_DIR)/depends.mk
 
 ifneq ($(DUMP),1)
   all: compile
 endif
 
-export QUILT=1
-STAMP_PREPARED:=$(LINUX_DIR)/.prepared
+KERNEL_FILE_DEPENDS=$(GENERIC_PATCH_DIR) $(PATCH_DIR) $(GENERIC_FILES_DIR) $(FILES_DIR)
+STAMP_PREPARED=$(LINUX_DIR)/.prepared$(if $(QUILT)$(DUMP),,_$(shell $(call find_md5,$(KERNEL_FILE_DEPENDS),)))
 STAMP_CONFIGURED:=$(LINUX_DIR)/.configured
 include $(INCLUDE_DIR)/download.mk
 include $(INCLUDE_DIR)/quilt.mk
@@ -60,12 +61,22 @@ ifdef CONFIG_COLLECT_KERNEL_DEBUG
   endef
 endif
 
+ifeq ($(DUMP)$(filter prereq clean refresh update,$(MAKECMDGOALS)),)
+  ifneq ($(if $(QUILT),,$(CONFIG_AUTOREBUILD)),)
+    define Kernel/Autoclean
+      $(PKG_BUILD_DIR)/.dep_files: $(STAMP_PREPARED)
+      $(call rdep,${CURDIR} $(PKG_FILE_DEPENDS),$(STAMP_PREPARED),$(PKG_BUILD_DIR)/.dep_files,-x "*/.dep_*")
+    endef
+  endif
+endif
+
 define BuildKernel
   $(if $(QUILT),$(Build/Quilt))
   $(if $(LINUX_SITE),$(call Download,kernel))
 
   .NOTPARALLEL:
 
+  $(Kernel/Autoclean)
   $(STAMP_PREPARED): $(if $(LINUX_SITE),$(DL_DIR)/$(LINUX_SOURCE))
        -rm -rf $(KERNEL_BUILD_DIR)
        -mkdir -p $(KERNEL_BUILD_DIR)
@@ -102,7 +113,7 @@ define BuildKernel
                echo; \
        ) > $$@
 
-  $(STAMP_CONFIGURED): $(STAMP_PREPARED) $(LINUX_KCONFIG_LIST) $(TOPDIR)/.config
+  $(STAMP_CONFIGURED): $(STAMP_PREPARED) $(LINUX_KCONFIG_LIST) $(TOPDIR)/.config FORCE
        $(Kernel/Configure)
        touch $$@
 
index 3679daeb84c91fe22aa4989a6b695ab87b3637a1..11dff7530541ef366ddce5700c255c7c0aba90c6 100644 (file)
@@ -50,7 +50,7 @@ ifeq ($(strip $(CONFIG_EXTERNAL_KERNEL_TREE)),"")
     define Kernel/Prepare/Default
        xzcat $(DL_DIR)/$(LINUX_SOURCE) | $(TAR) -C $(KERNEL_BUILD_DIR) $(TAR_OPTIONS)
        $(Kernel/Patch)
-       touch $(LINUX_DIR)/.quilt_used
+       $(if $(QUILT),touch $(LINUX_DIR)/.quilt_used)
     endef
   else
     define Kernel/Prepare/Default
index 8ce4df8f2d50ac66baa330b715e8045306df6344..2721c83d8eddb9750988c7c9c6daf0fff025980a 100644 (file)
@@ -30,8 +30,8 @@ else
   endif
 
   ifeq ($(TARGET_BUILD),1)
-    PATCH_DIR ?= ./patches$(if $(wildcard ./patches-$(KERNEL_PATCHVER)),-$(KERNEL_PATCHVER))
-    FILES_DIR ?= $(foreach dir,$(wildcard ./files ./files-$(KERNEL_PATCHVER)),"$(dir)")
+    PATCH_DIR ?= $(CURDIR)/patches$(if $(wildcard ./patches-$(KERNEL_PATCHVER)),-$(KERNEL_PATCHVER))
+    FILES_DIR ?= $(foreach dir,$(wildcard $(CURDIR)/files $(CURDIR)/files-$(KERNEL_PATCHVER)),"$(dir)")
   endif
   KERNEL_BUILD_DIR ?= $(BUILD_DIR)/linux-$(BOARD)$(if $(SUBTARGET),_$(SUBTARGET))
   LINUX_DIR ?= $(KERNEL_BUILD_DIR)/linux-$(LINUX_VERSION)
index b18b6364fe27b3aff1d58c35eede55f38cdc676d..cd392a7c5dd024ac97c55157900570eb7707be66 100644 (file)
@@ -91,7 +91,7 @@ endef
 
 kernel_files=$(foreach fdir,$(GENERIC_FILES_DIR) $(FILES_DIR),$(fdir)/.)
 define Kernel/Patch/Default
-       rm -rf $(PKG_BUILD_DIR)/patches; mkdir -p $(PKG_BUILD_DIR)/patches
+       $(if $(QUILT),rm -rf $(PKG_BUILD_DIR)/patches; mkdir -p $(PKG_BUILD_DIR)/patches)
        $(if $(kernel_files),$(CP) $(kernel_files) $(LINUX_DIR)/)
        find $(LINUX_DIR)/ -name \*.rej -or -name \*.orig | $(XARGS) rm -f
        $(call PatchDir,$(PKG_BUILD_DIR),$(GENERIC_PATCH_DIR),generic/)