]> xenbits.xensource.com Git - people/liuw/libxenctrl-split/libvirt.git/commitdiff
build: fix linking on BSD
authorEric Blake <eblake@redhat.com>
Fri, 4 Nov 2011 20:53:15 +0000 (14:53 -0600)
committerEric Blake <eblake@redhat.com>
Fri, 4 Nov 2011 22:43:37 +0000 (16:43 -0600)
While building on FreeBSD (and after fixing a ptsname_r link error),
I got this failure:

./.libs/libvirt_util.a(libvirt_util_la-threads.o)(.text+0x240): In function `virThreadCreate':
util/threads-pthread.c:185: undefined reference to `pthread_create'

It turns out that gnulib used only pthread_join for LIB_PTHREAD,
but on FreeBSD, libc provides that (as a stub function); whereas
the more complex pthread_create really does require -pthread,
which gnulib tracked under [LT]LIBMULTITHREAD.

* configure.ac (LIBS): Check LIBMULTITHREAD alongside LIB_PTHREAD.
* src/Makefile.am (THREAD_LIBS): New variable.
(libvirt_util_la_LIBADD, libvirt_lxc_LDADD): Use it.

configure.ac
src/Makefile.am

index 5753c085774bec6c3687d25bb4e2c236d1f8da3c..8754f1846fbcf0ab7233cf38689af2a3b70a6f34 100644 (file)
@@ -141,9 +141,9 @@ AC_CHECK_FUNCS_ONCE([cfmakeraw geteuid getgid getgrnam_r getmntent_r \
 
 dnl Availability of pthread functions (if missing, win32 threading is
 dnl assumed).  Because of $LIB_PTHREAD, we cannot use AC_CHECK_FUNCS_ONCE.
-dnl LIB_PTHREAD was set during gl_INIT by gnulib.
+dnl LIB_PTHREAD and LIBMULTITHREAD were set during gl_INIT by gnulib.
 old_LIBS=$LIBS
-LIBS="$LIBS $LIB_PTHREAD"
+LIBS="$LIBS $LIB_PTHREAD $LIBMULTITHREAD"
 AC_CHECK_FUNCS([pthread_mutexattr_init])
 LIBS=$old_libs
 
index bf26b19c00219f66be417ae62ff57c45545158ba..c419c9420ed9c645f8e536c324bf04cf2e5c8ee0 100644 (file)
@@ -29,6 +29,8 @@ CLEANFILES =
 DISTCLEANFILES =
 MAINTAINERCLEANFILES =
 
+THREAD_LIBS = $(LIB_PTHREAD) $(LTLIBMULTITHREAD)
+
 if WITH_NETWORK
 UUID=$(shell uuidgen 2>/dev/null)
 endif
@@ -548,7 +550,7 @@ libvirt_util_la_SOURCES =                                   \
 libvirt_util_la_CFLAGS = $(CAPNG_CFLAGS) $(YAJL_CFLAGS) $(LIBNL_CFLAGS) \
                $(AM_CFLAGS) $(AUDIT_CFLAGS) $(DEVMAPPER_CFLAGS)
 libvirt_util_la_LIBADD = $(CAPNG_LIBS) $(YAJL_LIBS) $(LIBNL_LIBS) \
-               $(LIB_PTHREAD) $(AUDIT_LIBS) $(DEVMAPPER_LIBS)
+               $(THREAD_LIBS) $(AUDIT_LIBS) $(DEVMAPPER_LIBS)
 
 
 noinst_LTLIBRARIES += libvirt_conf.la
@@ -1481,7 +1483,7 @@ libvirt_lxc_SOURCES =                                             \
                $(NWFILTER_PARAM_CONF_SOURCES)
 libvirt_lxc_LDFLAGS = $(WARN_CFLAGS) $(AM_LDFLAGS)
 libvirt_lxc_LDADD = $(CAPNG_LIBS) $(YAJL_LIBS) \
-               $(LIBXML_LIBS) $(NUMACTL_LIBS) $(LIB_PTHREAD) \
+               $(LIBXML_LIBS) $(NUMACTL_LIBS) $(THREAD_LIBS) \
                $(LIBNL_LIBS) $(AUDIT_LIBS) $(DEVMAPPER_LIBS) \
                ../gnulib/lib/libgnu.la
 if WITH_DTRACE