Eric Blake <[email protected]> writes: > On 02/11/2018 03:35 AM, Markus Armbruster wrote: >> Linking code from multiple separate QAPI schemata into the same >> program is possible, but involves some weirdness around built-in >> types: >> >> * We generate code for built-in types into .c only with option >> --builtins. The user is responsible for generating code for exactly >> one QAPI schema per program with --builtins. >> >> * We generate code for built-in types into .h regardless of >> --builtins, but guarded by #ifndef QAPI_VISIT_BUILTIN. Because all >> copies of this code are exactly the same, including any combination >> of these headers works. >> >> Replace this contraption by something more conventional: generate code >> for built-in types into their very own files: qapi-builtin-types.c, >> qapi-builtin-visit.c, qapi-builtin-types.h, qapi-builtin-visit.h, but >> only with --builtins. Obey --output-dir, but ignore --prefix for >> them. >> >> Make qapi-types.h include qapi-builtin-types.h. With multiple >> schemata you now have multiple qapi-types.[ch], but only one >> qapi-builtin-types.[ch]. Same for qapi-visit.[ch] and >> qapi-builtin-visit.[ch]. >> >> Bonus: if all you need is built-in stuff, you can include a much >> smaller header. To be exploited shortly. >> >> Signed-off-by: Markus Armbruster <[email protected]> >> --- >> @@ -2046,6 +2046,7 @@ class QAPIGenH(QAPIGenC): >> class QAPIGenDoc(QAPIGen): >> + >> def _top(self, fname): >> return (QAPIGen._top(self, fname) >> + '@c AUTOMATICALLY GENERATED, DO NOT MODIFY\n\n') > > Does this hunk belong in an earlier patch?
Yes: PATCH 05. > Otherwise, > Reviewed-by: Eric Blake <[email protected]> Thanks!
