[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[RFC PATCH-for-9.1] qapi: Do not generate commands/events/introspect cod
|
From: |
Philippe Mathieu-Daudé |
|
Subject: |
[RFC PATCH-for-9.1] qapi: Do not generate commands/events/introspect code for user emulation |
|
Date: |
Thu, 4 Apr 2024 21:55:43 +0200 |
User emulation requires the QAPI types. Due to the command
line processing, some visitor code is also used. The rest
is irrelevant (no QMP socket).
Add an option to the qapi-gen script to allow generating
the minimum when only user emulation is being built.
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
---
RFC: Quick PoC for Markus. It is useful for user-only builds.
---
qapi/meson.build | 6 +++++-
scripts/qapi/main.py | 16 +++++++++++-----
2 files changed, 16 insertions(+), 6 deletions(-)
diff --git a/qapi/meson.build b/qapi/meson.build
index 375d564277..5e02621145 100644
--- a/qapi/meson.build
+++ b/qapi/meson.build
@@ -115,10 +115,14 @@ foreach module : qapi_all_modules
endif
endforeach
+qapi_gen_cmd = [ qapi_gen, '-o', 'qapi', '-b', '@INPUT0@' ]
+if not (have_system or have_tools)
+ qapi_gen_cmd += [ '--types-only' ]
+endif
qapi_files = custom_target('shared QAPI source files',
output: qapi_util_outputs + qapi_specific_outputs + qapi_nonmodule_outputs,
input: [ files('qapi-schema.json') ],
- command: [ qapi_gen, '-o', 'qapi', '-b', '@INPUT0@' ],
+ command: qapi_gen_cmd,
depend_files: [ qapi_inputs, qapi_gen_depends ])
# Now go through all the outputs and add them to the right sourceset.
diff --git a/scripts/qapi/main.py b/scripts/qapi/main.py
index 316736b6a2..925af5841b 100644
--- a/scripts/qapi/main.py
+++ b/scripts/qapi/main.py
@@ -33,7 +33,8 @@ def generate(schema_file: str,
prefix: str,
unmask: bool = False,
builtins: bool = False,
- gen_tracing: bool = False) -> None:
+ gen_tracing: bool = False,
+ gen_types_only: bool = False) -> None:
"""
Generate C code for the given schema into the target directory.
@@ -50,9 +51,10 @@ def generate(schema_file: str,
schema = QAPISchema(schema_file)
gen_types(schema, output_dir, prefix, builtins)
gen_visit(schema, output_dir, prefix, builtins)
- gen_commands(schema, output_dir, prefix, gen_tracing)
- gen_events(schema, output_dir, prefix)
- gen_introspect(schema, output_dir, prefix, unmask)
+ if not gen_types_only:
+ gen_commands(schema, output_dir, prefix, gen_tracing)
+ gen_events(schema, output_dir, prefix)
+ gen_introspect(schema, output_dir, prefix, unmask)
def main() -> int:
@@ -75,6 +77,9 @@ def main() -> int:
parser.add_argument('-u', '--unmask-non-abi-names', action='store_true',
dest='unmask',
help="expose non-ABI names in introspection")
+ parser.add_argument('-t', '--types-only', action='store_true',
+ dest='gen_types_only',
+ help="Only generate QAPI types")
# Option --suppress-tracing exists so we can avoid solving build system
# problems. TODO Drop it when we no longer need it.
@@ -96,7 +101,8 @@ def main() -> int:
prefix=args.prefix,
unmask=args.unmask,
builtins=args.builtins,
- gen_tracing=not args.suppress_tracing)
+ gen_tracing=not args.suppress_tracing,
+ gen_types_only=args.gen_types_only)
except QAPIError as err:
print(err, file=sys.stderr)
return 1
--
2.41.0
- [RFC PATCH-for-9.1] qapi: Do not generate commands/events/introspect code for user emulation,
Philippe Mathieu-Daudé <=