scripts: gen_defines: allow multiple --vendor-prefixes
Allowing multiple such files will let higher layers take inputs from
multiple DTS_ROOT directories. This in turn will allow out of tree
bindings to manage their own sets of prefixes without patching
upstream Zephyr's file or doing other similar hacks.
Parse each file into a dict, and merge those dicts into a single
dictionary for the EDT constructor.
Signed-off-by: Martí Bolívar <marti.bolivar@nordicsemi.no>
diff --git a/scripts/dts/gen_defines.py b/scripts/dts/gen_defines.py
index b30fe80..bfbef52 100755
--- a/scripts/dts/gen_defines.py
+++ b/scripts/dts/gen_defines.py
@@ -57,10 +57,9 @@
setup_edtlib_logging()
- if args.vendor_prefixes:
- vendor_prefixes = edtlib.load_vendor_prefixes_txt(args.vendor_prefixes)
- else:
- vendor_prefixes = None
+ vendor_prefixes = {}
+ for prefixes_file in args.vendor_prefixes:
+ vendor_prefixes.update(edtlib.load_vendor_prefixes_txt(prefixes_file))
try:
edt = edtlib.EDT(args.dts, args.bindings_dirs,
@@ -214,8 +213,9 @@
help="path to write device struct extern header to")
parser.add_argument("--edt-pickle-out",
help="path to write pickled edtlib.EDT object to")
- parser.add_argument("--vendor-prefixes",
- help="vendor-prefixes.txt path; used for validation")
+ parser.add_argument("--vendor-prefixes", action='append', default=[],
+ help="vendor-prefixes.txt path; used for validation; "
+ "may be given multiple times")
parser.add_argument("--edtlib-Werror", action="store_true",
help="if set, edtlib-specific warnings become errors. "
"(this does not apply to warnings shared "