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:
Anas Nashif 2017-05-20 19:44:46 -04:00 committed by Anas Nashif
commit b60ff2f840

View file

@ -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()