You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
110 lines
3.6 KiB
110 lines
3.6 KiB
# Prints a tree of all items in the configuration |
|
# vim: tabstop=4 shiftwidth=4 expandtab |
|
|
|
import kconfiglib |
|
import sys |
|
|
|
# Integers representing symbol types |
|
UNKNOWN, BOOL, TRISTATE, STRING, HEX, INT = range(6) |
|
|
|
# Strings to use for types |
|
TYPENAME = {UNKNOWN: "unknown", BOOL: "bool", TRISTATE: "tristate", |
|
STRING: "string", HEX: "hex", INT: "int"} |
|
|
|
done = [] |
|
itemIndex = {} |
|
|
|
def print_with_indent(s, indent): |
|
print((" " * indent) + s) |
|
|
|
def print_items(items, outdir, indent): |
|
for item in items: |
|
if item.is_symbol() or item.is_choice(): |
|
text = item.get_help() |
|
elif item.is_menu(): |
|
text = item.get_title() |
|
else: |
|
# Comment |
|
text = item.get_text() |
|
if item.is_symbol(): |
|
var = "CONFIG_%s" %item.get_name() |
|
if not var in done: |
|
done.append(var) |
|
|
|
# Save up the config items in itemIndex, a dictionary indexed |
|
# by the item name with the value as the "prompt" (short |
|
# description) from the Kconfig file. (We'll output them |
|
# later in alphabetic order |
|
|
|
if len(item.get_prompts()) > 0: |
|
p = item.get_prompts()[0] |
|
else: |
|
p = "" |
|
itemIndex[var] = " * - :option:`%s`\n - %s\n" % (var, p) |
|
|
|
# Create a details .rst document for each symbol discovered |
|
|
|
config = open("%s/%s.rst" % (outdir, var), "w") |
|
config.write(":orphan:\n\n") |
|
config.write(".. title:: %s\n\n" %item.get_name()) |
|
config.write(".. option:: CONFIG_%s\n" %item.get_name()) |
|
config.write(".. _CONFIG_%s:\n" %item.get_name()) |
|
if text: |
|
config.write("\n%s\n\n" %text) |
|
else: |
|
config.write("\nThe configuration item %s:\n\n" %var) |
|
config.write("%s\n" %item.rest()) |
|
|
|
config.close() |
|
elif item.is_menu(): |
|
print_items(item.get_items(), outdir, indent + 2) |
|
elif item.is_choice(): |
|
print_items(item.get_items(), outdir, indent + 2) |
|
elif item.is_comment(): |
|
pass |
|
|
|
|
|
f = open("%s/index.rst" % (sys.argv[2]), "w") |
|
f.write(""".. _configuration: |
|
|
|
Configuration Options Reference Guide |
|
##################################### |
|
|
|
Introduction |
|
************ |
|
|
|
Kconfig files describe the configuration symbols supported in the build |
|
system, the logical organization and structure that group the symbols in menus |
|
and sub-menus, and the relationships between the different configuration |
|
symbols that govern the valid configuration combinations. |
|
|
|
The Kconfig files are distributed across the build directory tree. The files |
|
are organized based on their common characteristics and on what new symbols |
|
they add to the configuration menus. |
|
|
|
The configuration options' information below is extracted directly from |
|
:program:`Kconfig` using the :file:`~/doc/scripts/genrest/genrest.py` script. |
|
Click on the option name in the table below for detailed information about |
|
each option. |
|
|
|
|
|
Supported Options |
|
***************** |
|
|
|
.. list-table:: Alphabetized Index of Configuration Options |
|
:header-rows: 1 |
|
|
|
* - Kconfig Symbol |
|
- Description |
|
""") |
|
conf = kconfiglib.Config(sys.argv[1]) |
|
print_items(conf.get_top_level_items(), sys.argv[2], 0) |
|
|
|
# print_items created separate .rst files for each configuration option as |
|
# well as filling itemIndex with all these options (and their descriptions). |
|
# Now we can print out the accumulated config symbols in alphabetic order. |
|
|
|
for item in sorted(itemIndex): |
|
f.write(itemIndex[item]) |
|
|
|
f.close()
|
|
|