image: improve uImage.FIT device tree overlay support
[openwrt/staging/hauke.git] / include / image.mk
index 0eae216ded20f3e8fcd876819a4c96751ac4c292..0cf110df9319c3a84ced0624071c328cee34d367 100644 (file)
@@ -554,16 +554,33 @@ define Device/Build/dtb
   image_prepare: $(KDIR)/image-$(1).dtb
   endif
 
+endef
+
+define Device/Build/dtbo
+  ifndef BUILD_DTS_$(1)
+  BUILD_DTS_$(1) := 1
+  $(KDIR)/image-$(1).dtbo: FORCE
+       $(call Image/BuildDTB,$(strip $(2))/$(strip $(3)).dtso,$$@)
+
+  image_prepare: $(KDIR)/image-$(1).dtbo
+  endif
+
 endef
 endif
 
 define Device/Build/kernel
-  $$(eval $$(foreach dts,$$(DEVICE_DTS) $$(DEVICE_DTS_OVERLAY), \
+  $$(eval $$(foreach dts,$$(DEVICE_DTS), \
        $$(call Device/Build/dtb,$$(notdir $$(dts)), \
                $$(if $$(DEVICE_DTS_DIR),$$(DEVICE_DTS_DIR),$$(DTS_DIR)), \
                $$(dts) \
        ) \
   ))
+  $$(eval $$(foreach dtso,$$(DEVICE_DTS_OVERLAY), \
+       $$(call Device/Build/dtbo,$$(notdir $$(dtso)), \
+               $$(if $$(DEVICE_DTS_DIR),$$(DEVICE_DTS_DIR),$$(DTS_DIR)), \
+               $$(dtso) \
+       ) \
+  ))
 
   $(KDIR)/$$(KERNEL_NAME):: image_prepare
   $$(_TARGET): $$(if $$(KERNEL_INSTALL),$(BIN_DIR)/$$(KERNEL_IMAGE))