From 9d86cbcf5f799b711e06ff989edb3bb3b2fa6556 Mon Sep 17 00:00:00 2001 From: Eric Blake Date: Fri, 4 Nov 2011 14:53:15 -0600 Subject: [PATCH] build: fix linking on BSD 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 | 4 ++-- src/Makefile.am | 6 ++++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/configure.ac b/configure.ac index 5753c08577..8754f1846f 100644 --- a/configure.ac +++ b/configure.ac @@ -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 diff --git a/src/Makefile.am b/src/Makefile.am index bf26b19c00..c419c9420e 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -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