[libvirt] [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 cd48c1b..a762bae 100644 --- a/configure.ac +++ b/configure.ac @@ -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' # 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..d7858dd 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: 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

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).
+ $(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 +
-- Eric Blake eblake@redhat.com +1-801-349-2682 Libvirt virtualization library http://libvirt.org

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

On 08/13/2010 05:52 PM, Matthias Bolte wrote:
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.
ACK. -- Eric Blake eblake@redhat.com +1-801-349-2682 Libvirt virtualization library http://libvirt.org

2010/8/14 Eric Blake <eblake@redhat.com>:
On 08/13/2010 05:52 PM, Matthias Bolte wrote:
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.
ACK.
Thanks, pushed. Matthias
participants (2)
-
Eric Blake
-
Matthias Bolte