[libvirt] [PATCH] Don't link with -lrt on OpenBSD
Jasper Lievisse Adriaanse
jasper at humppa.nl
Tue Sep 4 17:20:26 UTC 2012
On Tue, Sep 04, 2012 at 10:59:05AM -0600, Eric Blake wrote:
> On 09/04/2012 09:26 AM, Eric Blake wrote:
> > On 09/04/2012 09:04 AM, Jasper Lievisse Adriaanse wrote:
> >> >From bdf3bce37531ec346474bc5c4f37a5d2985d1d35 Mon Sep 17 00:00:00 2001
> >> From: Jasper Lievisse Adriaanse <jasper at humppa.nl>
> >> Date: Tue, 4 Sep 2012 17:03:43 +0200
> >> Subject: [PATCH] Don't link with -lrt on OpenBSD
> >>
> >> ---
> >> configure.ac | 8 +++++++-
> >> 1 files changed, 7 insertions(+), 1 deletions(-)
>
> >
> > I'd much rather write this as a probe to see if linking with -rt makes a
> > difference, and only add it when it matters, than trying to blindly add
> > it (the pre-patch version) or to blindly exclude it for some platforms
> > (the post-patch version). I also wonder if gnulib has some help on this
> > front. NACK to this version while I investigate.
>
> In fact, gnulib already provides the LGPLv2+ clock-time module for
> clock_gettime and clock_settime, with an appropriate link library
> $(LIB_CLOCK_GETTIME) that is set to -lrt when necessary. Does this
> patch work for you?
Yep, this seems to work just fine.
> From d74e5a4dfc434d3a1d01856d013a7f50d910fa95 Mon Sep 17 00:00:00 2001
> From: Eric Blake <eblake at redhat.com>
> Date: Tue, 4 Sep 2012 10:57:25 -0600
> Subject: [PATCH] build: use correct libraries for clock_gettime
>
> On OpenBSD, clock_gettime() exists in libc rather than librt, and
> blindly linking with -lrt made the build fail. Gnulib already
> did the work for determining which libraries to use, so we should
> reuse that work rather than doing it ourselves.
>
> * bootstrap.conf (gnulib_modules): Pull in clock-time.
> * configure.ac (RT_LIBS): Drop.
> * src/Makefile.am (libvirt_util_la_LIBADD): Use gnulib variable
> instead.
> * src/util/virtime.c (includes): Simplify.
> ---
> bootstrap.conf | 1 +
> configure.ac | 10 ----------
> src/Makefile.am | 2 +-
> src/util/virtime.c | 6 ++----
> 4 files changed, 4 insertions(+), 15 deletions(-)
>
> diff --git a/bootstrap.conf b/bootstrap.conf
> index a6cfe24..7fefb69 100644
> --- a/bootstrap.conf
> +++ b/bootstrap.conf
> @@ -30,6 +30,7 @@ c-strcasestr
> calloc-posix
> canonicalize-lgpl
> chown
> +clock-time
> close
> connect
> configmake
> diff --git a/configure.ac b/configure.ac
> index e0d00d5..cb91e7d 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -183,16 +183,6 @@ LIBS="$LIBS $LIB_PTHREAD $LIBMULTITHREAD"
> AC_CHECK_FUNCS([pthread_mutexattr_init])
> LIBS=$old_libs
>
> -old_LIBS=$LIBS
> -RT_LIBS=
> -LIBS="$LIBS $LIB_PTHREAD -lrt"
> -AC_CHECK_FUNC([clock_gettime],[
> - AC_DEFINE([HAVE_CLOCK_GETTIME],[],[Defined if clock_gettime()
> exists in librt.so])
> - RT_LIBS=-lrt
> -])
> -LIBS=$old_libs
> -AC_SUBST(RT_LIBS)
> -
> dnl Availability of various common headers (non-fatal if missing).
> AC_CHECK_HEADERS([pwd.h paths.h regex.h sys/un.h \
> sys/poll.h syslog.h mntent.h net/ethernet.h linux/magic.h \
> diff --git a/src/Makefile.am b/src/Makefile.am
> index 95e1bea..39adeac 100644
> --- a/src/Makefile.am
> +++ b/src/Makefile.am
> @@ -668,7 +668,7 @@ libvirt_util_la_CFLAGS = $(CAPNG_CFLAGS)
> $(YAJL_CFLAGS) $(LIBNL_CFLAGS) \
> $(DBUS_CFLAGS) $(LDEXP_LIBM)
> libvirt_util_la_LIBADD = $(CAPNG_LIBS) $(YAJL_LIBS) $(LIBNL_LIBS) \
> $(THREAD_LIBS) $(AUDIT_LIBS) $(DEVMAPPER_LIBS) \
> - $(RT_LIBS) $(DBUS_LIBS) $(MSCOM_LIBS) $(LIBXML_LIBS)
> + $(LIB_CLOCK_GETTIME) $(DBUS_LIBS) $(MSCOM_LIBS) $(LIBXML_LIBS)
>
>
> noinst_LTLIBRARIES += libvirt_conf.la
> diff --git a/src/util/virtime.c b/src/util/virtime.c
> index 926bb50..d34e8ab 100644
> --- a/src/util/virtime.c
> +++ b/src/util/virtime.c
> @@ -1,7 +1,7 @@
> /*
> * virtime.c: Time handling functions
> *
> - * Copyright (C) 2006-2011 Red Hat, Inc.
> + * Copyright (C) 2006-2012 Red Hat, Inc.
> *
> * This library is free software; you can redistribute it and/or
> * modify it under the terms of the GNU Lesser General Public
> @@ -34,9 +34,7 @@
> #include <config.h>
>
> #include <stdio.h>
> -#ifndef HAVE_CLOCK_GETTIME
> -# include <sys/time.h>
> -#endif
> +#include <sys/time.h>
>
> #include "virtime.h"
> #include "util.h"
> --
> 1.7.11.4
>
> --
> Eric Blake eblake at redhat.com +1-919-301-3266
> Libvirt virtualization library http://libvirt.org
>
--
Cheers,
Jasper
"Stay Hungry. Stay Foolish"
More information about the libvir-list
mailing list