Commit | Line | Data |
---|---|---|
4f0e3a57 RH |
1 | # SPDX-License-Identifier: GPL-2.0 |
2 | DT_DOC_CHECKER ?= dt-doc-validate | |
3 | DT_EXTRACT_EX ?= dt-extract-example | |
4 | DT_MK_SCHEMA ?= dt-mk-schema | |
e996c1fd | 5 | DT_MK_SCHEMA_USERONLY_FLAG := $(if $(DT_SCHEMA_FILES), -u) |
4f0e3a57 | 6 | |
ea5b8b5e RH |
7 | DT_SCHEMA_MIN_VERSION = 2020.5 |
8 | ||
9 | PHONY += check_dtschema_version | |
10 | check_dtschema_version: | |
11 | @{ echo $(DT_SCHEMA_MIN_VERSION); \ | |
12 | $(DT_DOC_CHECKER) --version 2>/dev/null || echo 0; } | sort -VC || \ | |
13 | { echo "ERROR: dtschema minimum version is v$(DT_SCHEMA_MIN_VERSION)" >&2; false; } | |
14 | ||
4f0e3a57 | 15 | quiet_cmd_chk_binding = CHKDT $(patsubst $(srctree)/%,%,$<) |
05aeca7c | 16 | cmd_chk_binding = $(DT_DOC_CHECKER) -u $(srctree)/$(src) $< ; \ |
4f0e3a57 RH |
17 | $(DT_EXTRACT_EX) $< > $@ |
18 | ||
ea5b8b5e | 19 | $(obj)/%.example.dts: $(src)/%.yaml check_dtschema_version FORCE |
4f0e3a57 RH |
20 | $(call if_changed,chk_binding) |
21 | ||
2ba06cd8 RH |
22 | # Use full schemas when checking %.example.dts |
23 | DT_TMP_SCHEMA := $(obj)/processed-schema-examples.yaml | |
4f0e3a57 | 24 | |
8b6b8021 RH |
25 | find_cmd = find $(srctree)/$(src) \( -name '*.yaml' ! \ |
26 | -name 'processed-schema*' ! \ | |
27 | -name '*.example.dt.yaml' \) | |
28 | ||
4f0e3a57 | 29 | quiet_cmd_mk_schema = SCHEMA $@ |
8b6b8021 RH |
30 | cmd_mk_schema = rm -f $@ ; \ |
31 | $(if $(DT_MK_SCHEMA_FLAGS), \ | |
32 | echo $(real-prereqs), \ | |
33 | $(find_cmd)) | \ | |
34 | xargs $(DT_MK_SCHEMA) $(DT_MK_SCHEMA_FLAGS) >> $@ | |
4f0e3a57 | 35 | |
8b6b8021 | 36 | DT_DOCS = $(shell $(find_cmd) | sed -e 's|^$(srctree)/||') |
5fa98c2e | 37 | |
2ba06cd8 | 38 | DT_SCHEMA_FILES ?= $(DT_DOCS) |
4f0e3a57 | 39 | |
e10c4321 MY |
40 | extra-$(CHECK_DT_BINDING) += $(patsubst $(src)/%.yaml,%.example.dts, $(DT_SCHEMA_FILES)) |
41 | extra-$(CHECK_DT_BINDING) += $(patsubst $(src)/%.yaml,%.example.dt.yaml, $(DT_SCHEMA_FILES)) | |
42 | extra-$(CHECK_DT_BINDING) += processed-schema-examples.yaml | |
2ba06cd8 | 43 | |
65220630 RH |
44 | override DTC_FLAGS := \ |
45 | -Wno-avoid_unnecessary_addr_size \ | |
3eb619b2 RH |
46 | -Wno-graph_child_address \ |
47 | -Wno-interrupt_provider | |
65220630 | 48 | |
ea5b8b5e | 49 | $(obj)/processed-schema-examples.yaml: $(DT_DOCS) check_dtschema_version FORCE |
2ba06cd8 | 50 | $(call if_changed,mk_schema) |
4f0e3a57 | 51 | |
e996c1fd | 52 | $(obj)/processed-schema.yaml: DT_MK_SCHEMA_FLAGS := $(DT_MK_SCHEMA_USERONLY_FLAG) |
ea5b8b5e | 53 | $(obj)/processed-schema.yaml: $(DT_SCHEMA_FILES) check_dtschema_version FORCE |
4f0e3a57 | 54 | $(call if_changed,mk_schema) |
93512dad | 55 | |
ce810eeb | 56 | extra-$(CHECK_DTBS) += processed-schema.yaml |
fa714cf5 MY |
57 | |
58 | # Hack: avoid 'Argument list too long' error for 'make clean'. Remove most of | |
59 | # build artifacts here before they are processed by scripts/Makefile.clean | |
60 | clean-files = $(shell find $(obj) \( -name '*.example.dts' -o \ | |
61 | -name '*.example.dt.yaml' \) -delete 2>/dev/null) |