From 039300a1ebee116082d50d61e6b3aeafc8a741ec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Wed, 10 Apr 2013 01:39:02 +0200 Subject: [PATCH] build: Tell `gen-scmconfig' whether the system has `struct timespec'. * configure.ac: Reinstate `struct timespec' check removed in commit 7e7c6f6a937005b08fffd5aeccdf992459b07137, but define `HAVE_SYSTEM_STRUCT_TIMESPEC' instead of `HAVE_STRUCT_TIMESPEC'. * libguile/gen-scmconfig.c (main): Change `HAVE_STRUCT_TIMESPEC' to `HAVE_SYSTEM_STRUCT_TIMESPEC'. --- configure.ac | 23 +++++++++++++++++++++++ libguile/gen-scmconfig.c | 2 +- 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/configure.ac b/configure.ac index d6cc2eb9a..e5f3a4c84 100644 --- a/configure.ac +++ b/configure.ac @@ -1300,6 +1300,29 @@ if test $scm_cv_struct_linger = yes; then getsockopt and setsockopt system calls.]) fi + +dnl Check for `struct timespec', for the sake of `gen-scmconfig'. When +dnl building Guile, we always have it, thanks to Gnulib; but scmconfig.h +dnl must tell whether the system has it. +dnl +dnl On MinGW, struct timespec is in . +AC_MSG_CHECKING(for struct timespec) +AC_CACHE_VAL(scm_cv_struct_timespec, + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ +#include +#if HAVE_PTHREAD_H +#include +#endif]], [[struct timespec t; t.tv_nsec = 100]])], + [scm_cv_struct_timespec="yes"], + [scm_cv_struct_timespec="no"])) +AC_MSG_RESULT($scm_cv_struct_timespec) +if test $scm_cv_struct_timespec = yes; then + dnl Don't call it `HAVE_STRUCT_TIMESPEC' because pthread-win32's + dnl checks whether that macro is defined. + AC_DEFINE([HAVE_SYSTEM_STRUCT_TIMESPEC], 1, + [Define this if your system defines struct timespec via either or .]) +fi + #-------------------------------------------------------------------- # # Flags for thread support diff --git a/libguile/gen-scmconfig.c b/libguile/gen-scmconfig.c index 9e15c622d..2f6fa6e6a 100644 --- a/libguile/gen-scmconfig.c +++ b/libguile/gen-scmconfig.c @@ -301,7 +301,7 @@ main (int argc, char *argv[]) pf ("\n"); pf ("/* same as POSIX \"struct timespec\" -- always defined */\n"); -#ifdef HAVE_STRUCT_TIMESPEC +#ifdef HAVE_SYSTEM_STRUCT_TIMESPEC pf ("typedef struct timespec scm_t_timespec;\n"); #else pf ("/* POSIX.4 structure for a time value. This is like a `struct timeval'"