----- Original Message ----- > Marc-André Lureau <marcandre.lur...@redhat.com> writes: > > > Wrap generated code with #if/#endif using the ifcond_decorator. > > > > Signed-off-by: Marc-André Lureau <marcandre.lur...@redhat.com> > > --- > > scripts/qapi-visit.py | 5 +++++ > > 1 file changed, 5 insertions(+) > > > > diff --git a/scripts/qapi-visit.py b/scripts/qapi-visit.py > > index c29c2d869e..bb18c9edee 100644 > > --- a/scripts/qapi-visit.py > > +++ b/scripts/qapi-visit.py > > @@ -267,6 +267,7 @@ class QAPISchemaGenVisitVisitor(QAPISchemaVisitor): > > self.decl = None > > self.defn = None > > self._btin = None > > + self.if_members = ['decl', 'defn', '_btin'] > > > > def visit_begin(self, schema): > > self.decl = '' > > @@ -282,6 +283,7 @@ class QAPISchemaGenVisitVisitor(QAPISchemaVisitor): > > self.decl = self._btin + self.decl > > self._btin = None > > > > + @ifcond_decorator > > def visit_enum_type(self, name, info, values, prefix, ifcond): > > # Special case for our lone builtin enum type > > # TODO use something cleaner than existence of info > > @@ -293,6 +295,7 @@ class QAPISchemaGenVisitVisitor(QAPISchemaVisitor): > > self.decl += gen_visit_decl(name, scalar=True) > > self.defn += gen_visit_enum(name) > > > > + @ifcond_decorator > > def visit_array_type(self, name, info, element_type, ifcond): > > decl = gen_visit_decl(name) > > defn = gen_visit_list(name, element_type) > > @@ -304,6 +307,7 @@ class QAPISchemaGenVisitVisitor(QAPISchemaVisitor): > > self.decl += decl > > self.defn += defn > > > > + @ifcond_decorator > > def visit_object_type(self, name, info, base, members, variants, > > ifcond): > > # Nothing to do for the special empty builtin > > if name == 'q_empty': > > @@ -317,6 +321,7 @@ class QAPISchemaGenVisitVisitor(QAPISchemaVisitor): > > self.decl += gen_visit_decl(name) > > self.defn += gen_visit_object(name, base, members, variants) > > > > + @ifcond_decorator > > def visit_alternate_type(self, name, info, variants, ifcond): > > self.decl += gen_visit_decl(name) > > self.defn += gen_visit_alternate(name, variants) > > make check fails to compile, first error: >
I'll merge back qapi-types & qapi-visited #if addition (regression from the split). > make -C ~/work/qemu/bld-x86/ check > make: Entering directory '/work/armbru/qemu/bld-x86' > [...] > GEN tests/test-qapi-types.c > CC tests/test-qapi-types.o > tests/test-qapi-types.c: In function ‘qapi_free_TestIfAlternate’: > tests/test-qapi-types.c:190:5: warning: implicit declaration of function > ‘visit_type_TestIfAlternate’; did you mean ‘visit_type_UserDefAlternate’? > [-Wimplicit-function-declaration] > visit_type_TestIfAlternate(v, NULL, &obj, NULL); > ^~~~~~~~~~~~~~~~~~~~~~~~~~ > visit_type_UserDefAlternate > tests/test-qapi-types.c:190:5: warning: nested extern declaration of > ‘visit_type_TestIfAlternate’ [-Wnested-externs] > tests/test-qapi-types.c: In function ‘qapi_free_TestIfStruct’: > tests/test-qapi-types.c:213:5: warning: implicit declaration of function > ‘visit_type_TestIfStruct’; did you mean ‘visit_type_TestStruct’? > [-Wimplicit-function-declaration] > visit_type_TestIfStruct(v, NULL, &obj, NULL); > ^~~~~~~~~~~~~~~~~~~~~~~ > visit_type_TestStruct > tests/test-qapi-types.c:213:5: warning: nested extern declaration of > ‘visit_type_TestIfStruct’ [-Wnested-externs] > tests/test-qapi-types.c: In function ‘qapi_free_TestIfUnion’: > tests/test-qapi-types.c:226:5: warning: implicit declaration of function > ‘visit_type_TestIfUnion’; did you mean ‘visit_type_TestStruct’? > [-Wimplicit-function-declaration] > visit_type_TestIfUnion(v, NULL, &obj, NULL); > ^~~~~~~~~~~~~~~~~~~~~~ > visit_type_TestStruct > tests/test-qapi-types.c:226:5: warning: nested extern declaration of > ‘visit_type_TestIfUnion’ [-Wnested-externs] > GEN tests/test-qapi-event.c > CC tests/test-qapi-event.o > GEN tests/test-qmp-introspect.c > CC tests/test-qmp-introspect.o > LINK tests/test-qobject-output-visitor > tests/test-qapi-types.o: In function `qapi_free_TestIfAlternate': > /work/armbru/qemu/bld-x86/tests/test-qapi-types.c:190: undefined reference to > `visit_type_TestIfAlternate' > tests/test-qapi-types.o: In function `qapi_free_TestIfStruct': > test-qapi-types.c:(.text+0x361): undefined reference to > `visit_type_TestIfStruct' > tests/test-qapi-types.o: In function `qapi_free_TestIfUnion': > test-qapi-types.c:(.text+0x3af): undefined reference to > `visit_type_TestIfUnion' > collect2: error: ld returned 1 exit status > make: *** [/work/armbru/qemu/rules.mak:121: > tests/test-qobject-output-visitor] Error 1 > make: Leaving directory '/work/armbru/qemu/bld-x86' >