[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

Re: [libvirt] [PATCH] Generate libvirt_qemu.def from libvirt_qemu.syms for MinGW builds



2010/8/13 Eric Blake <eblake redhat com>:
> On 08/12/2010 05:23 PM, Matthias Bolte wrote:
>> @@ -1866,6 +1866,7 @@ case "$host" in
>>      # Also set the symbol file to .def, so src/Makefile generates libvirt.def
>>      # from libvirt.syms and passes libvirt.def instead of libvirt.syms to the linker
>>      LIBVIRT_SYMBOL_FILE=libvirt.def
>> +    LIBVIRT_QEMU_SYMBOL_FILE='$(srcdir)/libvirt_qemu.def'
>
> The libvirt_qemu.syms file lives in $(srcdir) because it is
> version-controlled, but this line would make the .def file live there
> too even though it is generated.  Any reason you can't use just
> LIBVIRT_QEMU_SYMBOL_FILE=libvirt_qemu.def, and still have things work in
> a VPATH build with it living in $(builddir)?
>
>> +++ b/src/Makefile.am
>> @@ -1010,7 +1010,7 @@ EXTRA_DIST += \
>>    libvirt_daemon.syms                \
>>    libvirt_nwfilter.syms
>>
>> -BUILT_SOURCES += libvirt.syms libvirt.def
>> +BUILT_SOURCES += libvirt.syms libvirt.def libvirt_qemu.def
>
> Particularly here, since you are treating it as a built source - in
> fact, I'm guessing that this won't work in a VPATH build without
> tweaking the configure.ac change to drop $(srcdir).
>
>>
>> +libvirt_qemu.def: libvirt_qemu.syms
>
> Which also means that for this line, you may have to make the dependency
> be on $(srcdir)/libvirt_qemu.syms, since the whole point of my question
> is reading input from $(srcdir) but generating output in $(builddir).
>

You've got me there. It was late and I didn't pay attention to the details :(

Okay, I attached v2 and this time I tested it in a VPATH build under
MinGW and it works.

Matthias
From 4d93cde0e37a66fc6e1bb1e6e945085dae66737d Mon Sep 17 00:00:00 2001
From: Matthias Bolte <matthias bolte googlemail com>
Date: Thu, 12 Aug 2010 23:43:16 +0200
Subject: [PATCH] Generate libvirt_qemu.def from libvirt_qemu.syms for MinGW builds

---
 configure.ac    |    1 +
 src/.gitignore  |    1 +
 src/Makefile.am |    9 ++++++++-
 3 files changed, 10 insertions(+), 1 deletions(-)

diff --git a/configure.ac b/configure.ac
index a2dcfa3..3968617 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1873,6 +1873,7 @@ case "$host" in
     # Also set the symbol file to .def, so src/Makefile generates libvirt.def
     # from libvirt.syms and passes libvirt.def instead of libvirt.syms to the linker
     LIBVIRT_SYMBOL_FILE=libvirt.def
+    LIBVIRT_QEMU_SYMBOL_FILE=libvirt_qemu.def
     # mingw's ld has the --version-script parameter, but it requires a .def file
     # instead to work properly, therefore clear --version-script here and use
     # -Wl, to pass the .def file to the linker
diff --git a/src/.gitignore b/src/.gitignore
index 5d114c9..7ea8d89 100644
--- a/src/.gitignore
+++ b/src/.gitignore
@@ -11,6 +11,7 @@ libvirt_parthelper
 libvirt_lxc
 libvirt.def
 libvirt.syms
+libvirt_qemu.def
 *.i
 *.s
 virt-aa-helper
diff --git a/src/Makefile.am b/src/Makefile.am
index a66eb2a..b321657 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -1010,7 +1010,7 @@ EXTRA_DIST += \
   libvirt_daemon.syms		\
   libvirt_nwfilter.syms
 
-BUILT_SOURCES += libvirt.syms libvirt.def
+BUILT_SOURCES += libvirt.syms libvirt.def libvirt_qemu.def
 
 libvirt.syms: libvirt_public.syms $(USED_SYM_FILES)
 	$(AM_V_GEN)rm -f $ -tmp $@ ; \
@@ -1033,6 +1033,13 @@ libvirt.def: libvirt.syms
 	chmod a-w $ -tmp && \
 	mv $ -tmp libvirt.def
 
+libvirt_qemu.def: $(srcdir)/libvirt_qemu.syms
+	$(AM_V_GEN)rm -f -- $ -tmp $@ ; \
+	printf 'EXPORTS\n' > $ -tmp && \
+	sed -e '/^$$/d; /#/d; /:/d; /\}/d; /\*/d; /LIBVIRT_/d; s/[ \t]*\(.*\)\;/    \1/g' $^ >> $ -tmp && \
+	chmod a-w $ -tmp && \
+	mv $ -tmp libvirt_qemu.def
+
 # Empty source list - it merely links a bunch of convenience libs together
 libvirt_la_SOURCES =
 libvirt_la_LDFLAGS = $(VERSION_SCRIPT_FLAGS)$(LIBVIRT_SYMBOL_FILE) \
-- 
1.7.0.4


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]