Am 06.07.22 um 13:44 schrieb Dmitry Baryshkov: > While it is possible to validate all generated dtb files against the > schema, it typically results in huge pile of warnings. While working on > a platform it is quite useful to validate just a single file against > schema. > > Allow specifying CHECK_DTBS=1 on a make command line to enable > validation while building dtb files. This reuses the infrastructure > existing for `make dtbs_check`, making dtbs_check a shortcut for > `make CHECK_DTBS=1 dt_binding_check dtbs`. > > Cc: Bjorn Andersson <bjorn.andersson@xxxxxxxxxx> > Cc: Tom Rini <trini@xxxxxxxxxxxx> > Cc: Masahiro Yamada <masahiroy@xxxxxxxxxx> > Cc: linux-kbuild@xxxxxxxxxxxxxxx > Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@xxxxxxxxxx> This is really useful, thanks! Exactly what I was looking for. May I suggest to add a line about this new option to Documentation/devicetree/bindings/writing-schema.rst? Tested-by: Frieder Schrempf <frieder.schrempf@xxxxxxxxxx> > --- > > Changes since v1: > - Added dependency to rebuild schema if `make dtbs` was used. > > --- > Makefile | 20 +++++++++++++++----- > 1 file changed, 15 insertions(+), 5 deletions(-) > > diff --git a/Makefile b/Makefile > index 9aa7de1ca58f..5a9858aa4934 100644 > --- a/Makefile > +++ b/Makefile > @@ -1464,14 +1464,18 @@ endif > > ifneq ($(dtstree),) > > -%.dtb: include/config/kernel.release scripts_dtc > +ifneq ($(CHECK_DTBS),) > +DT_TMP_BINDING := dt_binding > +endif > + > +%.dtb: include/config/kernel.release scripts_dtc $(DT_TMP_BINDING) > $(Q)$(MAKE) $(build)=$(dtstree) $(dtstree)/$@ > > -%.dtbo: include/config/kernel.release scripts_dtc > +%.dtbo: include/config/kernel.release scripts_dtc $(DT_TMP_BINDING) > $(Q)$(MAKE) $(build)=$(dtstree) $(dtstree)/$@ > > PHONY += dtbs dtbs_install dtbs_check > -dtbs: include/config/kernel.release scripts_dtc > +dtbs: include/config/kernel.release scripts_dtc $(DT_TMP_BINDING) > $(Q)$(MAKE) $(build)=$(dtstree) > > ifneq ($(filter dtbs_check, $(MAKECMDGOALS)),) > @@ -1498,8 +1502,10 @@ ifneq ($(filter dt_binding_check, $(MAKECMDGOALS)),) > export CHECK_DT_BINDING=y > endif > > -PHONY += dt_binding_check > -dt_binding_check: scripts_dtc > +dt_binding_check: dt_binding > + > +PHONY += dt_binding > +dt_binding: scripts_dtc > $(Q)$(MAKE) $(build)=Documentation/devicetree/bindings > > # --------------------------------------------------------------------------- > @@ -1774,6 +1780,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 CHECK_DTBS=1 [targets] Check all generated dtb files against schema'; \ > + 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' >