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: 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'