]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
Generate libvirt.def from libvirt.syms
authorMatthias Bolte <matthias.bolte@googlemail.com>
Mon, 22 Mar 2010 01:25:36 +0000 (02:25 +0100)
committerMatthias Bolte <matthias.bolte@googlemail.com>
Thu, 8 Apr 2010 18:12:09 +0000 (20:12 +0200)
The MinGW linker needs the libvirt.def file.

configure.ac
src/.gitignore
src/Makefile.am

index aa4937430531153aa93f768c36c0516314883ae3..b627d64407c2998ca05086e5d6a330059e0773d2 100644 (file)
@@ -1789,6 +1789,7 @@ CYGWIN_EXTRA_LIBADD=
 CYGWIN_EXTRA_PYTHON_LIBADD=
 MINGW_EXTRA_LDFLAGS=
 WIN32_EXTRA_CFLAGS=
+LIBVIRT_SYMBOL_FILE=libvirt.syms
 case "$host" in
   *-*-cygwin*)
     CYGWIN_EXTRA_LDFLAGS="-no-undefined"
@@ -1808,6 +1809,9 @@ case "$host" in
     if test "x$enable_shared" = "xno"; then
       WIN32_EXTRA_CFLAGS="-DLIBVIRT_STATIC"
     fi
+    # 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
     ;;
 esac
 AC_SUBST([CYGWIN_EXTRA_LDFLAGS])
@@ -1815,6 +1819,7 @@ AC_SUBST([CYGWIN_EXTRA_LIBADD])
 AC_SUBST([CYGWIN_EXTRA_PYTHON_LIBADD])
 AC_SUBST([MINGW_EXTRA_LDFLAGS])
 AC_SUBST([WIN32_EXTRA_CFLAGS])
+AC_SUBST([LIBVIRT_SYMBOL_FILE])
 
 
 dnl Look for windres to build a Windows icon resource.
index e407dcb9e54d27f03213adddb0f81c80a229a5c1..d24a87d76d66175d77fee88319219fac2bc63a8d 100644 (file)
@@ -12,6 +12,7 @@ Makefile.in
 *.cov
 libvirt_parthelper
 libvirt_lxc
+libvirt.def
 libvirt.syms
 *.i
 *.s
index db69ab96b83824a1a2ab163948a628de17e80768..d54e6d05ebd6748fb7ad8b1231df665f2c07418c 100644 (file)
@@ -891,7 +891,7 @@ EXTRA_DIST += \
   libvirt_macvtap.syms         \
   libvirt_daemon.syms
 
-BUILT_SOURCES += libvirt.syms
+BUILT_SOURCES += libvirt.syms libvirt.def
 
 libvirt.syms: libvirt_public.syms $(USED_SYM_FILES)
        $(AM_V_GEN)rm -f $@-tmp $@ ; \
@@ -907,11 +907,18 @@ libvirt.syms: libvirt_public.syms $(USED_SYM_FILES)
        chmod a-w $@-tmp && \
        mv $@-tmp libvirt.syms
 
+libvirt.def: libvirt.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.def
+
 # Empty source list - it merely links a bunch of convenience libs together
 libvirt_la_SOURCES =
 libvirt_la_LIBADD += \
                    $(CYGWIN_EXTRA_LIBADD) ../gnulib/lib/libgnu.la
-libvirt_la_LDFLAGS = $(VERSION_SCRIPT_FLAGS)libvirt.syms \
+libvirt_la_LDFLAGS = $(VERSION_SCRIPT_FLAGS)$(LIBVIRT_SYMBOL_FILE) \
                      -version-info $(LIBVIRT_VERSION_INFO) \
                     $(COVERAGE_CFLAGS:-f%=-Wc,-f%) \
                     $(LIBXML_LIBS) \
@@ -919,7 +926,7 @@ libvirt_la_LDFLAGS = $(VERSION_SCRIPT_FLAGS)libvirt.syms \
                    $(DRIVER_MODULE_LIBS) \
                    $(CYGWIN_EXTRA_LDFLAGS) $(MINGW_EXTRA_LDFLAGS)
 libvirt_la_CFLAGS = $(COVERAGE_CFLAGS) -DIN_LIBVIRT
-libvirt_la_DEPENDENCIES = $(libvirt_la_LIBADD) libvirt.syms
+libvirt_la_DEPENDENCIES = $(libvirt_la_LIBADD) $(LIBVIRT_SYMBOL_FILE)
 
 # Create an automake "convenience library" version of libvirt_la,
 # just for testing, since the test harness requires access to internal
@@ -929,7 +936,7 @@ noinst_LTLIBRARIES += libvirt_test.la
 # Remove version script from convenience library
 test_LDFLAGS =                                         \
   $$(echo '$(libvirt_la_LDFLAGS)'                      \
-     |sed 's!$(VERSION_SCRIPT_FLAGS)libvirt.syms!!'    \
+     |sed 's!$(VERSION_SCRIPT_FLAGS)$(LIBVIRT_SYMBOL_FILE)!!'  \
      |sed 's!-version-info $(LIBVIRT_VERSION_INFO)!!')
 
 # Just like the above, but with a slightly different set of public symbols.