sm8x50: Make rules for adding overlays to the prebuilts

Every time new board support is added, a few lines need to be copied and
modified to add the support. De-duplicate the logic and add static
pattern recipes to generate and apply the overlays.

Change-Id: Iaa9d2d62f0d2c20a11221a9f1264caea5e2290c7
Signed-off-by: Elliot Berman <quic_eberman@quicinc.com>
diff --git a/build/tasks/kernel.mk b/build/tasks/kernel.mk
index 64d62f0..e5ea3c3 100644
--- a/build/tasks/kernel.mk
+++ b/build/tasks/kernel.mk
@@ -2,25 +2,27 @@
 
 DTC := $(HOST_OUT)/bin/dtc
 FDTOVERLAY := $(HOST_OUT)/bin/fdtoverlay
-SM8550HDK_DTS_OVERLAY := device/linaro/dragonboard/sm8x50/dtb-overlays/sm8550-hdk.dts
-SM8550QRD_DTS_OVERLAY := device/linaro/dragonboard/sm8x50/dtb-overlays/sm8550-qrd.dts
-SM8650QRD_DTS_OVERLAY := device/linaro/dragonboard/sm8x50/dtb-overlays/sm8650-qrd.dts
+
+SM8X50_STAGING_DIR := $(call intermediates-dir-for,PACKAGING,dtb)
+
+SM8X50_BOARDS ?= sm8550-hdk sm8550-qrd sm8650-qrd
+SM8X50_DTBS := $(foreach board,$(SM8X50_BOARDS),$(wildcard $(TARGET_KERNEL_DIR)/$(board).dtb))
+SM8X50_DTBS := $(addprefix $(SM8X50_STAGING_DIR)/,$(notdir $(SM8X50_DTBS)))
+SM8X50_DTBOS := $(patsubst %.dtb,%.dtbo,$(SM8X50_DTBS))
+
+# generate the .dtbo which contains the msm-id and board-id
+$(SM8X50_DTBOS): $(SM8X50_STAGING_DIR)/%.dtbo: device/linaro/dragonboard/sm8x50/dtb-overlays/%.dts $(DTC)
+	-$(DTC) -@ -I dts -O dtb -o $@ $<
+
+# apply the above .dtbo to the prebuilt .dtb
+$(SM8X50_DTBS): $(SM8X50_STAGING_DIR)/%.dtb: $(TARGET_KERNEL_DIR)/%.dtb $(SM8X50_STAGING_DIR)/%.dtbo | $(FDTOVERLAY)
+	-$(FDTOVERLAY) -o $@ -i $^
 
 DB845C_DTB := $(TARGET_KERNEL_DIR)/sdm845-db845c.dtb
 RB5_DTB := $(wildcard $(TARGET_KERNEL_DIR)/qrb5165-rb5.dtb)
-SM8550HDK_DTB := $(wildcard $(TARGET_KERNEL_DIR)/sm8550-hdk.dtb)
-SM8550QRD_DTB := $(wildcard $(TARGET_KERNEL_DIR)/sm8550-qrd.dtb)
-SM8650QRD_DTB := $(wildcard $(TARGET_KERNEL_DIR)/sm8650-qrd.dtb)
 
-$(PRODUCT_OUT)/dtb.img: $(DTC) $(FDTOVERLAY) $(SM8550HDK_DTB) $(SM8550QRD_DTB) $(SM8650QRD_DTB) $(RB5_DTB) $(DB845C_DTB)
-	-$(DTC) -@ -I dts -O dtb -o $(PRODUCT_OUT)/sm8550-hdk.dtbo $(SM8550HDK_DTS_OVERLAY)
-	-$(FDTOVERLAY) -i $(SM8550HDK_DTB) -o $(PRODUCT_OUT)/sm8550-hdk.dtb $(PRODUCT_OUT)/sm8550-hdk.dtbo
-	-$(DTC) -@ -I dts -O dtb -o $(PRODUCT_OUT)/sm8550-qrd.dtbo $(SM8550QRD_DTS_OVERLAY)
-	-$(FDTOVERLAY) -i $(SM8550QRD_DTB) -o $(PRODUCT_OUT)/sm8550-qrd.dtb $(PRODUCT_OUT)/sm8550-qrd.dtbo
-	-$(DTC) -@ -I dts -O dtb -o $(PRODUCT_OUT)/sm8650-qrd.dtbo $(SM8650QRD_DTS_OVERLAY)
-	-$(FDTOVERLAY) -i $(SM8650QRD_DTB) -o $(PRODUCT_OUT)/sm8650-qrd.dtb $(PRODUCT_OUT)/sm8650-qrd.dtbo
-	-cat $(DB845C_DTB) $(RB5_DTB) $(PRODUCT_OUT)/sm8550-hdk.dtb $(PRODUCT_OUT)/sm8550-qrd.dtb $(PRODUCT_OUT)/sm8650-qrd.dtb > $@
-	-rm $(PRODUCT_OUT)/sm8*dtb*
+$(PRODUCT_OUT)/dtb.img: $(SM8X50_DTBS) $(RB5_DTB) $(DB845C_DTB)
+	-cat $(SM8X50_DTBS) $(RB5_DTB) $(DB845C_DTB) > $@
 
 droidcore: $(PRODUCT_OUT)/dtb.img