unicorn/qemu
Markus Armbruster fe90858609
qapi: Generate separate .h, .c for each module
Our qapi-schema.json is composed of modules connected by include
directives, but the generated code is monolithic all the same: one
qapi-types.h with all the types, one qapi-visit.h with all the
visitors, and so forth. These monolithic headers get included all
over the place. In my "build everything" tree, adding a QAPI type
recompiles about 4800 out of 5100 objects.

We wouldn't write such monolithic headers by hand. It stands to
reason that we shouldn't generate them, either.

Split up generated qapi-types.h to mirror the schema's modular
structure: one header per module. Name the main module's header
qapi-types.h, and sub-module D/B.json's header D/qapi-types-B.h.

Mirror the schema's includes in the headers, so that qapi-types.h gets
you everything exactly as before. If you need less, you can include
one or more of the sub-module headers. To be exploited shortly.

Split up qapi-types.c, qapi-visit.h, qapi-visit.c, qmp-commands.h,
qmp-commands.c, qapi-event.h, qapi-event.c the same way.
qmp-introspect.h, qmp-introspect.c and qapi.texi remain monolithic.

The split of qmp-commands.c duplicates static helper function
qmp_marshal_output_str() in qapi-commands-char.c and
qapi-commands-misc.c. This happens when commands returning the same
type occur in multiple modules. Not worth avoiding.

Since I'm going to rename qapi-event.[ch] to qapi-events.[ch], and
qmp-commands.[ch] to qapi-commands.[ch], name the shards that way
already, to reduce churn. This requires temporary hacks in
commands.py and events.py. Similarly, c_name() must temporarily
be taught to munge '/' in common.py. They'll go away with the rename.

