diff --git a/tools/defconfig.py b/tools/defconfig.py new file mode 100644 index 0000000000..d1b1e4ea73 --- /dev/null +++ b/tools/defconfig.py @@ -0,0 +1,43 @@ +#!/usr/bin/env python + +# Copyright (c) 2019, Ulf Magnusson +# SPDX-License-Identifier: ISC + +""" +Reads a specified configuration file, then writes a new configuration file. +This can be used to initialize the configuration from e.g. an arch-specific +configuration file. This input configuration file would usually be a minimal +configuration file, as generated by e.g. savedefconfig. + +The default output filename is '.config'. A different filename can be passed in +the KCONFIG_CONFIG environment variable. +""" +import argparse + +import kconfiglib + + +def main(): + parser = argparse.ArgumentParser( + formatter_class=argparse.RawDescriptionHelpFormatter, + description=__doc__) + + parser.add_argument( + "--kconfig", + default="Kconfig", + help="Base Kconfig file (default: Kconfig)") + + parser.add_argument( + "config", + metavar="CONFIGURATION", + help="Input configuration file") + + args = parser.parse_args() + + kconf = kconfiglib.Kconfig(args.kconfig) + print(kconf.load_config(args.config)) + print(kconf.write_config()) + + +if __name__ == "__main__": + main() diff --git a/tools/menuconfig.py b/tools/menuconfig.py index d0b064325e..f533360d7b 100644 --- a/tools/menuconfig.py +++ b/tools/menuconfig.py @@ -282,8 +282,37 @@ def guiconfig(RTT_ROOT): fn = '.config' + if os.path.isfile(fn): + mtime = os.path.getmtime(fn) + else: + mtime = -1 + sys.argv = ['guiconfig', 'Kconfig']; pyguiconfig._main() + if os.path.isfile(fn): + mtime2 = os.path.getmtime(fn) + else: + mtime2 = -1 + + # make rtconfig.h + if mtime != mtime2: + mk_rtconfig(fn) + + +# guiconfig for windows and linux +def guiconfig_silent(RTT_ROOT): + import defconfig + + touch_env() + env_dir = get_env_dir() + + os.environ['PKGS_ROOT'] = os.path.join(env_dir, 'packages') + + fn = '.config' + + sys.argv = ['defconfig', '--kconfig', 'Kconfig', '.config'] + defconfig.main() + # silent mode, force to make rtconfig.h mk_rtconfig(fn)