Re: [PATCH v3] kbuild: Add support for DT binding schema checks
From: Masahiro Yamada <hidden>
Date: 2018-12-11 16:04:06
Also in:
linux-devicetree, linux-doc, linux-kbuild, linuxppc-dev, lkml
On Wed, Dec 12, 2018 at 12:13 AM Rob Herring [off-list ref] wrote:
quoted
quoted
+$(obj)/%.example.dts: $(src)/%.yaml FORCE + $(call if_changed,chk_binding) + +DT_TMP_SCHEMA := .schema.yaml.tmpBTW, why does this file start with a period? What is the meaning of '.tmp' extension?Nothing really. Just named it something so it gets cleaned and ignored by git.
It is cleaned whatever file name you use.
See scripts/Makefile.clean
__clean-files := $(extra-y) $(extra-m) $(extra-) \
$(always) $(targets) $(clean-files) \
$(hostprogs-y) $(hostprogs-m) $(hostprogs-) \
$(hostlibs-y) $(hostlibs-m) $(hostlibs-) \
$(hostcxxlibs-y) $(hostcxxlibs-m)
$(extra-y) is cleaned.
You are adding *.example.dts to .gitignore
Why not "schema.yaml" ?
quoted
quoted
+extra-y += $(DT_TMP_SCHEMA) + +quiet_cmd_mk_schema = SCHEMA $@ + cmd_mk_schema = mkdir -p $(obj); \ + rm -f $@; \ + $(DT_MK_SCHEMA) $(DT_MK_SCHEMA_FLAGS) -o $@ $(filter-out FORCE, $^)"mkdir -p $(obj)" is redundant. Why is 'rm -f $@' necessary ? Can't dt-mk-schema overwrite the output file?It is for error case when the output file is not generated. I can handle this within dt-mk-schema instead.quoted
quoted
+DT_DOCS = $(shell cd $(srctree)/$(src) && find * -name '*.yaml') +DT_SCHEMA_FILES ?= $(addprefix $(src)/,$(DT_DOCS)) + +extra-y += $(patsubst $(src)/%.yaml,%.example.dts, $(DT_SCHEMA_FILES)) +extra-y += $(patsubst $(src)/%.yaml,%.example.dtb, $(DT_SCHEMA_FILES))I assume you intentionally did not do like this: extra-y += $(patsubst %.yaml,%.example.dtb, $(DT_DOCS)) From the commit description, DT_SCHEMA_FILES might be overridden by a user. So, I think this is OK.quoted
+$(obj)/$(DT_TMP_SCHEMA): | $(addprefix $(obj)/,$(patsubst $(src)/%.yaml,%.example.dtb, $(DT_SCHEMA_FILES)))I do not understand this line. Why is it necessary? *.example.dtb files are generated anyway since they are listed in extra-y.It is enforcing the ordering. Without it, the binding checks and building .schema.yaml.tmp happen in parallel because both only have the source files as dependencies. The '|' keeps the dependencies out of the dependency list($^).
What kind problem would you see if the binding checks and building .schema.yaml.tmp happen in parallel? -- Best Regards Masahiro Yamada _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel