There is nothing arch specific about building dtb files other than their location under /arch/*/boot/dts/. Keeping each arch aligned is a pain. The dependencies and supported targets are all slightly different. Also, a cross-compiler for each arch is needed, but really the host compiler preprocessor is perfectly fine for building dtbs. Move the build rules to a common location and remove the arch specific ones. This is done in a single step to avoid warnings about overriding rules. The build dependencies had been a mixture of 'scripts' and/or 'prepare'. These pull in several dependencies some of which need a target compiler (specifically devicetable-offsets.h) and aren't needed to build dtbs. All that is really needed is dtc, so adjust the dependencies to only be dtc. This change enables support 'dtbs_install' on some arches which were missing the target.
Showing the changes to scripts (3 of 17 files). Show all
Unified · Split
| @@ -39,8 +39,7 @@ build_unifdef: $(obj)/unifdef · 38 unmodified lines | ||
| 39 | 39 | subdir-$(CONFIG_MODVERSIONS) += genksyms |
| 40 | 40 | subdir-y += mod |
| 41 | 41 | subdir-$(CONFIG_SECURITY_SELINUX) += selinux |
| 42 | −subdir-$(CONFIG_DTC) += dtc | |
| 43 | 42 | subdir-$(CONFIG_GDB_SCRIPTS) += gdb |
| 44 | 43 | |
| 45 | 44 | # Let clean descend into subdirs |
| 46 | −subdir- += basic kconfig package gcc-plugins | |
| 45 | +subdir- += basic dtc kconfig package gcc-plugins | |
| @@ -283,7 +283,7 @@ $(obj)/%.dtb.S: $(obj)/%.dtb FORCE · 282 unmodified lines | ||
| 283 | 283 | |
| 284 | 284 | quiet_cmd_dtc = DTC $@ |
| 285 | 285 | cmd_dtc = mkdir -p $(dir ${dtc-tmp}) ; \ |
| 286 | − $(CPP) $(dtc_cpp_flags) -x assembler-with-cpp -o $(dtc-tmp) $< ; \ | |
| 286 | + $(HOSTCC) -E $(dtc_cpp_flags) -x assembler-with-cpp -o $(dtc-tmp) $< ; \ | |
| 287 | 287 | $(DTC) -O dtb -o $@ -b 0 \ |
| 288 | 288 | $(addprefix -i,$(dir $<) $(DTC_INCLUDE)) $(DTC_FLAGS) \ |
| 289 | 289 | -d $(depfile).dtc.tmp $(dtc-tmp) ; \ |
| @@ -1,7 +1,7 @@ | ||
| 1 | 1 | # SPDX-License-Identifier: GPL-2.0 |
| 2 | 2 | # scripts/dtc makefile |
| 3 | 3 | |
| 4 | −hostprogs-y := dtc | |
| 4 | +hostprogs-$(CONFIG_DTC) := dtc | |
| 5 | 5 | always := $(hostprogs-y) |
| 6 | 6 | |
| 7 | 7 | dtc-objs := dtc.o flattree.o fstree.o data.o livetree.o treesource.o \ |