On Thu, Jun 23, 2022 at 8:44 AM Dmitry Baryshkov <dmitry.baryshkov@xxxxxxxxxx> wrote: > > 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. I'd rather this be a kconfig option, so that eventually 'make allmodconfig; make dtbs' also runs the schema checks. If something can be enabled for allmodconfig, then builders will automatically start testing it. Though the extra dependency is a problem here. > > [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.yaml files are deprecated now. This probably doesn't do anything. > +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'; \ Typo. > + 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 >