diff --git a/build/tasks/kernel.mk b/build/tasks/kernel.mk index 64ef99bb..38674fc7 100644 --- a/build/tasks/kernel.mk +++ b/build/tasks/kernel.mk @@ -41,6 +41,9 @@ # For example, for ARM devices, # use zImage-dtb instead of zImage. # +# BOARD_KERNEL_APPEND_DTBS = List of DTBs to be appended to the kernel image, +# wildcard is allowed for filename. +# # BOARD_DTB_CFG = Path to a mkdtboimg config file for dtb.img # # BOARD_DTBO_CFG = Path to a mkdtboimg config file @@ -688,14 +691,37 @@ endif ## Install it +ifeq ($(or $(FULL_RECOVERY_KERNEL_BUILD), $(FULL_KERNEL_BUILD)),true) + +# Append DTBs to kernel image +# $(1): output directory path (The value passed to O=) +# $(2): output kernel image path +define append-dtbs-to-kernel-image + $(hide) if grep -q '^CONFIG_OF=y' $(1)/.config; then \ + $(if $(BOARD_KERNEL_APPEND_DTBS),\ + echo "Appending DTBs to kernel image";\ + $(foreach dtb,$(BOARD_KERNEL_APPEND_DTBS),\ + cat `find $(1)/arch/$(KERNEL_ARCH)/boot/dts/$(dir $(dtb)) -maxdepth 1 -type f -name "$(notdir $(dtb))"` >> $(2);\ + )\ + )\ + true;\ + fi +endef + +endif # FULL_RECOVERY_KERNEL_BUILD or FULL_KERNEL_BUILD + ifeq ($(NEEDS_KERNEL_COPY),true) $(INSTALLED_KERNEL_TARGET): $(KERNEL_BIN) $(transform-prebuilt-to-target) + $(if $(filter true,$(FULL_KERNEL_BUILD)),\ + $(call append-dtbs-to-kernel-image,$(KERNEL_OUT),$@)) endif ifeq ($(RECOVERY_KERNEL_COPY),true) $(INSTALLED_RECOVERY_KERNEL_TARGET): $(RECOVERY_BIN) $(transform-prebuilt-to-target) + $(if $(filter true,$(FULL_RECOVERY_KERNEL_BUILD)),\ + $(call append-dtbs-to-kernel-image,$(RECOVERY_KERNEL_OUT),$@)) endif .PHONY: recovery-kernel