Marc-André Lureau <marcandre.lur...@redhat.com> writes:

> Hi,
>
> 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.

Lovely except for the 'top-unit' feature.  I believe the existing
modules can do the job.  Quoting my "[PATCH v2 00/29] Modularize
generated QAPI code":

    Related: Marc-André's 'unit' pragma proposal.  That's a different
    way to split off parts of the generated code, motivated by the
    desire to use poisoned identifiers such as TARGET_I386.  I noted in
    my review of v3 that I "can either accept it, or come up with a
    better solution."  This is my attempt at a better solution.  It's a
    bit more ambitious, and thus more useful (I hope).  The pragma has
    one theoretical advantage, though: you can modularize the generated
    output in different ways than the input.  The patches using don't do
    that, however.

I'm going to post RFC patches that show how to do a target-dependent
module.  Then we can discuss the two approaches.

Reply via email to