It is possible to build a single dtb, but not with DT schema validation enabled. Enable the schema validation to run for %.dtb and %.dtbo targets. Anyone building a dtb for a specific platform *should* pay attention to schema warnings. This could be supported with a separate %.dt.yaml target instead. However, the .dt.yaml format is considered an intermediate format and could possibly go away at some point if schema checking is integrated into dtc. Also, the plan is to enable the schema checks by default once platforms are free of warnings, and this is a move in that direction. This patch differs from the previous one ([1]) in the fact that it requires specifying VALIDATE_DT=1 to run the checks while doing the build. Thus default build procedures would not obtain additional build dependency, while maintainers can still build a single DTB file an get only corresponding warnings. [1] https://lore.kernel.org/all/20210913145146.766080-1-robh@xxxxxxxxxx/ Cc: Bjorn Andersson <bjorn.andersson@xxxxxxxxxx> Cc: Tom Rini <trini@xxxxxxxxxxxx> Cc: Masahiro Yamada <masahiroy@xxxxxxxxxx> Cc: linux-kbuild@xxxxxxxxxxxxxxx Co-developed-by: Rob Herring <robh@xxxxxxxxxx> Signed-off-by: Rob Herring <robh@xxxxxxxxxx> Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@xxxxxxxxxx> --- Makefile | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/Makefile b/Makefile index c43d825a3c4c..0942922384c4 100644 --- a/Makefile +++ b/Makefile @@ -1365,11 +1365,17 @@ endif ifneq ($(dtstree),) -%.dtb: include/config/kernel.release scripts_dtc - $(Q)$(MAKE) $(build)=$(dtstree) $(dtstree)/$@ +ifneq ($(VALIDATE_DT),) +DT_YAML = $(dtstree)/$*.dt.yaml +DT_CHECK = dt_binding_check +export CHECK_DTBS=y +endif -%.dtbo: include/config/kernel.release scripts_dtc - $(Q)$(MAKE) $(build)=$(dtstree) $(dtstree)/$@ +%.dtb: include/config/kernel.release scripts_dtc $(DT_CHECK) + $(Q)$(MAKE) $(build)=$(dtstree) $(dtstree)/$@ $(DT_YAML) + +%.dtbo: include/config/kernel.release scripts_dtc $(DT_CHECK) + $(Q)$(MAKE) $(build)=$(dtstree) $(dtstree)/$@ $(DT_YAML) PHONY += dtbs dtbs_install dtbs_check dtbs: include/config/kernel.release scripts_dtc @@ -1654,6 +1660,10 @@ help: @echo ' 3: more obscure warnings, can most likely be ignored' @echo ' e: warnings are being treated as errors' @echo ' Multiple levels can be combined with W=12 or W=123' + @$(if $(dtstree), \ + echo ' make VALIDATE_DT=y [targets] Validate all DT processsed during the build'; \ + echo ' This can be applied both to "dtbs" and to individual "foo.dtb" targets' ; \ + ) @echo '' @echo 'Execute "make" or "make all" to build all targets marked with [*] ' @echo 'For further info see the ./README file' -- 2.35.1