All architectures that use cmd_dtc do so in almost the same way. Create a central build rule to avoid duplication. The one difference is that most current uses of dtc build $(obj)/%.dtb from $(src)/dts/%.dts rather than building the .dtb in the same directory as the .dts file. This difference will be eliminated arch-by-arch in future patches. MIPS is the exception here; it already uses the exact same rule as the new common rule, so the duplicate is removed in this patch to avoid any conflict. arch/mips changes courtesy of Ralf Baechle. Update Documentation/kbuild to remove the explicit call to cmd_dtc from the example, now that the rule exists in a centralized location.
Unified · Split
| @@ -1175,15 +1175,16 @@ When kbuild executes, the following steps are followed (roughly): · 1174 unmodified lines | |||
| 1175 | in an init section in the image. Platform code *must* copy the | 1175 | in an init section in the image. Platform code *must* copy the |
| 1176 | blob to non-init memory prior to calling unflatten_device_tree(). | 1176 | blob to non-init memory prior to calling unflatten_device_tree(). |
| 1177 | 1177 | ||
| 1178 | Example: | 1178 | To use this command, simply add *.dtb into obj-y or targets, or make |
| 1179 | #arch/x86/platform/ce4100/Makefile | 1179 | some other target depend on %.dtb |
| 1180 | clean-files := *dtb.S | ||
| 1181 | 1180 | ||
| 1182 | DTC_FLAGS := -p 1024 | 1181 | A central rule exists to create $(obj)/%.dtb from $(src)/%.dts; |
| 1183 | obj-y += foo.dtb.o | 1182 | architecture Makefiles do no need to explicitly write out that rule. |
| 1184 | 1183 | ||
| 1185 | $(obj)/%.dtb: $(src)/%.dts | 1184 | Example: |
| 1186 | $(call cmd,dtc) | 1185 | targets += $(dtb-y) |
| 1186 | clean-files += *.dtb | ||
| 1187 | DTC_FLAGS ?= -p 1024 | ||
| 1187 | 1188 | ||
| 1188 | --- 6.8 Custom kbuild commands | 1189 | --- 6.8 Custom kbuild commands |
| 1189 | 1190 | ||
| @@ -24,9 +24,6 @@ DTB_FILES = $(patsubst %.dts, %.dtb, $(DTS_FILES)) · 23 unmodified lines | |||
| 24 | 24 | ||
| 25 | obj-y += $(patsubst %.dts, %.dtb.o, $(DTS_FILES)) | 25 | obj-y += $(patsubst %.dts, %.dtb.o, $(DTS_FILES)) |
| 26 | 26 | ||
| 27 | $(obj)/%.dtb: $(src)/%.dts FORCE | ||
| 28 | $(call if_changed_dep,dtc) | ||
| 29 | |||
| 30 | # Let's keep the .dtb files around in case we want to look at them. | 27 | # Let's keep the .dtb files around in case we want to look at them. |
| 31 | .SECONDARY: $(addprefix $(obj)/, $(DTB_FILES)) | 28 | .SECONDARY: $(addprefix $(obj)/, $(DTB_FILES)) |
| 32 | 29 | ||
| @@ -1,4 +1 @@ | |||
| 1 | obj-$(CONFIG_DT_EASY50712) := easy50712.dtb.o | 1 | obj-$(CONFIG_DT_EASY50712) := easy50712.dtb.o |
| 2 | |||
| 3 | $(obj)/%.dtb: $(obj)/%.dts | ||
| 4 | $(call if_changed,dtc) | ||
| @@ -1,4 +1 @@ | |||
| 1 | obj-$(CONFIG_DT_XLP_EVP) := xlp_evp.dtb.o | 1 | obj-$(CONFIG_DT_XLP_EVP) := xlp_evp.dtb.o |
| 2 | |||
| 3 | $(obj)/%.dtb: $(obj)/%.dts | ||
| 4 | $(call if_changed,dtc) | ||
| @@ -266,6 +266,9 @@ $(obj)/%.dtb.S: $(obj)/%.dtb · 265 unmodified lines | |||
| 266 | quiet_cmd_dtc = DTC $@ | 266 | quiet_cmd_dtc = DTC $@ |
| 267 | cmd_dtc = $(objtree)/scripts/dtc/dtc -O dtb -o $@ -b 0 $(DTC_FLAGS) -d $(depfile) $< | 267 | cmd_dtc = $(objtree)/scripts/dtc/dtc -O dtb -o $@ -b 0 $(DTC_FLAGS) -d $(depfile) $< |
| 268 | 268 | ||
| 269 | $(obj)/%.dtb: $(src)/%.dts FORCE | ||
| 270 | $(call if_changed_dep,dtc) | ||
| 271 | |||
| 269 | # Bzip2 | 272 | # Bzip2 |
| 270 | # --------------------------------------------------------------------------- | 273 | # --------------------------------------------------------------------------- |
| 271 | 274 | ||