112308
|
1 # Configure a more-standard replacement for <time.h>.
|
|
2
|
|
3 # Copyright (C) 2000-2001, 2003-2007, 2009-2011 Free Software Foundation, Inc.
|
|
4
|
|
5 # serial 3
|
|
6
|
|
7 # This file is free software; the Free Software Foundation
|
|
8 # gives unlimited permission to copy and/or distribute it,
|
|
9 # with or without modifications, as long as this notice is preserved.
|
|
10
|
|
11 # Written by Paul Eggert and Jim Meyering.
|
|
12
|
|
13 AC_DEFUN([gl_HEADER_TIME_H],
|
|
14 [
|
|
15 dnl Use AC_REQUIRE here, so that the default behavior below is expanded
|
|
16 dnl once only, before all statements that occur in other macros.
|
|
17 AC_REQUIRE([gl_HEADER_TIME_H_BODY])
|
|
18 ])
|
|
19
|
|
20 AC_DEFUN([gl_HEADER_TIME_H_BODY],
|
|
21 [
|
|
22 AC_REQUIRE([AC_C_RESTRICT])
|
|
23 AC_REQUIRE([gl_HEADER_TIME_H_DEFAULTS])
|
|
24 gl_CHECK_NEXT_HEADERS([time.h])
|
|
25 AC_REQUIRE([gl_CHECK_TYPE_STRUCT_TIMESPEC])
|
|
26 ])
|
|
27
|
|
28 dnl Define HAVE_STRUCT_TIMESPEC if `struct timespec' is declared
|
|
29 dnl in time.h, sys/time.h, or pthread.h.
|
|
30
|
|
31 AC_DEFUN([gl_CHECK_TYPE_STRUCT_TIMESPEC],
|
|
32 [
|
|
33 AC_CHECK_HEADERS_ONCE([sys/time.h])
|
|
34 AC_CACHE_CHECK([for struct timespec in <time.h>],
|
|
35 [gl_cv_sys_struct_timespec_in_time_h],
|
|
36 [AC_COMPILE_IFELSE(
|
|
37 [AC_LANG_PROGRAM(
|
|
38 [[#include <time.h>
|
|
39 ]],
|
|
40 [[static struct timespec x; x.tv_sec = x.tv_nsec;]])],
|
|
41 [gl_cv_sys_struct_timespec_in_time_h=yes],
|
|
42 [gl_cv_sys_struct_timespec_in_time_h=no])])
|
|
43
|
|
44 TIME_H_DEFINES_STRUCT_TIMESPEC=0
|
|
45 SYS_TIME_H_DEFINES_STRUCT_TIMESPEC=0
|
|
46 PTHREAD_H_DEFINES_STRUCT_TIMESPEC=0
|
|
47 if test $gl_cv_sys_struct_timespec_in_time_h = yes; then
|
|
48 TIME_H_DEFINES_STRUCT_TIMESPEC=1
|
|
49 else
|
|
50 AC_CACHE_CHECK([for struct timespec in <sys/time.h>],
|
|
51 [gl_cv_sys_struct_timespec_in_sys_time_h],
|
|
52 [AC_COMPILE_IFELSE(
|
|
53 [AC_LANG_PROGRAM(
|
|
54 [[#include <sys/time.h>
|
|
55 ]],
|
|
56 [[static struct timespec x; x.tv_sec = x.tv_nsec;]])],
|
|
57 [gl_cv_sys_struct_timespec_in_sys_time_h=yes],
|
|
58 [gl_cv_sys_struct_timespec_in_sys_time_h=no])])
|
|
59 if test $gl_cv_sys_struct_timespec_in_sys_time_h = yes; then
|
|
60 SYS_TIME_H_DEFINES_STRUCT_TIMESPEC=1
|
|
61 else
|
|
62 AC_CACHE_CHECK([for struct timespec in <pthread.h>],
|
|
63 [gl_cv_sys_struct_timespec_in_pthread_h],
|
|
64 [AC_COMPILE_IFELSE(
|
|
65 [AC_LANG_PROGRAM(
|
|
66 [[#include <pthread.h>
|
|
67 ]],
|
|
68 [[static struct timespec x; x.tv_sec = x.tv_nsec;]])],
|
|
69 [gl_cv_sys_struct_timespec_in_pthread_h=yes],
|
|
70 [gl_cv_sys_struct_timespec_in_pthread_h=no])])
|
|
71 if test $gl_cv_sys_struct_timespec_in_pthread_h = yes; then
|
|
72 PTHREAD_H_DEFINES_STRUCT_TIMESPEC=1
|
|
73 fi
|
|
74 fi
|
|
75 fi
|
|
76 AC_SUBST([TIME_H_DEFINES_STRUCT_TIMESPEC])
|
|
77 AC_SUBST([SYS_TIME_H_DEFINES_STRUCT_TIMESPEC])
|
|
78 AC_SUBST([PTHREAD_H_DEFINES_STRUCT_TIMESPEC])
|
|
79 ])
|
|
80
|
|
81 AC_DEFUN([gl_TIME_MODULE_INDICATOR],
|
|
82 [
|
|
83 dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
|
|
84 AC_REQUIRE([gl_HEADER_TIME_H_DEFAULTS])
|
|
85 gl_MODULE_INDICATOR_SET_VARIABLE([$1])
|
|
86 dnl Define it also as a C macro, for the benefit of the unit tests.
|
|
87 gl_MODULE_INDICATOR_FOR_TESTS([$1])
|
|
88 ])
|
|
89
|
|
90 AC_DEFUN([gl_HEADER_TIME_H_DEFAULTS],
|
|
91 [
|
|
92 GNULIB_MKTIME=0; AC_SUBST([GNULIB_MKTIME])
|
|
93 GNULIB_NANOSLEEP=0; AC_SUBST([GNULIB_NANOSLEEP])
|
|
94 GNULIB_STRPTIME=0; AC_SUBST([GNULIB_STRPTIME])
|
|
95 GNULIB_TIMEGM=0; AC_SUBST([GNULIB_TIMEGM])
|
|
96 GNULIB_TIME_R=0; AC_SUBST([GNULIB_TIME_R])
|
|
97 dnl Assume proper GNU behavior unless another module says otherwise.
|
|
98 HAVE_DECL_LOCALTIME_R=1; AC_SUBST([HAVE_DECL_LOCALTIME_R])
|
|
99 HAVE_NANOSLEEP=1; AC_SUBST([HAVE_NANOSLEEP])
|
|
100 HAVE_STRPTIME=1; AC_SUBST([HAVE_STRPTIME])
|
|
101 HAVE_TIMEGM=1; AC_SUBST([HAVE_TIMEGM])
|
|
102 dnl If another module says to replace or to not replace, do that.
|
|
103 dnl Otherwise, replace only if someone compiles with -DGNULIB_PORTCHECK;
|
|
104 dnl this lets maintainers check for portability.
|
|
105 REPLACE_LOCALTIME_R=GNULIB_PORTCHECK; AC_SUBST([REPLACE_LOCALTIME_R])
|
|
106 REPLACE_MKTIME=GNULIB_PORTCHECK; AC_SUBST([REPLACE_MKTIME])
|
|
107 REPLACE_NANOSLEEP=GNULIB_PORTCHECK; AC_SUBST([REPLACE_NANOSLEEP])
|
|
108 REPLACE_TIMEGM=GNULIB_PORTCHECK; AC_SUBST([REPLACE_TIMEGM])
|
|
109 ])
|