Backports commit 252dc3105fc494182e236e97fe20f2d6b1d652cb from qemu
2018-03-09 09:54:36 -05:00
..
accel tcg: Merge opcode arguments into TCGOp 2018-03-05 04:45:20 -05:00
crypto crypto: Clean up includes 2018-02-19 00:47:40 -05:00
default-configs arm64eb: add support for ARM64 big endian. 2017-04-24 23:30:01 +08:00
docs docs: clarify memory region lifecycle 2018-02-12 15:11:21 -05:00
fpu softfloat: use floatx80_infinity in softfloat 2018-03-09 01:34:45 -05:00
hw Include qapi/error.h exactly where needed 2018-03-07 12:26:38 -05:00
include softfloat: use floatx80_infinity in softfloat 2018-03-09 01:34:45 -05:00
qapi Include qapi/qmp/qlist.h exactly where needed 2018-03-08 08:50:06 -05:00
qobject Include qapi/qmp/qlist.h exactly where needed 2018-03-08 08:50:06 -05:00
qom Include qapi/qmp/qobject.h exactly where needed 2018-03-08 08:48:27 -05:00
scripts qapi: Generate separate .h, .c for each module 2018-03-09 09:54:36 -05:00
target sparc: fix leon3 casa instruction when MMU is disabled 2018-03-09 01:39:53 -05:00
tcg tcg/aarch64: Add vector operations 2018-03-07 08:07:58 -05:00
util oslib-posix: check for posix_memalign in configure script 2018-03-08 08:56:35 -05:00
aarch64.h softfloat: use floatx80_infinity in softfloat 2018-03-09 01:34:45 -05:00
aarch64eb.h softfloat: use floatx80_infinity in softfloat 2018-03-09 01:34:45 -05:00
accel.c clean-up: removed duplicate #includes 2018-02-28 08:51:56 -05:00
arm.h softfloat: use floatx80_infinity in softfloat 2018-03-09 01:34:45 -05:00
armeb.h softfloat: use floatx80_infinity in softfloat 2018-03-09 01:34:45 -05:00
atomic_template.h tcg: Record code_gen_buffer address for user-only memory helpers 2018-03-05 13:48:27 -05:00
CODING_STYLE import 2015-08-21 15:04:50 +08:00
configure build-sys: check static linking of UBSAN 2018-03-08 09:00:31 -05:00
COPYING import 2015-08-21 15:04:50 +08:00
COPYING.LIB import 2015-08-21 15:04:50 +08:00
cpu-exec-common.c tcg: Add EXCP_ATOMIC 2018-02-27 11:57:58 -05:00
cpu-exec.c exec-all: extract tb->tc_* into a separate struct tc_tb 2018-03-05 02:57:22 -05:00
cpus.c Include qapi/error.h exactly where needed 2018-03-07 12:26:38 -05:00
cputlb.c accel/tcg: add size paremeter in tlb_fill() 2018-03-06 10:56:34 -05:00
exec.c cpu: suffix cpu address spaces with cpu index 2018-03-05 14:41:25 -05:00
gen_all_header.sh arm64eb: add support for ARM64 big endian. 2017-04-24 23:30:01 +08:00
glib_compat.c qapi: Improve qobject input visitor error reporting 2018-03-02 12:05:53 -05:00
HACKING import 2015-08-21 15:04:50 +08:00
header_gen.py softfloat: use floatx80_infinity in softfloat 2018-03-09 01:34:45 -05:00
ioport.c hw: remove pio_addr_t 2018-02-24 02:43:16 -05:00
LICENSE import 2015-08-21 15:04:50 +08:00
m68k.h softfloat: use floatx80_infinity in softfloat 2018-03-09 01:34:45 -05:00
Makefile qapi: Generate separate .h, .c for each module 2018-03-09 09:54:36 -05:00
Makefile.objs qapi/types qapi/visit: Generate built-in stuff into separate files 2018-03-09 09:25:59 -05:00
Makefile.target qapi-gen: New common driver for code and doc generators 2018-03-09 08:47:12 -05:00
memory.c memory: remove memory_region_test_and_clear_dirty 2018-03-08 09:02:06 -05:00
memory_ldst.inc.c exec: introduce memory_ldst.inc.c 2018-03-01 09:59:34 -05:00
memory_mapping.c include/qemu/osdep.h: Don't include qapi/error.h 2018-02-21 23:08:18 -05:00
mips.h softfloat: use floatx80_infinity in softfloat 2018-03-09 01:34:45 -05:00
mips64.h softfloat: use floatx80_infinity in softfloat 2018-03-09 01:34:45 -05:00
mips64el.h softfloat: use floatx80_infinity in softfloat 2018-03-09 01:34:45 -05:00
mipsel.h softfloat: use floatx80_infinity in softfloat 2018-03-09 01:34:45 -05:00
powerpc.h softfloat: use floatx80_infinity in softfloat 2018-03-09 01:34:45 -05:00
qapi-schema.json qapi: Update scripts to commit 01b2ffcedd94ad7b42bc870e4c6936c87ad03429 2018-03-03 18:32:12 -05:00
qemu-timer.c timer/cpus: fix some typos and update some comments 2018-02-25 23:21:57 -05:00
rules.mak build-sys: silence make by default or V=0 2018-03-06 08:58:03 -05:00
softmmu_template.h accel/tcg: add size paremeter in tlb_fill() 2018-03-06 10:56:34 -05:00
sparc.h softfloat: use floatx80_infinity in softfloat 2018-03-09 01:34:45 -05:00
sparc64.h softfloat: use floatx80_infinity in softfloat 2018-03-09 01:34:45 -05:00
tcg-runtime-gvec.c tcg: Add generic vector helpers with a scalar operand 2018-03-06 16:10:09 -05:00
tcg-runtime.c exec-all: extract tb->tc_* into a separate struct tc_tb 2018-03-05 02:57:22 -05:00
translate-all.c translate-all: Zero out the TCGContext instance 2018-03-05 15:40:51 -05:00
translate-all.h translate-all.c: Compute L1 page table properties at runtime 2018-02-26 11:46:58 -05:00
translate-common.c exec: Clean up includes 2018-02-19 00:49:55 -05:00
unicorn_common.h qom/cpu: Add MemoryRegion property 2018-02-18 21:54:50 -05:00
VERSION import 2015-08-21 15:04:50 +08:00
vl.c Include qapi/error.h exactly where needed 2018-03-07 12:26:38 -05:00
vl.h import 2015-08-21 15:04:50 +08:00
x86_64.h softfloat: use floatx80_infinity in softfloat 2018-03-09 01:34:45 -05:00