mirror of
https://github.com/mii443/qemu.git
synced 2025-12-09 22:18:23 +00:00
kconfig: introduce kconfig files
The Kconfig files were generated mostly with this script:
for i in `grep -ho CONFIG_[A-Z0-9_]* default-configs/* | sort -u`; do
set fnord `git grep -lw $i -- 'hw/*/Makefile.objs' `
shift
if test $# = 1; then
cat >> $(dirname $1)/Kconfig << EOF
config ${i#CONFIG_}
bool
EOF
git add $(dirname $1)/Kconfig
else
echo $i $*
fi
done
sed -i '$d' hw/*/Kconfig
for i in hw/*; do
if test -d $i && ! test -f $i/Kconfig; then
touch $i/Kconfig
git add $i/Kconfig
fi
done
Whenever a symbol is referenced from multiple subdirectories, the
script prints the list of directories that reference the symbol.
These symbols have to be added manually to the Kconfig files.
Kconfig.host and hw/Kconfig were created manually.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Yang Zhong <yang.zhong@intel.com>
Message-Id: <20190123065618.3520-27-yang.zhong@intel.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
@@ -13,6 +13,7 @@
|
||||
from __future__ import print_function
|
||||
import os
|
||||
import sys
|
||||
import re
|
||||
|
||||
__all__ = [ 'KconfigDataError', 'KconfigParserError',
|
||||
'KconfigData', 'KconfigParser' ]
|
||||
@@ -350,6 +351,12 @@ class KconfigParser:
|
||||
self.get_token()
|
||||
self.parse_config()
|
||||
|
||||
def do_assignment(self, var, val):
|
||||
if not var.startswith("CONFIG_"):
|
||||
raise Error('assigned variable should start with CONFIG_')
|
||||
var = self.data.do_var(var[7:])
|
||||
self.data.do_assignment(var, val)
|
||||
|
||||
# file management -----
|
||||
|
||||
def error_path(self):
|
||||
@@ -645,6 +652,28 @@ class KconfigParser:
|
||||
return None
|
||||
|
||||
if __name__ == '__main__':
|
||||
fname = len(sys.argv) > 1 and sys.argv[1] or 'Kconfig.test'
|
||||
data = KconfigParser.parse(open(fname, 'r'))
|
||||
print data.compute_config()
|
||||
argv = sys.argv
|
||||
if len(argv) == 1:
|
||||
print ("%s: at least one argument is required" % argv[0], file=sys.stderr)
|
||||
sys.exit(1)
|
||||
|
||||
data = KconfigData()
|
||||
parser = KconfigParser(data)
|
||||
for arg in argv[3:]:
|
||||
m = re.match(r'^(CONFIG_[A-Z0-9_]+)=([yn]?)$', arg)
|
||||
if m is not None:
|
||||
name, value = m.groups()
|
||||
parser.do_assignment(name, value == 'y')
|
||||
else:
|
||||
fp = open(arg, 'r')
|
||||
parser.parse_file(fp)
|
||||
fp.close()
|
||||
|
||||
config = data.compute_config()
|
||||
for key in sorted(config.keys()):
|
||||
print ('CONFIG_%s=%s' % (key, ('y' if config[key] else 'n')))
|
||||
|
||||
deps = open(argv[2], 'w')
|
||||
for fname in data.previously_included:
|
||||
print ('%s: %s' % (argv[1], fname), file=deps)
|
||||
deps.close()
|
||||
|
||||
Reference in New Issue
Block a user