Skip to content

Commit 8cc329b

Browse files
nashifAnas Nashif
authored andcommitted
dts: generate definitions for build system
This will generate an additional file that can be sourced by the build system to expose definitions generated by device tree and used for flashing and debugging targets. Change-Id: I184e247f0a8dbd1a4a42dd4b02ea01f2caa70533 Jira: ZEP-2119 Signed-off-by: Anas Nashif <[email protected]>
1 parent 057fbc8 commit 8cc329b

File tree

1 file changed

+33
-6
lines changed

1 file changed

+33
-6
lines changed

scripts/extract_dts_includes.py

Lines changed: 33 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -507,7 +507,26 @@ def print_key_value(k, v, tabstop):
507507

508508
return
509509

510-
def generate_include_file(defs, fixup):
510+
def generate_keyvalue_file(defs, args):
511+
compatible = reduced['/']['props']['compatible'][0]
512+
513+
node_keys = sorted(defs.keys())
514+
for node in node_keys:
515+
sys.stdout.write('# ' + node.split('/')[-1] )
516+
sys.stdout.write("\n")
517+
518+
prop_keys = sorted(defs[node].keys())
519+
for prop in prop_keys:
520+
if prop == 'aliases':
521+
for entry in sorted(defs[node][prop]):
522+
a = defs[node][prop].get(entry)
523+
sys.stdout.write("%s=%s\n" %(entry, defs[node].get(a)))
524+
else:
525+
sys.stdout.write("%s=%s\n" %(prop,defs[node].get(prop)))
526+
527+
sys.stdout.write("\n")
528+
529+
def generate_include_file(defs, args):
511530
compatible = reduced['/']['props']['compatible'][0]
512531

513532
sys.stdout.write("/**************************************************\n")
@@ -538,31 +557,36 @@ def generate_include_file(defs, fixup):
538557
for prop in prop_keys:
539558
if prop == 'aliases':
540559
for entry in sorted(defs[node][prop]):
541-
print_key_value(entry, defs[node][prop].get(entry), maxtabstop)
560+
a = defs[node][prop].get(entry)
561+
print_key_value(entry, a, maxtabstop)
542562
else:
543563
print_key_value(prop, defs[node].get(prop), maxtabstop)
564+
544565
sys.stdout.write("\n")
545566

546-
if fixup and os.path.exists(fixup):
567+
if args.fixup and os.path.exists(args.fixup):
547568
sys.stdout.write("\n")
548569
sys.stdout.write("/* Following definitions fixup the generated include */\n")
549570
try:
550-
with open(fixup, "r") as fd:
571+
with open(args.fixup, "r") as fd:
551572
for line in fd.readlines():
552573
sys.stdout.write(line)
553574
sys.stdout.write("\n")
554575
except:
555-
raise Exception("Input file " + os.path.abspath(fixup) + " does not exist.")
576+
raise Exception("Input file " + os.path.abspath(args.fixup) + " does not exist.")
556577

557578
sys.stdout.write("#endif\n")
558579

559580
def parse_arguments():
560581

561582
parser = argparse.ArgumentParser(description = __doc__,
562583
formatter_class = argparse.RawDescriptionHelpFormatter)
584+
563585
parser.add_argument("-d", "--dts", help="DTS file")
564586
parser.add_argument("-y", "--yaml", help="YAML file")
565587
parser.add_argument("-f", "--fixup", help="Fixup file")
588+
parser.add_argument("-k", "--keyvalue", action="store_true",
589+
help="Generate file to be included by the build system")
566590

567591
return parser.parse_args()
568592

@@ -654,7 +678,10 @@ def main():
654678
extract_reg_prop(chosen['zephyr,sram'], None, defs, "CONFIG_SRAM", 1024)
655679

656680
# generate include file
657-
generate_include_file(defs, args.fixup)
681+
if args.keyvalue:
682+
generate_keyvalue_file(defs, args)
683+
else:
684+
generate_include_file(defs, args)
658685

659686
if __name__ == '__main__':
660687
main()

0 commit comments

Comments
 (0)