From 709371be5ebdff6b87dd75e05ead5839881c6014 Mon Sep 17 00:00:00 2001 From: dianlujitao Date: Sun, 12 Jun 2022 18:50:34 +0800 Subject: [PATCH] kernel: Ensure dtb(o) always get rebuilt * AOSP build system is not aware of dtb(o) source update, and thus won't rebuild the images, results in outdated artifact. * Convert DTB(O)_OUT to make targets and make the images depend on them to address the issue. This makes AOSP build system be aware of their timestamp changes and re-execute recipes depending on them. Finally, it's up to kernel's build system to decide actions to take. Test: m dtb(o)image and observe dtb(o).img get rebuilt Change-Id: I197e7d2d3e013ded0e555fc22bb6a1200d40df9c --- build/tasks/kernel.mk | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/build/tasks/kernel.mk b/build/tasks/kernel.mk index d99e49e3..9bcbce37 100644 --- a/build/tasks/kernel.mk +++ b/build/tasks/kernel.mk @@ -440,35 +440,41 @@ include $(BOARD_CUSTOM_DTBOIMG_MK) else MKDTIMG := $(HOST_OUT_EXECUTABLES)/mkdtimg$(HOST_EXECUTABLE_SUFFIX) MKDTBOIMG := $(HOST_OUT_EXECUTABLES)/mkdtboimg.py$(HOST_EXECUTABLE_SUFFIX) -$(BOARD_PREBUILT_DTBOIMAGE): $(DTC) $(MKDTIMG) $(MKDTBOIMG) -ifeq ($(BOARD_KERNEL_SEPARATED_DTBO),true) + +$(DTBO_OUT): + mkdir -p $(DTBO_OUT) + +$(BOARD_PREBUILT_DTBOIMAGE): $(DTC) $(MKDTIMG) $(MKDTBOIMG) $(DTBO_OUT) $(BOARD_PREBUILT_DTBOIMAGE): @echo "Building dtbo.img" - rm -rf $(DTBO_OUT) + $(hide) find $(DTBO_OUT)/arch/$(KERNEL_ARCH)/boot/dts -type f -name "*.dtbo" | xargs rm -f $(call make-dtbo-target,$(KERNEL_DEFCONFIG)) +ifeq ($(BOARD_KERNEL_SEPARATED_DTBO),true) $(call make-dtbo-target,dtbs) ifdef BOARD_DTBO_CFG $(MKDTBOIMG) cfg_create $@ $(BOARD_DTBO_CFG) -d $(DTBO_OUT)/arch/$(KERNEL_ARCH)/boot/dts else $(MKDTBOIMG) create $@ --page_size=$(BOARD_KERNEL_PAGESIZE) $(shell find $(DTBO_OUT)/arch/$(KERNEL_ARCH)/boot/dts -type f -name "*.dtbo" | sort) -endif +endif # BOARD_DTBO_CFG else -$(BOARD_PREBUILT_DTBOIMAGE): - @echo "Building dtbo.img" - $(call make-dtbo-target,$(KERNEL_DEFCONFIG)) $(call make-dtbo-target,dtbo.img) endif # BOARD_KERNEL_SEPARATED_DTBO + $(hide) touch -c $(DTBO_OUT) endif # BOARD_CUSTOM_DTBOIMG_MK endif # TARGET_NEEDS_DTBOIMAGE/BOARD_KERNEL_SEPARATED_DTBO ifeq ($(BOARD_INCLUDE_DTB_IN_BOOTIMG),true) ifeq ($(BOARD_PREBUILT_DTBIMAGE_DIR),) -$(INSTALLED_DTBIMAGE_TARGET): $(DTC) +$(DTB_OUT): + mkdir -p $(DTB_OUT) + +$(INSTALLED_DTBIMAGE_TARGET): $(DTC) $(DTB_OUT) @echo "Building dtb.img" - rm -rf $(DTB_OUT) + $(hide) find $(DTB_OUT)/arch/$(KERNEL_ARCH)/boot/dts -type f -name "*.dtb" | xargs rm -f $(call make-dtb-target,$(KERNEL_DEFCONFIG)) $(call make-dtb-target,dtbs) cat $(shell find $(DTB_OUT)/arch/$(KERNEL_ARCH)/boot/dts -type f -name "*.dtb" | sort) > $@ + $(hide) touch -c $(DTB_OUT) endif # !BOARD_PREBUILT_DTBIMAGE_DIR endif # BOARD_INCLUDE_DTB_IN_BOOTIMG