[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v5 00/18] qapi: add #if pre-processor conditions to
From: |
Markus Armbruster |
Subject: |
[Qemu-devel] [PATCH v5 00/18] qapi: add #if pre-processor conditions to generated code (part 3) |
Date: |
Thu, 14 Feb 2019 16:22:33 +0100 |
Marc-André posted a v1 that relies on a QAPI schema language extension
'top-unit' to permit splitting the generated code. Here is his cover
letter:
The thrid and last part (of "[PATCH v2 00/54] qapi: add #if
pre-processor conditions to generated code") is about adding schema
conditions based on the target.
For now, the qapi code is compiled in common objects (common to all
targets). This makes it impossible to add #if TARGET_ARM for example.
The patch "RFC: qapi: learn to split the schema by 'top-unit'"
proposes to split the schema by "top-unit", so that generated code can
be built either in common objects or per-target. That patch is a bit
rough, I would like to get some feedback about the approach before
trying to improve it. The following patches demonstrate usage of
target-based #if conditions, and getting rid of the
qmp_unregister_command() hack.
We already have a way to split generated code: QAPI modules. I took
the liberty to rework Marc-André's series to use a target module
instead. Less code, no change to the QAPI language.
v5:
* PATCH 08,09: Computation of common-obj-y fixed [Marc-André]
v4:
* PATCH 03,04,16,17: Commit message improvements
* PATCH 07: New
* PATCH 08: Rebased onto PATCH 07, R-by dropped
v3:
* PATCH v2 01+02 have been merged
* PATCH 01-04: New
* PATCH 05: Rebase of PATCH v2 03
* PATCH 06-17: Trivially rebased, R-by and such retained
Marc-André Lureau (9):
build-sys: move qmp-introspect per target
qapi: make rtc-reset-reinjection and SEV depend on TARGET_I386
qapi: make s390 commands depend on TARGET_S390X
target.json: add a note about query-cpu* not being s390x-specific
qapi: make query-gic-capabilities depend on TARGET_ARM
qapi: make query-cpu-model-expansion depend on s390 or x86
qapi: make query-cpu-definitions depend on specific targets
qapi: remove qmp_unregister_command()
qapi: move RTC_CHANGE to the target schema
Markus Armbruster (9):
qapi: Belatedly document modular code generation
qapi: Fix up documentation for recent commit a95291007b2
qapi: Clean up modular built-in code generation a bit
qapi: Prepare for system modules other than 'builtin'
qapi: Generate QAPIEvent stuff into separate files
build: Deal with all of QAPI's .o in qapi/Makefile.objs
qapi: New module target.json
Revert "qapi-events: add 'if' condition to implicit event enum"
qmp: Deprecate query-events in favor of query-qmp-schema
.gitignore | 1 +
Makefile | 2 +-
Makefile.objs | 17 +-
Makefile.target | 1 +
docs/devel/qapi-code-gen.txt | 82 +++-
hw/ppc/spapr_rtc.c | 2 +-
hw/s390x/s390-skeys.c | 2 +-
hw/timer/mc146818rtc.c | 4 +-
include/qapi/qmp/dispatch.h | 1 -
include/sysemu/arch_init.h | 11 -
monitor.c | 88 +---
qapi/Makefile.objs | 25 ++
qapi/misc.json | 485 +--------------------
qapi/qapi-schema.json | 1 +
qapi/qmp-registry.c | 8 -
qapi/target.json | 514 +++++++++++++++++++++++
qemu-deprecated.texi | 5 +
qmp.c | 26 --
scripts/qapi/commands.py | 2 +-
scripts/qapi/common.py | 55 ++-
scripts/qapi/events.py | 38 +-
scripts/qapi/types.py | 4 +-
scripts/qapi/visit.py | 4 +-
stubs/Makefile.objs | 4 -
stubs/arch-query-cpu-def.c | 11 -
stubs/arch-query-cpu-model-baseline.c | 13 -
stubs/arch-query-cpu-model-comparison.c | 13 -
stubs/arch-query-cpu-model-expansion.c | 13 -
stubs/monitor.c | 2 +-
target/arm/helper.c | 3 +-
target/arm/monitor.c | 2 +-
target/i386/cpu.c | 7 +-
target/i386/sev_i386.h | 2 +-
target/ppc/translate_init.inc.c | 3 +-
target/s390x/cpu_models.c | 9 +-
tests/qapi-schema/comments.out | 1 +
tests/qapi-schema/doc-bad-section.out | 1 +
tests/qapi-schema/doc-good.out | 1 +
tests/qapi-schema/empty.out | 1 +
tests/qapi-schema/event-case.out | 1 +
tests/qapi-schema/ident-with-escape.out | 1 +
tests/qapi-schema/include-relpath.out | 1 +
tests/qapi-schema/include-repetition.out | 1 +
tests/qapi-schema/include-simple.out | 1 +
tests/qapi-schema/indented-expr.out | 1 +
tests/qapi-schema/qapi-schema-test.out | 1 +
tests/test-qmp-event.c | 1 +
tests/test-qobject-input-visitor.c | 1 -
ui/vnc.c | 3 +-
49 files changed, 735 insertions(+), 741 deletions(-)
create mode 100644 qapi/target.json
delete mode 100644 stubs/arch-query-cpu-def.c
delete mode 100644 stubs/arch-query-cpu-model-baseline.c
delete mode 100644 stubs/arch-query-cpu-model-comparison.c
delete mode 100644 stubs/arch-query-cpu-model-expansion.c
--
2.17.2
- [Qemu-devel] [PATCH v5 00/18] qapi: add #if pre-processor conditions to generated code (part 3),
Markus Armbruster <=
- [Qemu-devel] [PATCH v5 06/18] build-sys: move qmp-introspect per target, Markus Armbruster, 2019/02/14
- [Qemu-devel] [PATCH v5 09/18] qapi: make rtc-reset-reinjection and SEV depend on TARGET_I386, Markus Armbruster, 2019/02/14
- [Qemu-devel] [PATCH v5 11/18] target.json: add a note about query-cpu* not being s390x-specific, Markus Armbruster, 2019/02/14
- [Qemu-devel] [PATCH v5 08/18] qapi: New module target.json, Markus Armbruster, 2019/02/14
- [Qemu-devel] [PATCH v5 03/18] qapi: Clean up modular built-in code generation a bit, Markus Armbruster, 2019/02/14
- [Qemu-devel] [PATCH v5 16/18] Revert "qapi-events: add 'if' condition to implicit event enum", Markus Armbruster, 2019/02/14
- [Qemu-devel] [PATCH v5 04/18] qapi: Prepare for system modules other than 'builtin', Markus Armbruster, 2019/02/14
- [Qemu-devel] [PATCH v5 15/18] qapi: remove qmp_unregister_command(), Markus Armbruster, 2019/02/14
- [Qemu-devel] [PATCH v5 07/18] build: Deal with all of QAPI's .o in qapi/Makefile.objs, Markus Armbruster, 2019/02/14
- [Qemu-devel] [PATCH v5 01/18] qapi: Belatedly document modular code generation, Markus Armbruster, 2019/02/14