On 03/02/2018 06:38 AM, Peter Maydell wrote:
On 2 March 2018 at 01:29, Eric Blake <ebl...@redhat.com> wrote:
The following changes since commit 0dc8ae5e8e693737dfe65ba02d0c6eccb58a9c67:

   Merge remote-tracking branch 'remotes/cohuck/tags/s390x-20180301-v2' into 
staging (2018-03-01 17:08:16 +0000)

are available in the Git repository at:

   git://repo.or.cz/qemu/ericb.git tags/pull-qapi-2018-03-01-v2

for you to fetch changes up to 76b2baeed38089c19f69c7117b8eaa64b0e7d227:

   qapi: Don't create useless directory qapi-generated (2018-03-01 19:16:40 

This produces a huge pile of warnings from my OSX toolchain.

When running ar on libqemuutil.a:
   AR      libqemuutil.a
file: libqemuutil.a(qapi-types.o) has no symbols

Part of this change was moving the location of the generated ./qapi-types.c to qapi/qapi-types.c. Could it be that you are doing an incremental build, rather than a clean build, and the compiler is picking up the stale version of the file rather than its new location?

file: libqemuutil.a(qapi-visit.o) has no symbols

Same thing.

file: libqemuutil.a(qapi-events.o) has no symbols

Here, we renamed ./qapi-event.c to qapi/qapi-events.c, so the fact that the compiler named the right file is promising, but the fact that the file has no symbols is not good.

I think these are related -- nm complains once for every .o file in the archive
that doesn't have any symbols in it.

I had a look at the autogenerated .c files on my Linux build, and they
seem to consist only of a bunch of #includes. Why are we not generating
any code here?

I don't have easy access to an OSX machine. What version of python is in use? My first thought was that it could be a subtle bug due to differences in the python engine running the qapi generators.

But I just checked, and at least for qapi/qapi-types.c, the generated file IS just a list of includes; and in fact, it looks like all of the mentioned files are in that boat (for example, qapi/transaction.json has no events, so qapi/qapi-events-transaction.c being empty makes sense).

I know that some compilers are picky about that. Is a typedef enough to cause the compiler to have something to compile without warnings? If so, does this patch solve things? If it does, I'll squash it in the right place within the series and submit a v3 pull request.

diff --git i/scripts/qapi/common.py w/scripts/qapi/common.py
index 077e0fde4f4..aed32646c00 100644
--- i/scripts/qapi/common.py
+++ w/scripts/qapi/common.py
@@ -2035,6 +2035,13 @@ class QAPIGenC(QAPIGen):
                      blurb=self._blurb, copyright=self._copyright)

+    def _bottom(self, fname):
+        return mcgen('''
+/* Dummy typedef to prevent empty .o file */
+typedef int %(name)s;
+                     name=c_name(fname))

 class QAPIGenH(QAPIGenC):

Eric Blake, Principal Software Engineer
Red Hat, Inc.           +1-919-301-3266
Virtualization:  qemu.org | libvirt.org

Reply via email to