Hi Rob, On 14/09/21 2:51 am, Rob Herring 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. Just started building 5.16-rc4 and hit the following error /usr/src/linux/scripts/dtc/Makefile:23: *** dtc needs libyaml for DT schema validation support. Install the necessary libyaml development package.. Stop. make: *** [/usr/src/linux/Makefile:1405: scripts_dtc] Error 2 make: *** Waiting for unfinished jobs.... I tracked it back to this patch and I gather that the "error" is very much intended. Fixing it means I need to get a native libyaml into my cross toolchain, which is doable but a bit of a hassle. This probably affects other meta build systems like buildroot and yocto. I think I understand what you're getting at but is it possible to have some kind of escape hatch to avoid having to add a build time tool dependency (or even bundling libyaml next to scripts/dtc)? I also notice that when I do supply a toolchain with libyaml the build times are impacted by a noticable factor. > Cc: Dmitry Baryshkov <dmitry.baryshkov@xxxxxxxxxx> > Cc: Tom Rini <trini@xxxxxxxxxxxx> > Cc: Masahiro Yamada <masahiroy@xxxxxxxxxx> > Cc: linux-kbuild@xxxxxxxxxxxxxxx > Signed-off-by: Rob Herring <robh@xxxxxxxxxx> > --- > v2: > - Also enable schema checks on %.dtbo targets > --- > Makefile | 10 +++++----- > 1 file changed, 5 insertions(+), 5 deletions(-) > > diff --git a/Makefile b/Makefile > index 7cfe4ff36f44..c57a7657c8dd 100644 > --- a/Makefile > +++ b/Makefile > @@ -1402,17 +1402,17 @@ endif > > ifneq ($(dtstree),) > > -%.dtb: include/config/kernel.release scripts_dtc > - $(Q)$(MAKE) $(build)=$(dtstree) $(dtstree)/$@ > +%.dtb: dt_binding_check include/config/kernel.release scripts_dtc > + $(Q)$(MAKE) $(build)=$(dtstree) $(dtstree)/$@ $(dtstree)/$*.dt.yaml > > -%.dtbo: include/config/kernel.release scripts_dtc > - $(Q)$(MAKE) $(build)=$(dtstree) $(dtstree)/$@ > +%.dtbo: dt_binding_check include/config/kernel.release scripts_dtc > + $(Q)$(MAKE) $(build)=$(dtstree) $(dtstree)/$@ $(dtstree)/$*.dt.yaml > > PHONY += dtbs dtbs_install dtbs_check > dtbs: include/config/kernel.release scripts_dtc > $(Q)$(MAKE) $(build)=$(dtstree) > > -ifneq ($(filter dtbs_check, $(MAKECMDGOALS)),) > +ifneq ($(filter dtbs_check %.dtb %.dtbo, $(MAKECMDGOALS)),) > export CHECK_DTBS=y > dtbs: dt_binding_check > endif