kernel: Build dtb.img from compiled dtbs

Change-Id: If419d090740c005357fbd1665f78296d106b4509
diff --git a/build/tasks/kernel.mk b/build/tasks/kernel.mk
index 0fdbba3..a654bea 100644
--- a/build/tasks/kernel.mk
+++ b/build/tasks/kernel.mk
@@ -214,6 +214,12 @@
 $(call internal-make-kernel-target,$(PRODUCT_OUT)/dtbo,$(1))
 endef
 
+# Make a DTB targets
+# $(1): The DTB target to build (eg. dtbs, defconfig)
+define make-dtb-target
+$(call internal-make-kernel-target,$(PRODUCT_OUT)/dtbs,$(1))
+endef
+
 $(KERNEL_OUT):
 	mkdir -p $(KERNEL_OUT)
 
@@ -298,4 +304,13 @@
 .PHONY: dtboimage
 dtboimage: $(INSTALLED_DTBOIMAGE_TARGET)
 
+ifeq ($(BOARD_INCLUDE_DTB_IN_BOOTIMG),true)
+$(BOARD_PREBUILT_DTBIMAGE_DIR):
+	echo -e ${CL_GRN}"Building DTBs"${CL_RST}
+	$(call make-dtb-target,$(KERNEL_DEFCONFIG))
+	$(call make-dtb-target,dtbs)
+.PHONY: dtbimage
+dtbimage: $(INSTALLED_DTBIMAGE_TARGET)
+endif # BOARD_INCLUDE_DTB_IN_BOOTIMG
+
 endif # TARGET_NO_KERNEL
diff --git a/config/BoardConfigKernel.mk b/config/BoardConfigKernel.mk
index b0a75ef..580baa0 100644
--- a/config/BoardConfigKernel.mk
+++ b/config/BoardConfigKernel.mk
@@ -137,6 +137,10 @@
 BOARD_PREBUILT_DTBOIMAGE ?= $(PRODUCT_OUT)/dtbo-pre.img
 endif
 
+ifeq ($(BOARD_INCLUDE_DTB_IN_BOOTIMG),true)
+BOARD_PREBUILT_DTBIMAGE_DIR ?= $(PRODUCT_OUT)/dtbs/arch/$(KERNEL_ARCH)/boot/dts/**
+endif
+
 # Set use the full path to the make command
 KERNEL_MAKE_CMD := $(BUILD_TOP)/prebuilts/build-tools/$(HOST_OS)-x86/bin/make