mirror of https://gitee.com/openkylin/qemu.git
qapi: Turn generators into modules
The next commit will introduce a common driver program for all generators. The generators need to be modules for that. qapi2texi.py already is. Make the other generators follow suit. The changes are actually trivial. Obvious in the diffs once you view them with whitespace changes ignored. Signed-off-by: Markus Armbruster <armbru@redhat.com> Reviewed-by: Eric Blake <eblake@redhat.com> Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com> Message-Id: <20180211093607.27351-8-armbru@redhat.com> Reviewed-by: Michael Roth <mdroth@linux.vnet.ibm.com> [eblake: minor tweak to keep 'blurb' one line] Signed-off-by: Eric Blake <eblake@redhat.com>
This commit is contained in:
parent
93b564c444
commit
26df4e7fab
|
@ -255,14 +255,15 @@ def visit_command(self, name, info, arg_type, ret_type,
|
|||
self._regy += gen_register_command(name, success_response)
|
||||
|
||||
|
||||
(input_file, output_dir, do_c, do_h, prefix, opts) = parse_command_line()
|
||||
def main(argv):
|
||||
(input_file, output_dir, do_c, do_h, prefix, opts) = parse_command_line()
|
||||
|
||||
blurb = ' * Schema-defined QAPI/QMP commands'
|
||||
blurb = ' * Schema-defined QAPI/QMP commands'
|
||||
|
||||
genc = QAPIGenC(blurb, __doc__)
|
||||
genh = QAPIGenH(blurb, __doc__)
|
||||
genc = QAPIGenC(blurb, __doc__)
|
||||
genh = QAPIGenH(blurb, __doc__)
|
||||
|
||||
genc.add(mcgen('''
|
||||
genc.add(mcgen('''
|
||||
#include "qemu/osdep.h"
|
||||
#include "qemu-common.h"
|
||||
#include "qemu/module.h"
|
||||
|
@ -277,23 +278,27 @@ def visit_command(self, name, info, arg_type, ret_type,
|
|||
#include "%(prefix)sqmp-commands.h"
|
||||
|
||||
''',
|
||||
prefix=prefix))
|
||||
prefix=prefix))
|
||||
|
||||
genh.add(mcgen('''
|
||||
genh.add(mcgen('''
|
||||
#include "%(prefix)sqapi-types.h"
|
||||
#include "qapi/qmp/dispatch.h"
|
||||
|
||||
void %(c_prefix)sqmp_init_marshal(QmpCommandList *cmds);
|
||||
''',
|
||||
prefix=prefix, c_prefix=c_name(prefix, protect=False)))
|
||||
prefix=prefix, c_prefix=c_name(prefix, protect=False)))
|
||||
|
||||
schema = QAPISchema(input_file)
|
||||
vis = QAPISchemaGenCommandVisitor(prefix)
|
||||
schema.visit(vis)
|
||||
genc.add(vis.defn)
|
||||
genh.add(vis.decl)
|
||||
schema = QAPISchema(input_file)
|
||||
vis = QAPISchemaGenCommandVisitor(prefix)
|
||||
schema.visit(vis)
|
||||
genc.add(vis.defn)
|
||||
genh.add(vis.decl)
|
||||
|
||||
if do_c:
|
||||
genc.write(output_dir, prefix + 'qmp-marshal.c')
|
||||
if do_h:
|
||||
genh.write(output_dir, prefix + 'qmp-commands.h')
|
||||
if do_c:
|
||||
genc.write(output_dir, prefix + 'qmp-marshal.c')
|
||||
if do_h:
|
||||
genh.write(output_dir, prefix + 'qmp-commands.h')
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main(sys.argv)
|
||||
|
|
|
@ -171,14 +171,15 @@ def visit_event(self, name, info, arg_type, boxed):
|
|||
self._event_names.append(name)
|
||||
|
||||
|
||||
(input_file, output_dir, do_c, do_h, prefix, dummy) = parse_command_line()
|
||||
def main(argv):
|
||||
(input_file, output_dir, do_c, do_h, prefix, dummy) = parse_command_line()
|
||||
|
||||
blurb = ' * Schema-defined QAPI/QMP events'
|
||||
blurb = ' * Schema-defined QAPI/QMP events'
|
||||
|
||||
genc = QAPIGenC(blurb, __doc__)
|
||||
genh = QAPIGenH(blurb, __doc__)
|
||||
genc = QAPIGenC(blurb, __doc__)
|
||||
genh = QAPIGenH(blurb, __doc__)
|
||||
|
||||
genc.add(mcgen('''
|
||||
genc.add(mcgen('''
|
||||
#include "qemu/osdep.h"
|
||||
#include "qemu-common.h"
|
||||
#include "%(prefix)sqapi-event.h"
|
||||
|
@ -189,22 +190,26 @@ def visit_event(self, name, info, arg_type, boxed):
|
|||
#include "qapi/qmp-event.h"
|
||||
|
||||
''',
|
||||
prefix=prefix))
|
||||
prefix=prefix))
|
||||
|
||||
genh.add(mcgen('''
|
||||
genh.add(mcgen('''
|
||||
#include "qapi/util.h"
|
||||
#include "%(prefix)sqapi-types.h"
|
||||
|
||||
''',
|
||||
prefix=prefix))
|
||||
prefix=prefix))
|
||||
|
||||
schema = QAPISchema(input_file)
|
||||
vis = QAPISchemaGenEventVisitor(prefix)
|
||||
schema.visit(vis)
|
||||
genc.add(vis.defn)
|
||||
genh.add(vis.decl)
|
||||
schema = QAPISchema(input_file)
|
||||
vis = QAPISchemaGenEventVisitor(prefix)
|
||||
schema.visit(vis)
|
||||
genc.add(vis.defn)
|
||||
genh.add(vis.decl)
|
||||
|
||||
if do_c:
|
||||
genc.write(output_dir, prefix + 'qapi-event.c')
|
||||
if do_h:
|
||||
genh.write(output_dir, prefix + 'qapi-event.h')
|
||||
if do_c:
|
||||
genc.write(output_dir, prefix + 'qapi-event.c')
|
||||
if do_h:
|
||||
genh.write(output_dir, prefix + 'qapi-event.h')
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main(sys.argv)
|
||||
|
|
|
@ -167,36 +167,42 @@ def visit_event(self, name, info, arg_type, boxed):
|
|||
arg_type = arg_type or self._schema.the_empty_object_type
|
||||
self._gen_json(name, 'event', {'arg-type': self._use_type(arg_type)})
|
||||
|
||||
# Debugging aid: unmask QAPI schema's type names
|
||||
# We normally mask them, because they're not QMP wire ABI
|
||||
opt_unmask = False
|
||||
|
||||
(input_file, output_dir, do_c, do_h, prefix, opts) = \
|
||||
parse_command_line('u', ['unmask-non-abi-names'])
|
||||
def main(argv):
|
||||
# Debugging aid: unmask QAPI schema's type names
|
||||
# We normally mask them, because they're not QMP wire ABI
|
||||
opt_unmask = False
|
||||
|
||||
for o, a in opts:
|
||||
if o in ('-u', '--unmask-non-abi-names'):
|
||||
opt_unmask = True
|
||||
(input_file, output_dir, do_c, do_h, prefix, opts) = \
|
||||
parse_command_line('u', ['unmask-non-abi-names'])
|
||||
|
||||
blurb = ' * QAPI/QMP schema introspection'
|
||||
for o, a in opts:
|
||||
if o in ('-u', '--unmask-non-abi-names'):
|
||||
opt_unmask = True
|
||||
|
||||
genc = QAPIGenC(blurb, __doc__)
|
||||
genh = QAPIGenH(blurb, __doc__)
|
||||
blurb = ' * QAPI/QMP schema introspection'
|
||||
|
||||
genc.add(mcgen('''
|
||||
genc = QAPIGenC(blurb, __doc__)
|
||||
genh = QAPIGenH(blurb, __doc__)
|
||||
|
||||
genc.add(mcgen('''
|
||||
#include "qemu/osdep.h"
|
||||
#include "%(prefix)sqmp-introspect.h"
|
||||
|
||||
''',
|
||||
prefix=prefix))
|
||||
prefix=prefix))
|
||||
|
||||
schema = QAPISchema(input_file)
|
||||
vis = QAPISchemaGenIntrospectVisitor(prefix, opt_unmask)
|
||||
schema.visit(vis)
|
||||
genc.add(vis.defn)
|
||||
genh.add(vis.decl)
|
||||
schema = QAPISchema(input_file)
|
||||
vis = QAPISchemaGenIntrospectVisitor(prefix, opt_unmask)
|
||||
schema.visit(vis)
|
||||
genc.add(vis.defn)
|
||||
genh.add(vis.decl)
|
||||
|
||||
if do_c:
|
||||
genc.write(output_dir, prefix + 'qmp-introspect.c')
|
||||
if do_h:
|
||||
genh.write(output_dir, prefix + 'qmp-introspect.h')
|
||||
if do_c:
|
||||
genc.write(output_dir, prefix + 'qmp-introspect.c')
|
||||
if do_h:
|
||||
genh.write(output_dir, prefix + 'qmp-introspect.h')
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main(sys.argv)
|
||||
|
|
|
@ -240,43 +240,49 @@ def visit_alternate_type(self, name, info, variants):
|
|||
self.decl += gen_object(name, None, [variants.tag_member], variants)
|
||||
self._gen_type_cleanup(name)
|
||||
|
||||
# If you link code generated from multiple schemata, you want only one
|
||||
# instance of the code for built-in types. Generate it only when
|
||||
# opt_builtins, enabled by command line option -b. See also
|
||||
# QAPISchemaGenTypeVisitor.visit_end().
|
||||
opt_builtins = False
|
||||
|
||||
(input_file, output_dir, do_c, do_h, prefix, opts) = \
|
||||
parse_command_line('b', ['builtins'])
|
||||
def main(argv):
|
||||
# If you link code generated from multiple schemata, you want only one
|
||||
# instance of the code for built-in types. Generate it only when
|
||||
# opt_builtins, enabled by command line option -b. See also
|
||||
# QAPISchemaGenTypeVisitor.visit_end().
|
||||
opt_builtins = False
|
||||
|
||||
for o, a in opts:
|
||||
if o in ('-b', '--builtins'):
|
||||
opt_builtins = True
|
||||
(input_file, output_dir, do_c, do_h, prefix, opts) = \
|
||||
parse_command_line('b', ['builtins'])
|
||||
|
||||
blurb = ' * Schema-defined QAPI types'
|
||||
for o, a in opts:
|
||||
if o in ('-b', '--builtins'):
|
||||
opt_builtins = True
|
||||
|
||||
genc = QAPIGenC(blurb, __doc__)
|
||||
genh = QAPIGenH(blurb, __doc__)
|
||||
blurb = ' * Schema-defined QAPI types'
|
||||
|
||||
genc.add(mcgen('''
|
||||
genc = QAPIGenC(blurb, __doc__)
|
||||
genh = QAPIGenH(blurb, __doc__)
|
||||
|
||||
genc.add(mcgen('''
|
||||
#include "qemu/osdep.h"
|
||||
#include "qapi/dealloc-visitor.h"
|
||||
#include "%(prefix)sqapi-types.h"
|
||||
#include "%(prefix)sqapi-visit.h"
|
||||
''',
|
||||
prefix=prefix))
|
||||
prefix=prefix))
|
||||
|
||||
genh.add(mcgen('''
|
||||
genh.add(mcgen('''
|
||||
#include "qapi/util.h"
|
||||
'''))
|
||||
|
||||
schema = QAPISchema(input_file)
|
||||
vis = QAPISchemaGenTypeVisitor(opt_builtins)
|
||||
schema.visit(vis)
|
||||
genc.add(vis.defn)
|
||||
genh.add(vis.decl)
|
||||
schema = QAPISchema(input_file)
|
||||
vis = QAPISchemaGenTypeVisitor(opt_builtins)
|
||||
schema.visit(vis)
|
||||
genc.add(vis.defn)
|
||||
genh.add(vis.decl)
|
||||
|
||||
if do_c:
|
||||
genc.write(output_dir, prefix + 'qapi-types.c')
|
||||
if do_h:
|
||||
genh.write(output_dir, prefix + 'qapi-types.h')
|
||||
if do_c:
|
||||
genc.write(output_dir, prefix + 'qapi-types.c')
|
||||
if do_h:
|
||||
genh.write(output_dir, prefix + 'qapi-types.h')
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main(sys.argv)
|
||||
|
|
|
@ -323,47 +323,53 @@ def visit_alternate_type(self, name, info, variants):
|
|||
self.decl += gen_visit_decl(name)
|
||||
self.defn += gen_visit_alternate(name, variants)
|
||||
|
||||
# If you link code generated from multiple schemata, you want only one
|
||||
# instance of the code for built-in types. Generate it only when
|
||||
# opt_builtins, enabled by command line option -b. See also
|
||||
# QAPISchemaGenVisitVisitor.visit_end().
|
||||
opt_builtins = False
|
||||
|
||||
(input_file, output_dir, do_c, do_h, prefix, opts) = \
|
||||
parse_command_line('b', ['builtins'])
|
||||
def main(argv):
|
||||
# If you link code generated from multiple schemata, you want only one
|
||||
# instance of the code for built-in types. Generate it only when
|
||||
# opt_builtins, enabled by command line option -b. See also
|
||||
# QAPISchemaGenVisitVisitor.visit_end().
|
||||
opt_builtins = False
|
||||
|
||||
for o, a in opts:
|
||||
if o in ('-b', '--builtins'):
|
||||
opt_builtins = True
|
||||
(input_file, output_dir, do_c, do_h, prefix, opts) = \
|
||||
parse_command_line('b', ['builtins'])
|
||||
|
||||
blurb = ' * Schema-defined QAPI visitors'
|
||||
for o, a in opts:
|
||||
if o in ('-b', '--builtins'):
|
||||
opt_builtins = True
|
||||
|
||||
genc = QAPIGenC(blurb, __doc__)
|
||||
genh = QAPIGenH(blurb, __doc__)
|
||||
blurb = ' * Schema-defined QAPI visitors'
|
||||
|
||||
genc.add(mcgen('''
|
||||
genc = QAPIGenC(blurb, __doc__)
|
||||
genh = QAPIGenH(blurb, __doc__)
|
||||
|
||||
genc.add(mcgen('''
|
||||
#include "qemu/osdep.h"
|
||||
#include "qemu-common.h"
|
||||
#include "qapi/error.h"
|
||||
#include "qapi/qmp/qerror.h"
|
||||
#include "%(prefix)sqapi-visit.h"
|
||||
''',
|
||||
prefix=prefix))
|
||||
prefix=prefix))
|
||||
|
||||
genh.add(mcgen('''
|
||||
genh.add(mcgen('''
|
||||
#include "qapi/visitor.h"
|
||||
#include "%(prefix)sqapi-types.h"
|
||||
|
||||
''',
|
||||
prefix=prefix))
|
||||
prefix=prefix))
|
||||
|
||||
schema = QAPISchema(input_file)
|
||||
vis = QAPISchemaGenVisitVisitor(opt_builtins)
|
||||
schema.visit(vis)
|
||||
genc.add(vis.defn)
|
||||
genh.add(vis.decl)
|
||||
schema = QAPISchema(input_file)
|
||||
vis = QAPISchemaGenVisitVisitor(opt_builtins)
|
||||
schema.visit(vis)
|
||||
genc.add(vis.defn)
|
||||
genh.add(vis.decl)
|
||||
|
||||
if do_c:
|
||||
genc.write(output_dir, prefix + 'qapi-visit.c')
|
||||
if do_h:
|
||||
genh.write(output_dir, prefix + 'qapi-visit.h')
|
||||
if do_c:
|
||||
genc.write(output_dir, prefix + 'qapi-visit.c')
|
||||
if do_h:
|
||||
genh.write(output_dir, prefix + 'qapi-visit.h')
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main(sys.argv)
|
||||
|
|
Loading…
Reference in New Issue