[PATCH] Fix clock_gettime detection

Gilles Espinasse g.esp at free.fr
Sun Jan 22 07:01:45 CET 2012


forgot to say it is for 1.4.

This is probably not the right way as gpg would link to librt and libpthread
every time clock_gettime is found when in fact, code only use clock_gettime
when
!defined (HAVE_GETTIMEOFDAY) && !defined(HAVE_GETHRTIME) &&
defined(HAVE_BROKEN_GETHRTIME)

I will do it again.

----- Original Message ----- 
From: "Gilles Espinasse" <g.esp at free.fr>
To: <gnupg-devel at gnupg.org>
Cc: "Gilles Espinasse" <g.esp at free.fr>
Sent: Saturday, January 21, 2012 11:41 PM
Subject: [PATCH] Fix clock_gettime detection


> AC_CHECK_FUNCS is not enought as AC_SEARCH_LIBS has to be used before
>
> Tested to work with
> ac_cv_func_gettimeofday= ./configure using --enable-minimal or no other
option than --enable-maintainer-mode
>
> Signed-off-by: Gilles Espinasse <g.esp at free.fr>
> ---
>  configure.ac      |   23 +++++++++++++++++++++--
>  g10/Makefile.am   |    2 +-
>  tools/Makefile.am |    2 +-
>  3 files changed, 23 insertions(+), 4 deletions(-)
>
> diff --git a/configure.ac b/configure.ac
> index 181c07b..54d0dd0 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -1023,7 +1023,7 @@ AC_FUNC_VPRINTF
>  AC_FUNC_FORK
>  AC_CHECK_FUNCS(strerror stpcpy strlwr tcgetattr strtoul mmap sysconf)
>  AC_CHECK_FUNCS(strcasecmp strncasecmp ctermid times unsetenv getpwnam
getpwuid)
> -AC_CHECK_FUNCS(memmove gettimeofday getrusage setrlimit clock_gettime)
> +AC_CHECK_FUNCS(memmove gettimeofday getrusage setrlimit)
>  AC_CHECK_FUNCS(atexit raise getpagesize strftime nl_langinfo setlocale)
>  AC_CHECK_FUNCS(waitpid wait4 sigaction sigprocmask rand pipe stat
getaddrinfo)
>  AC_CHECK_FUNCS(fcntl ftruncate)
> @@ -1037,7 +1037,26 @@ AC_CHECK_TYPES([struct sigaction,
sigset_t],,,[#include <signal.h>])
>
>
AC_CHECK_FUNC(getopt,,AC_CHECK_LIB(iberty,getopt,AC_SUBST(GETOPT,"-liberty")
))
>
> -#
> +dnl Check for clock_gettime, in libc for FreeBSD, in rt for linux,
> +dnl in rt for Solaris 7, in posix4 for Solaris 2.5.1
> +LIB_CLOCK_GETTIME=
> +clk_saved_libs=$LIBS
> +AC_SEARCH_LIBS([clock_gettime], [rt posix4],
> +    [test "$ac_cv_search_clock_gettime" = "none required" ||
> +        LIB_CLOCK_GETTIME=$ac_cv_search_clock_gettime])
> +AC_SUBST([LIB_CLOCK_GETTIME])
> +
> +AC_MSG_CHECKING([for working clock_gettime])
> +AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <time.h>]],
> +    [[clock_gettime(CLOCK_REALTIME, 0);]])],
[gnupg_cv_clock_gettime=yes], [gnupg_cv_clock_gettime=no])
> +AC_MSG_RESULT($gnupg_cv_clock_gettime)
> +
> +if test x"$gnupg_cv_clock_gettime" = xyes; then
> +    AC_DEFINE([HAVE_CLOCK_GETTIME], 1,
> +    [Define to 1 if you have the `clock_gettime' function.])
> +fi
> +LIBS=$clk_saved_libs
> +
>  # check for gethrtime and run a testprogram to see whether
>  # it is broken.  It has been reported that some Solaris and HP UX systems
>  # raise an SIGILL
> diff --git a/g10/Makefile.am b/g10/Makefile.am
> index 60e7e11..ebceb2e 100644
> --- a/g10/Makefile.am
> +++ b/g10/Makefile.am
> @@ -127,7 +127,7 @@ gpgv_SOURCES = gpgv.c           \
>         verify.c
>
>  LDADD =  $(needed_libs) $(other_libs) @ZLIBS@ @W32LIBS@
> -gpg_LDADD = $(LDADD) @LIBREADLINE@ @DLLIBS@ @NETLIBS@ @LIBUSB@
> +gpg_LDADD = $(LDADD) @LIBREADLINE@ @DLLIBS@ @NETLIBS@ @LIBUSB@
@LIB_CLOCK_GETTIME@
>
>  $(PROGRAMS): $(needed_libs)
>
> diff --git a/tools/Makefile.am b/tools/Makefile.am
> index 0c6e691..604354a 100644
> --- a/tools/Makefile.am
> +++ b/tools/Makefile.am
> @@ -41,7 +41,7 @@ endif
>
>  gpgsplit_LDADD  = $(needed_libs) $(other_libs) @ZLIBS@
>  mpicalc_LDADD   = $(needed_libs) $(other_libs) @W32LIBS@
> -bftest_LDADD    = $(needed_libs) $(other_libs) @W32LIBS@ @DLLIBS@
@NETLIBS@ @LIBREADLINE@
> +bftest_LDADD    = $(needed_libs) $(other_libs) @W32LIBS@ @DLLIBS@
@NETLIBS@ @LIBREADLINE@ @LIB_CLOCK_GETTIME@
>  shmtest_LDADD   = $(needed_libs) $(other_libs) @LIBREADLINE@
>
>  gpgsplit mpicalc bftest shmtest: $(needed_libs)
> -- 
> 1.5.6.5
>




More information about the Gnupg-devel mailing list