diff --git a/scripts/extract_dts_includes.py b/scripts/extract_dts_includes.py index 263cac0e01c..e07518aee81 100755 --- a/scripts/extract_dts_includes.py +++ b/scripts/extract_dts_includes.py @@ -507,7 +507,26 @@ def print_key_value(k, v, tabstop): return -def generate_include_file(defs, fixup): +def generate_keyvalue_file(defs, args): + compatible = reduced['/']['props']['compatible'][0] + + node_keys = sorted(defs.keys()) + for node in node_keys: + sys.stdout.write('# ' + node.split('/')[-1] ) + sys.stdout.write("\n") + + prop_keys = sorted(defs[node].keys()) + for prop in prop_keys: + if prop == 'aliases': + for entry in sorted(defs[node][prop]): + a = defs[node][prop].get(entry) + sys.stdout.write("%s=%s\n" %(entry, defs[node].get(a))) + else: + sys.stdout.write("%s=%s\n" %(prop,defs[node].get(prop))) + + sys.stdout.write("\n") + +def generate_include_file(defs, args): compatible = reduced['/']['props']['compatible'][0] sys.stdout.write("/**************************************************\n") @@ -538,21 +557,23 @@ def generate_include_file(defs, fixup): for prop in prop_keys: if prop == 'aliases': for entry in sorted(defs[node][prop]): - print_key_value(entry, defs[node][prop].get(entry), maxtabstop) + a = defs[node][prop].get(entry) + print_key_value(entry, a, maxtabstop) else: print_key_value(prop, defs[node].get(prop), maxtabstop) + sys.stdout.write("\n") - if fixup and os.path.exists(fixup): + if args.fixup and os.path.exists(args.fixup): sys.stdout.write("\n") sys.stdout.write("/* Following definitions fixup the generated include */\n") try: - with open(fixup, "r") as fd: + with open(args.fixup, "r") as fd: for line in fd.readlines(): sys.stdout.write(line) sys.stdout.write("\n") except: - raise Exception("Input file " + os.path.abspath(fixup) + " does not exist.") + raise Exception("Input file " + os.path.abspath(args.fixup) + " does not exist.") sys.stdout.write("#endif\n") @@ -560,9 +581,12 @@ def parse_arguments(): parser = argparse.ArgumentParser(description = __doc__, formatter_class = argparse.RawDescriptionHelpFormatter) + parser.add_argument("-d", "--dts", help="DTS file") parser.add_argument("-y", "--yaml", help="YAML file") parser.add_argument("-f", "--fixup", help="Fixup file") + parser.add_argument("-k", "--keyvalue", action="store_true", + help="Generate file to be included by the build system") return parser.parse_args() @@ -654,7 +678,10 @@ def main(): extract_reg_prop(chosen['zephyr,sram'], None, defs, "CONFIG_SRAM", 1024) # generate include file - generate_include_file(defs, args.fixup) + if args.keyvalue: + generate_keyvalue_file(defs, args) + else: + generate_include_file(defs, args) if __name__ == '__main__': main()