mirror of
https://github.com/qemu/qemu.git
synced 2024-12-04 01:03:38 +08:00
a81df1b68b
This shows how to do some "computations" in meson.build using its array and dictionary data structures, and also a basic usage of the sourceset module for conditional compilation. Notice the new "if have_system" part of util/meson.build, which fixes a bug in the old build system was buggy: util/dbus.c was built even for non-softmmu builds, but the dependency on -lgio was lost when the linking was done through libqemuutil.a. Because all of its users required gio otherwise, the bug was hidden. Meson instead propagates libqemuutil's dependencies down to its users, and shows the problem. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
59 lines
2.0 KiB
Python
59 lines
2.0 KiB
Python
#!/usr/bin/env python3
|
|
# QAPI generator
|
|
#
|
|
# This work is licensed under the terms of the GNU GPL, version 2 or later.
|
|
# See the COPYING file in the top-level directory.
|
|
|
|
|
|
import argparse
|
|
import re
|
|
import sys
|
|
|
|
from qapi.commands import gen_commands
|
|
from qapi.doc import gen_doc
|
|
from qapi.events import gen_events
|
|
from qapi.introspect import gen_introspect
|
|
from qapi.schema import QAPIError, QAPISchema
|
|
from qapi.types import gen_types
|
|
from qapi.visit import gen_visit
|
|
|
|
|
|
def main(argv):
|
|
parser = argparse.ArgumentParser(
|
|
description='Generate code from a QAPI schema')
|
|
parser.add_argument('-b', '--builtins', action='store_true',
|
|
help="generate code for built-in types")
|
|
parser.add_argument('-o', '--output-dir', action='store', default='',
|
|
help="write output to directory OUTPUT_DIR")
|
|
parser.add_argument('-p', '--prefix', action='store', default='',
|
|
help="prefix for symbols")
|
|
parser.add_argument('-u', '--unmask-non-abi-names', action='store_true',
|
|
dest='unmask',
|
|
help="expose non-ABI names in introspection")
|
|
parser.add_argument('schema', action='store')
|
|
args = parser.parse_args()
|
|
|
|
match = re.match(r'([A-Za-z_.-][A-Za-z0-9_.-]*)?', args.prefix)
|
|
if match.end() != len(args.prefix):
|
|
print("%s: 'funny character '%s' in argument of --prefix"
|
|
% (sys.argv[0], args.prefix[match.end()]),
|
|
file=sys.stderr)
|
|
sys.exit(1)
|
|
|
|
try:
|
|
schema = QAPISchema(args.schema)
|
|
except QAPIError as err:
|
|
print(err, file=sys.stderr)
|
|
exit(1)
|
|
|
|
gen_types(schema, args.output_dir, args.prefix, args.builtins)
|
|
gen_visit(schema, args.output_dir, args.prefix, args.builtins)
|
|
gen_commands(schema, args.output_dir, args.prefix)
|
|
gen_events(schema, args.output_dir, args.prefix)
|
|
gen_introspect(schema, args.output_dir, args.prefix, args.unmask)
|
|
gen_doc(schema, args.output_dir, args.prefix)
|
|
|
|
|
|
if __name__ == '__main__':
|
|
main(sys.argv)
|