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 <anas.nashif@intel.com>
This commit is contained in:
parent
6b081415d3
commit
b60ff2f840
1 changed files with 33 additions and 6 deletions
|
@ -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()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue