annotate m4/sys_time_h.m4 @ 12563:21ecefd9dc81

headers: make check of system header explicit Exploiting knowledge of internal behavior of other macros can be dangerous, especially since AC_CHECK_HEADERS_ONCE is designed to be cheap on subsequent use. * m4/netdb_h.m4 (gl_HEADER_NETDB): Don't exploit knowledge of gl_CHECK_NEXT_HEADER internals, but call AC_CHECK_HEADERS_ONCE ourselves. * m4/search_h.m4 (gl_SEARCH_H): Likewise. * m4/sys_select_h.m4 (gl_HEADER_SYS_SELECT): Likewise. * m4/sys_time_h.m4 (gl_HEADER_SYS_TIME_H_BODY): Likewise. * m4/inttypes.m4 (gl_INTTYPES_H): Likewise, for gt_INTTYPES_PRI internals. * m4/wchar.m4 (gl_WCHAR_H): Skip followup test if header is missing. Suggested by Bruno Haible. Signed-off-by: Eric Blake <ebb9@byu.net>
author Eric Blake <ebb9@byu.net>
date Thu, 31 Dec 2009 16:20:15 -0700
parents c2cbabec01dd
children aaa284caae61
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
7897
b7a83a69ac23 * MODULES.html.sh (Support for systems lacking POSIX:2001): New
Paul Eggert <eggert@cs.ucla.edu>
parents:
diff changeset
1 # Configure a replacement for <sys/time.h>.
12563
21ecefd9dc81 headers: make check of system header explicit
Eric Blake <ebb9@byu.net>
parents: 12559
diff changeset
2 # serial 2
7897
b7a83a69ac23 * MODULES.html.sh (Support for systems lacking POSIX:2001): New
Paul Eggert <eggert@cs.ucla.edu>
parents:
diff changeset
3
12559
c2cbabec01dd update nearly all FSF copyright year lists to include 2010
Jim Meyering <meyering@redhat.com>
parents: 12518
diff changeset
4 # Copyright (C) 2007, 2009, 2010 Free Software Foundation, Inc.
7897
b7a83a69ac23 * MODULES.html.sh (Support for systems lacking POSIX:2001): New
Paul Eggert <eggert@cs.ucla.edu>
parents:
diff changeset
5 # This file is free software; the Free Software Foundation
b7a83a69ac23 * MODULES.html.sh (Support for systems lacking POSIX:2001): New
Paul Eggert <eggert@cs.ucla.edu>
parents:
diff changeset
6 # gives unlimited permission to copy and/or distribute it,
b7a83a69ac23 * MODULES.html.sh (Support for systems lacking POSIX:2001): New
Paul Eggert <eggert@cs.ucla.edu>
parents:
diff changeset
7 # with or without modifications, as long as this notice is preserved.
b7a83a69ac23 * MODULES.html.sh (Support for systems lacking POSIX:2001): New
Paul Eggert <eggert@cs.ucla.edu>
parents:
diff changeset
8
b7a83a69ac23 * MODULES.html.sh (Support for systems lacking POSIX:2001): New
Paul Eggert <eggert@cs.ucla.edu>
parents:
diff changeset
9 # Written by Paul Eggert and Martin Lambers.
b7a83a69ac23 * MODULES.html.sh (Support for systems lacking POSIX:2001): New
Paul Eggert <eggert@cs.ucla.edu>
parents:
diff changeset
10
b7a83a69ac23 * MODULES.html.sh (Support for systems lacking POSIX:2001): New
Paul Eggert <eggert@cs.ucla.edu>
parents:
diff changeset
11 AC_DEFUN([gl_HEADER_SYS_TIME_H],
b7a83a69ac23 * MODULES.html.sh (Support for systems lacking POSIX:2001): New
Paul Eggert <eggert@cs.ucla.edu>
parents:
diff changeset
12 [
8337
039bedae1345 Rename GETTIMEOFDAY_REPLACEMENT to REPLACE_GETTIMEOFDAY.
Bruno Haible <bruno@clisp.org>
parents: 8043
diff changeset
13 dnl Use AC_REQUIRE here, so that the REPLACE_GETTIMEOFDAY=0 statement
039bedae1345 Rename GETTIMEOFDAY_REPLACEMENT to REPLACE_GETTIMEOFDAY.
Bruno Haible <bruno@clisp.org>
parents: 8043
diff changeset
14 dnl below is expanded once only, before all REPLACE_GETTIMEOFDAY=1
7903
42e2f1ada185 Enforce that GETTIMEOFDAY_REPLACEMENT=0 is only expanded once.
Bruno Haible <bruno@clisp.org>
parents: 7902
diff changeset
15 dnl statements that occur in other macros.
42e2f1ada185 Enforce that GETTIMEOFDAY_REPLACEMENT=0 is only expanded once.
Bruno Haible <bruno@clisp.org>
parents: 7902
diff changeset
16 AC_REQUIRE([gl_HEADER_SYS_TIME_H_BODY])
42e2f1ada185 Enforce that GETTIMEOFDAY_REPLACEMENT=0 is only expanded once.
Bruno Haible <bruno@clisp.org>
parents: 7902
diff changeset
17 ])
42e2f1ada185 Enforce that GETTIMEOFDAY_REPLACEMENT=0 is only expanded once.
Bruno Haible <bruno@clisp.org>
parents: 7902
diff changeset
18
42e2f1ada185 Enforce that GETTIMEOFDAY_REPLACEMENT=0 is only expanded once.
Bruno Haible <bruno@clisp.org>
parents: 7902
diff changeset
19 AC_DEFUN([gl_HEADER_SYS_TIME_H_BODY],
42e2f1ada185 Enforce that GETTIMEOFDAY_REPLACEMENT=0 is only expanded once.
Bruno Haible <bruno@clisp.org>
parents: 7902
diff changeset
20 [
7897
b7a83a69ac23 * MODULES.html.sh (Support for systems lacking POSIX:2001): New
Paul Eggert <eggert@cs.ucla.edu>
parents:
diff changeset
21 AC_REQUIRE([AC_C_RESTRICT])
12563
21ecefd9dc81 headers: make check of system header explicit
Eric Blake <ebb9@byu.net>
parents: 12559
diff changeset
22 AC_CHECK_HEADERS_ONCE([sys/time.h])
8995
1025663f7658 * m4/include_next.m4 (gl_INCLUDE_NEXT): Define and AC_SUBST
Paul Eggert <eggert@cs.ucla.edu>
parents: 8337
diff changeset
23 gl_CHECK_NEXT_HEADERS([sys/time.h])
7897
b7a83a69ac23 * MODULES.html.sh (Support for systems lacking POSIX:2001): New
Paul Eggert <eggert@cs.ucla.edu>
parents:
diff changeset
24
b7a83a69ac23 * MODULES.html.sh (Support for systems lacking POSIX:2001): New
Paul Eggert <eggert@cs.ucla.edu>
parents:
diff changeset
25 if test $ac_cv_header_sys_time_h = yes; then
b7a83a69ac23 * MODULES.html.sh (Support for systems lacking POSIX:2001): New
Paul Eggert <eggert@cs.ucla.edu>
parents:
diff changeset
26 HAVE_SYS_TIME_H=1
b7a83a69ac23 * MODULES.html.sh (Support for systems lacking POSIX:2001): New
Paul Eggert <eggert@cs.ucla.edu>
parents:
diff changeset
27 else
b7a83a69ac23 * MODULES.html.sh (Support for systems lacking POSIX:2001): New
Paul Eggert <eggert@cs.ucla.edu>
parents:
diff changeset
28 HAVE_SYS_TIME_H=0
b7a83a69ac23 * MODULES.html.sh (Support for systems lacking POSIX:2001): New
Paul Eggert <eggert@cs.ucla.edu>
parents:
diff changeset
29 fi
b7a83a69ac23 * MODULES.html.sh (Support for systems lacking POSIX:2001): New
Paul Eggert <eggert@cs.ucla.edu>
parents:
diff changeset
30 AC_SUBST([HAVE_SYS_TIME_H])
b7a83a69ac23 * MODULES.html.sh (Support for systems lacking POSIX:2001): New
Paul Eggert <eggert@cs.ucla.edu>
parents:
diff changeset
31
b7a83a69ac23 * MODULES.html.sh (Support for systems lacking POSIX:2001): New
Paul Eggert <eggert@cs.ucla.edu>
parents:
diff changeset
32 AC_CACHE_CHECK([for struct timeval], [gl_cv_sys_struct_timeval],
b7a83a69ac23 * MODULES.html.sh (Support for systems lacking POSIX:2001): New
Paul Eggert <eggert@cs.ucla.edu>
parents:
diff changeset
33 [AC_COMPILE_IFELSE(
b7a83a69ac23 * MODULES.html.sh (Support for systems lacking POSIX:2001): New
Paul Eggert <eggert@cs.ucla.edu>
parents:
diff changeset
34 [AC_LANG_PROGRAM(
12421
e8d2c6fc33ad Use spaces for indentation, not tabs.
Bruno Haible <bruno@clisp.org>
parents: 8995
diff changeset
35 [[#if HAVE_SYS_TIME_H
e8d2c6fc33ad Use spaces for indentation, not tabs.
Bruno Haible <bruno@clisp.org>
parents: 8995
diff changeset
36 #include <sys/time.h>
e8d2c6fc33ad Use spaces for indentation, not tabs.
Bruno Haible <bruno@clisp.org>
parents: 8995
diff changeset
37 #endif
e8d2c6fc33ad Use spaces for indentation, not tabs.
Bruno Haible <bruno@clisp.org>
parents: 8995
diff changeset
38 #include <time.h>
e8d2c6fc33ad Use spaces for indentation, not tabs.
Bruno Haible <bruno@clisp.org>
parents: 8995
diff changeset
39 ]],
e8d2c6fc33ad Use spaces for indentation, not tabs.
Bruno Haible <bruno@clisp.org>
parents: 8995
diff changeset
40 [[static struct timeval x; x.tv_sec = x.tv_usec;]])],
7897
b7a83a69ac23 * MODULES.html.sh (Support for systems lacking POSIX:2001): New
Paul Eggert <eggert@cs.ucla.edu>
parents:
diff changeset
41 [gl_cv_sys_struct_timeval=yes],
b7a83a69ac23 * MODULES.html.sh (Support for systems lacking POSIX:2001): New
Paul Eggert <eggert@cs.ucla.edu>
parents:
diff changeset
42 [gl_cv_sys_struct_timeval=no])])
b7a83a69ac23 * MODULES.html.sh (Support for systems lacking POSIX:2001): New
Paul Eggert <eggert@cs.ucla.edu>
parents:
diff changeset
43 if test $gl_cv_sys_struct_timeval = yes; then
b7a83a69ac23 * MODULES.html.sh (Support for systems lacking POSIX:2001): New
Paul Eggert <eggert@cs.ucla.edu>
parents:
diff changeset
44 HAVE_STRUCT_TIMEVAL=1
b7a83a69ac23 * MODULES.html.sh (Support for systems lacking POSIX:2001): New
Paul Eggert <eggert@cs.ucla.edu>
parents:
diff changeset
45 else
b7a83a69ac23 * MODULES.html.sh (Support for systems lacking POSIX:2001): New
Paul Eggert <eggert@cs.ucla.edu>
parents:
diff changeset
46 HAVE_STRUCT_TIMEVAL=0
b7a83a69ac23 * MODULES.html.sh (Support for systems lacking POSIX:2001): New
Paul Eggert <eggert@cs.ucla.edu>
parents:
diff changeset
47 fi
b7a83a69ac23 * MODULES.html.sh (Support for systems lacking POSIX:2001): New
Paul Eggert <eggert@cs.ucla.edu>
parents:
diff changeset
48 AC_SUBST([HAVE_STRUCT_TIMEVAL])
b7a83a69ac23 * MODULES.html.sh (Support for systems lacking POSIX:2001): New
Paul Eggert <eggert@cs.ucla.edu>
parents:
diff changeset
49
b7a83a69ac23 * MODULES.html.sh (Support for systems lacking POSIX:2001): New
Paul Eggert <eggert@cs.ucla.edu>
parents:
diff changeset
50 dnl Assume POSIX behavior unless another module says otherwise.
8337
039bedae1345 Rename GETTIMEOFDAY_REPLACEMENT to REPLACE_GETTIMEOFDAY.
Bruno Haible <bruno@clisp.org>
parents: 8043
diff changeset
51 REPLACE_GETTIMEOFDAY=0
039bedae1345 Rename GETTIMEOFDAY_REPLACEMENT to REPLACE_GETTIMEOFDAY.
Bruno Haible <bruno@clisp.org>
parents: 8043
diff changeset
52 AC_SUBST([REPLACE_GETTIMEOFDAY])
8043
d12a7f6db481 * modules/sys_time (Makefile.am): Build sys/time.h only when it's the
Jim Meyering <jim@meyering.net>
parents: 7903
diff changeset
53 if test $HAVE_SYS_TIME_H = 0 || test $HAVE_STRUCT_TIMEVAL = 0; then
d12a7f6db481 * modules/sys_time (Makefile.am): Build sys/time.h only when it's the
Jim Meyering <jim@meyering.net>
parents: 7903
diff changeset
54 SYS_TIME_H=sys/time.h
d12a7f6db481 * modules/sys_time (Makefile.am): Build sys/time.h only when it's the
Jim Meyering <jim@meyering.net>
parents: 7903
diff changeset
55 else
d12a7f6db481 * modules/sys_time (Makefile.am): Build sys/time.h only when it's the
Jim Meyering <jim@meyering.net>
parents: 7903
diff changeset
56 SYS_TIME_H=
d12a7f6db481 * modules/sys_time (Makefile.am): Build sys/time.h only when it's the
Jim Meyering <jim@meyering.net>
parents: 7903
diff changeset
57 fi
d12a7f6db481 * modules/sys_time (Makefile.am): Build sys/time.h only when it's the
Jim Meyering <jim@meyering.net>
parents: 7903
diff changeset
58 AC_SUBST([SYS_TIME_H])
7897
b7a83a69ac23 * MODULES.html.sh (Support for systems lacking POSIX:2001): New
Paul Eggert <eggert@cs.ucla.edu>
parents:
diff changeset
59 ])