14f0e3a57SRob Herring# SPDX-License-Identifier: GPL-2.0 24f0e3a57SRob HerringDT_DOC_CHECKER ?= dt-doc-validate 34f0e3a57SRob HerringDT_EXTRACT_EX ?= dt-extract-example 44f0e3a57SRob HerringDT_MK_SCHEMA ?= dt-mk-schema 5e996c1fdSRob HerringDT_MK_SCHEMA_USERONLY_FLAG := $(if $(DT_SCHEMA_FILES), -u) 64f0e3a57SRob Herring 7*ea5b8b5eSRob HerringDT_SCHEMA_MIN_VERSION = 2020.5 8*ea5b8b5eSRob Herring 9*ea5b8b5eSRob HerringPHONY += check_dtschema_version 10*ea5b8b5eSRob Herringcheck_dtschema_version: 11*ea5b8b5eSRob Herring @{ echo $(DT_SCHEMA_MIN_VERSION); \ 12*ea5b8b5eSRob Herring $(DT_DOC_CHECKER) --version 2>/dev/null || echo 0; } | sort -VC || \ 13*ea5b8b5eSRob Herring { echo "ERROR: dtschema minimum version is v$(DT_SCHEMA_MIN_VERSION)" >&2; false; } 14*ea5b8b5eSRob Herring 154f0e3a57SRob Herringquiet_cmd_chk_binding = CHKDT $(patsubst $(srctree)/%,%,$<) 1605aeca7cSRob Herring cmd_chk_binding = $(DT_DOC_CHECKER) -u $(srctree)/$(src) $< ; \ 174f0e3a57SRob Herring $(DT_EXTRACT_EX) $< > $@ 184f0e3a57SRob Herring 19*ea5b8b5eSRob Herring$(obj)/%.example.dts: $(src)/%.yaml check_dtschema_version FORCE 204f0e3a57SRob Herring $(call if_changed,chk_binding) 214f0e3a57SRob Herring 222ba06cd8SRob Herring# Use full schemas when checking %.example.dts 232ba06cd8SRob HerringDT_TMP_SCHEMA := $(obj)/processed-schema-examples.yaml 244f0e3a57SRob Herring 258b6b8021SRob Herringfind_cmd = find $(srctree)/$(src) \( -name '*.yaml' ! \ 262ba06cd8SRob Herring -name 'processed-schema*' ! \ 278b6b8021SRob Herring -name '*.example.dt.yaml' \) 288b6b8021SRob Herring 298b6b8021SRob Herringquiet_cmd_mk_schema = SCHEMA $@ 308b6b8021SRob Herring cmd_mk_schema = rm -f $@ ; \ 318b6b8021SRob Herring $(if $(DT_MK_SCHEMA_FLAGS), \ 328b6b8021SRob Herring echo $(real-prereqs), \ 338b6b8021SRob Herring $(find_cmd)) | \ 348b6b8021SRob Herring xargs $(DT_MK_SCHEMA) $(DT_MK_SCHEMA_FLAGS) >> $@ 358b6b8021SRob Herring 368b6b8021SRob HerringDT_DOCS = $(shell $(find_cmd) | sed -e 's|^$(srctree)/||') 375fa98c2eSRob Herring 382ba06cd8SRob HerringDT_SCHEMA_FILES ?= $(DT_DOCS) 394f0e3a57SRob Herring 40e10c4321SMasahiro Yamadaextra-$(CHECK_DT_BINDING) += $(patsubst $(src)/%.yaml,%.example.dts, $(DT_SCHEMA_FILES)) 41e10c4321SMasahiro Yamadaextra-$(CHECK_DT_BINDING) += $(patsubst $(src)/%.yaml,%.example.dt.yaml, $(DT_SCHEMA_FILES)) 42e10c4321SMasahiro Yamadaextra-$(CHECK_DT_BINDING) += processed-schema-examples.yaml 432ba06cd8SRob Herring 4465220630SRob Herringoverride DTC_FLAGS := \ 4565220630SRob Herring -Wno-avoid_unnecessary_addr_size \ 4665220630SRob Herring -Wno-graph_child_address 4765220630SRob Herring 48*ea5b8b5eSRob Herring$(obj)/processed-schema-examples.yaml: $(DT_DOCS) check_dtschema_version FORCE 492ba06cd8SRob Herring $(call if_changed,mk_schema) 504f0e3a57SRob Herring 51e996c1fdSRob Herring$(obj)/processed-schema.yaml: DT_MK_SCHEMA_FLAGS := $(DT_MK_SCHEMA_USERONLY_FLAG) 52*ea5b8b5eSRob Herring$(obj)/processed-schema.yaml: $(DT_SCHEMA_FILES) check_dtschema_version FORCE 534f0e3a57SRob Herring $(call if_changed,mk_schema) 5493512dadSRob Herring 552ba06cd8SRob Herringextra-y += processed-schema.yaml 56