summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xgenconfig.py21
-rw-r--r--kconfiglib.py20
2 files changed, 30 insertions, 11 deletions
diff --git a/genconfig.py b/genconfig.py
index 96124c5..b202a5b 100755
--- a/genconfig.py
+++ b/genconfig.py
@@ -35,7 +35,6 @@ import sys
import kconfiglib
-DEFAULT_HEADER_PATH = "config.h"
DEFAULT_SYNC_DEPS_PATH = "deps/"
@@ -47,9 +46,11 @@ def main():
parser.add_argument(
"--header-path",
metavar="HEADER_FILE",
- default=DEFAULT_HEADER_PATH,
- help="Path for the generated header file (default: {})"
- .format(DEFAULT_HEADER_PATH))
+ help="""
+Path to write the generated header file to. If not specified, the path in the
+environment variable KCONFIG_AUTOHEADER is used if it is set, and 'config.h'
+otherwise.
+""")
parser.add_argument(
"--config-out",
@@ -107,7 +108,17 @@ only supported for backwards compatibility).
kconf = kconfiglib.Kconfig(args.kconfig_filename)
kconf.load_config()
- kconf.write_autoconf(args.header_path)
+ if args.header_path is None:
+ if "KCONFIG_AUTOHEADER" in os.environ:
+ kconf.write_autoconf()
+ else:
+ # Kconfiglib defaults to include/generated/autoconf.h to be
+ # compatible with the C tools. 'config.h' is used here instead for
+ # backwards compatibility. It's probably a saner default for tools
+ # as well.
+ kconf.write_autoconf("config.h")
+ else:
+ kconf.write_autoconf(args.header_path)
if args.config_out is not None:
kconf.write_config(args.config_out, save_old=False)
diff --git a/kconfiglib.py b/kconfiglib.py
index 079c363..7fe3f2e 100644
--- a/kconfiglib.py
+++ b/kconfiglib.py
@@ -1363,7 +1363,7 @@ class Kconfig(object):
elif self.warn_assign_override:
self._warn(msg, filename, linenr)
- def write_autoconf(self, filename, header=None):
+ def write_autoconf(self, filename=None, header=None):
r"""
Writes out symbol values as a C header file, matching the format used
by include/generated/autoconf.h in the kernel.
@@ -1377,8 +1377,12 @@ class Kconfig(object):
like the modification time and possibly triggering redundant work in
build tools.
- filename:
- Self-explanatory.
+ filename (default: None):
+ Path to write header to.
+
+ If None (the default), the path in the environment variable
+ KCONFIG_AUTOHEADER is used if set, and "include/generated/autoconf.h"
+ otherwise. This is compatible with the C tools.
header (default: None):
Text inserted verbatim at the beginning of the file. You would
@@ -1390,6 +1394,10 @@ class Kconfig(object):
will be used if it was set, and no header otherwise. See the
Kconfig.header_header attribute.
"""
+ if filename is None:
+ filename = os.getenv("KCONFIG_AUTOHEADER",
+ "include/generated/autoconf.h")
+
self._write_if_changed(filename, self._autoconf_contents(header))
def _autoconf_contents(self, header):
@@ -1458,9 +1466,9 @@ class Kconfig(object):
(OSError/IOError). KconfigError is never raised here.
filename (default: None):
- Filename to save configuration to (a string).
+ Path to write configuration to (a string).
- If None (the default), the filename in the environment variable
+ If None (the default), the path in the environment variable
KCONFIG_CONFIG is used if set, and ".config" otherwise. See
standard_config_filename().
@@ -1606,7 +1614,7 @@ class Kconfig(object):
(OSError/IOError). KconfigError is never raised here.
filename:
- Self-explanatory.
+ Path to write minimal configuration to.
header (default: None):
Text inserted verbatim at the beginning of the file. You would