@@ -78,24 +78,18 @@ always-y += $(userprogs-always-y) $(userprogs-always-m)
78
78
# If CONFIG_OF_ALL_DTBS is enabled, all DT blobs are built
79
79
dtb-$(CONFIG_OF_ALL_DTBS) += $(dtb-)
80
80
81
- # List all dtbs to be generated by fdtoverlay
82
- overlay-y := $(foreach m,$(dtb-y), $(if $(strip $($(m:.dtb=-dtbs))),$(m),))
83
-
84
- # Generate symbols for the base files so overlays can be applied to them.
85
- $(foreach m,$(overlay-y), $(eval DTC_FLAGS_$(basename $(firstword $($(m:.dtb=-dtbs)))) += -@))
86
-
87
- # Add base dtb and overlay dtbo
88
- dtb-y += $(foreach m,$(overlay-y), $($(m:.dtb=-dtbs)))
81
+ # Composite DTB (i.e. DTB constructed by overlay)
82
+ multi-dtb-y := $(call multi-search, $(dtb-y), .dtb, -dtbs)
83
+ # Primitive DTB compiled from *.dts
84
+ real-dtb-y := $(call real-search, $(dtb-y), .dtb, -dtbs)
85
+ # Base DTB that overlay is applied onto (each first word of $(*-dtbs) expansion)
86
+ base-dtb-y := $(foreach m, $(multi-dtb-y), $(firstword $(call suffix-search, $m, .dtb, -dtbs)))
89
87
90
88
always-y += $(dtb-y)
91
89
92
90
ifneq ($(CHECK_DTBS),)
93
- # Don't run schema checks for dtbs created by fdtoverlay as they don't
94
- # have corresponding dts files.
95
- dt-yaml-y := $(filter-out $(overlay-y),$(dtb-y))
96
-
97
- always-y += $(patsubst %.dtb,%.dt.yaml, $(dt-yaml-y))
98
- always-y += $(patsubst %.dtbo,%.dt.yaml, $(dt-yaml-y))
91
+ always-y += $(patsubst %.dtb,%.dt.yaml, $(real-dtb-y))
92
+ always-y += $(patsubst %.dtbo,%.dt.yaml, $(real-dtb-y))
99
93
endif
100
94
101
95
# Add subdir path
@@ -108,6 +102,8 @@ lib-y := $(addprefix $(obj)/,$(lib-y))
108
102
real-obj-y := $(addprefix $(obj)/,$(real-obj-y))
109
103
real-obj-m := $(addprefix $(obj)/,$(real-obj-m))
110
104
multi-obj-m := $(addprefix $(obj)/, $(multi-obj-m))
105
+ multi-dtb-y := $(addprefix $(obj)/, $(multi-dtb-y))
106
+ real-dtb-y := $(addprefix $(obj)/, $(real-dtb-y))
111
107
subdir-ym := $(addprefix $(obj)/,$(subdir-ym))
112
108
113
109
# Finds the multi-part object the current object will be linked into.
@@ -325,6 +321,9 @@ endif
325
321
326
322
DTC_FLAGS += $(DTC_FLAGS_$(basetarget))
327
323
324
+ # Set -@ if the target is a base DTB that overlay is applied onto
325
+ DTC_FLAGS += $(if $(filter $(patsubst $(obj)/%,%,$@), $(base-dtb-y)), -@)
326
+
328
327
# Generate an assembly file to wrap the output of the device tree compiler
329
328
quiet_cmd_dt_S_dtb= DTB $@
330
329
cmd_dt_S_dtb= \
@@ -356,14 +355,12 @@ $(obj)/%.dtb: $(src)/%.dts $(DTC) FORCE
356
355
$(obj)/%.dtbo: $(src)/%.dts $(DTC) FORCE
357
356
$(call if_changed_dep,dtc)
358
357
359
- overlay-y := $(addprefix $(obj)/, $(overlay-y))
360
-
361
358
quiet_cmd_fdtoverlay = DTOVL $@
362
359
cmd_fdtoverlay = $(objtree)/scripts/dtc/fdtoverlay -o $@ -i $(real-prereqs)
363
360
364
- $(overlay -y): FORCE
361
+ $(multi-dtb -y): FORCE
365
362
$(call if_changed,fdtoverlay)
366
- $(call multi_depend, $(overlay -y), .dtb, -dtbs)
363
+ $(call multi_depend, $(multi-dtb -y), .dtb, -dtbs)
367
364
368
365
DT_CHECKER ?= dt-validate
369
366
DT_CHECKER_FLAGS ?= $(if $(DT_SCHEMA_FILES),,-m)
0 commit comments