In case DEVICE_TREE_DEBUG is set, produce a diff between the base DT and DT with U-Boot extras, to show how much does the U-Boot DT differ from the base DT. This is particularly useful together with OF_UPSTREAM, to minimize the diff between upstream DTs and U-Boot DTs.
This requires DTC 1.7.2 which does not resolve phandles when used in the 'dtc -I dts -O dts ...' mode. With older DTC, the diff is full of churn due to the resolved phandles. Example usage: $ make r8a779g3_sparrowhawk_defconfig && make DEVICE_TREE_DEBUG=1 $ cat ./dts/upstream/src/arm64/renesas/r8a779g3-sparrow-hawk.dtb.diff Signed-off-by: Marek Vasut <[email protected]> --- Cc: Adriano Cordova <[email protected]> Cc: Heinrich Schuchardt <[email protected]> Cc: Ilias Apalodimas <[email protected]> Cc: Peter Robinson <[email protected]> Cc: Sam Edwards <[email protected]> Cc: Tom Rini <[email protected]> Cc: [email protected] --- V2: - Update commit message to mention DTC 1.7.2 - Fix failure when building without DEVICE_TREE_DEBUG , in that case set cmd_dtc_diff = true --- scripts/Makefile.lib | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/scripts/Makefile.lib b/scripts/Makefile.lib index b062db7e87f..04220111ba6 100644 --- a/scripts/Makefile.lib +++ b/scripts/Makefile.lib @@ -388,10 +388,31 @@ ifeq ($(CONFIG_OF_LIBFDT_OVERLAY),y) DTC_FLAGS += -@ endif +# In case DEVICE_TREE_DEBUG is set, produce a diff between the base DT and +# DT with U-Boot extras, to show how much does the U-Boot DT differ from +# the base DT. This is particularly useful together with OF_UPSTREAM, to +# minimize the diff between upstream DTs and U-Boot DTs. +ifdef DEVICE_TREE_DEBUG +cmd_dtc_diff = \ + $(HOSTCC) -E $(dtc_cpp_flags) -I$(obj) -x assembler-with-cpp -o $(dtn-tmp) $< ; \ + $(DTC) -s -O dts -o [email protected] -b 0 \ + -i $(dir $<) $(DTC_FLAGS) $(dtn-tmp) || \ + (echo "Check $(shell pwd)/$< for errors" && false); \ + $(DTC) -s -O dts -o [email protected] -b 0 \ + -i $(dir $<) -i $(u_boot_dtsi_loc) $(DTC_FLAGS) $(dtc-tmp) || \ + (echo "Check $(shell pwd)/$(pre-tmp) for errors" && false); \ + (diff -Naru [email protected] [email protected] > [email protected] || true) + +dtn-tmp = $(subst $(comma),_,$(dot-target).dtn.tmp) +else +cmd_dtc_diff = true +endif + quiet_cmd_dtc = DTC $@ # Modified for U-Boot # Bring in any U-Boot-specific include at the end of the file # And finally any custom .dtsi fragments specified with CONFIG_DEVICE_TREE_INCLUDES + cmd_dtc = mkdir -p $(dir ${dtc-tmp}) ; \ (cat $< > $(pre-tmp)); \ $(foreach f,$(subst $(quote),,$(dtsi_include_list) $(CONFIG_DEVICE_TREE_INCLUDES)), \ @@ -402,7 +423,8 @@ cmd_dtc = mkdir -p $(dir ${dtc-tmp}) ; \ -d $(depfile).dtc.tmp $(dtc-tmp) || \ (echo "Check $(shell pwd)/$(pre-tmp) for errors" && false) \ ; \ - sed "s:$(pre-tmp):$(<):" $(depfile).pre.tmp $(depfile).dtc.tmp > $(depfile) + sed "s:$(pre-tmp):$(<):" $(depfile).pre.tmp $(depfile).dtc.tmp > $(depfile) ; \ + $(cmd_dtc_diff) dtsi_include_list_deps := $(addprefix $(u_boot_dtsi_loc),$(subst $(quote),,$(dtsi_include_list))) -- 2.51.0

