annotate aclocal.m4 @ 33506:ba79891b1cd5

*** empty log message ***
author Eli Zaretskii <eliz@gnu.org>
date Wed, 15 Nov 2000 17:54:40 +0000
parents b7463306b3ac
children 14bff16f1d37
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
27939
e931b73f3b4f *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1 dnl The following are from prerelease autoconf 2.14a. When 2.14 is
28583
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
2 dnl released, we should be able to zap them and just use AC_PREREQ(2.14).
27939
e931b73f3b4f *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
3
29901
56407d559c03 Define the post-2.13 stuff conditionally on autoconf version.
Dave Love <fx@gnu.org>
parents: 29404
diff changeset
4 ifelse(_AC_VERSION_COMPARE(AC_ACVERSION, [2.14]), -1,
27939
e931b73f3b4f *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
5
e931b73f3b4f *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
6 # AC_PROG_CC_STDC
e931b73f3b4f *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
7 # ---------------
e931b73f3b4f *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
8 # If the C compiler in not in ANSI C mode by default, try to add an
e931b73f3b4f *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
9 # option to output variable @code{CC} to make it so. This macro tries
e931b73f3b4f *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
10 # various options that select ANSI C on some system or another. It
e931b73f3b4f *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
11 # considers the compiler to be in ANSI C mode if it handles function
e931b73f3b4f *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
12 # prototypes correctly.
e931b73f3b4f *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
13 AC_DEFUN(AC_PROG_CC_STDC,
e931b73f3b4f *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
14 [AC_REQUIRE([AC_PROG_CC])dnl
e931b73f3b4f *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
15 AC_BEFORE([$0], [AC_C_INLINE])dnl
e931b73f3b4f *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
16 AC_BEFORE([$0], [AC_C_CONST])dnl
e931b73f3b4f *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
17 dnl Force this before AC_PROG_CPP. Some cpp's, eg on HPUX, require
e931b73f3b4f *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
18 dnl a magic option to avoid problems with ANSI preprocessor commands
e931b73f3b4f *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
19 dnl like #elif.
e931b73f3b4f *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
20 dnl FIXME: can't do this because then AC_AIX won't work due to a
e931b73f3b4f *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
21 dnl circular dependency.
e931b73f3b4f *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
22 dnl AC_BEFORE([$0], [AC_PROG_CPP])
e931b73f3b4f *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
23 AC_MSG_CHECKING(for ${CC-cc} option to accept ANSI C)
e931b73f3b4f *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
24 AC_CACHE_VAL(ac_cv_prog_cc_stdc,
e931b73f3b4f *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
25 [ac_cv_prog_cc_stdc=no
e931b73f3b4f *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
26 ac_save_CC="$CC"
e931b73f3b4f *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
27 # Don't try gcc -ansi; that turns off useful extensions and
e931b73f3b4f *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
28 # breaks some systems' header files.
e931b73f3b4f *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
29 # AIX -qlanglvl=ansi
e931b73f3b4f *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
30 # Ultrix and OSF/1 -std1
e931b73f3b4f *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
31 # HP-UX 10.20 and later -Ae
e931b73f3b4f *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
32 # HP-UX older versions -Aa -D_HPUX_SOURCE
e931b73f3b4f *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
33 # SVR4 -Xc -D__EXTENSIONS__
e931b73f3b4f *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
34 for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
e931b73f3b4f *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
35 do
e931b73f3b4f *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
36 CC="$ac_save_CC $ac_arg"
e931b73f3b4f *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
37 AC_TRY_COMPILE(
e931b73f3b4f *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
38 [#include <stdarg.h>
e931b73f3b4f *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
39 #include <stdio.h>
e931b73f3b4f *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
40 #include <sys/types.h>
e931b73f3b4f *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
41 #include <sys/stat.h>
e931b73f3b4f *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
42 /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */
e931b73f3b4f *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
43 struct buf { int x; };
e931b73f3b4f *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
44 FILE * (*rcsopen) (struct buf *, struct stat *, int);
e931b73f3b4f *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
45 static char *e (p, i)
e931b73f3b4f *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
46 char **p;
e931b73f3b4f *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
47 int i;
e931b73f3b4f *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
48 {
e931b73f3b4f *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
49 return p[i];
e931b73f3b4f *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
50 }
e931b73f3b4f *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
51 static char *f (char * (*g) (char **, int), char **p, ...)
e931b73f3b4f *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
52 {
e931b73f3b4f *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
53 char *s;
e931b73f3b4f *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
54 va_list v;
e931b73f3b4f *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
55 va_start (v,p);
e931b73f3b4f *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
56 s = g (p, va_arg (v,int));
e931b73f3b4f *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
57 va_end (v);
e931b73f3b4f *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
58 return s;
e931b73f3b4f *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
59 }
e931b73f3b4f *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
60 int test (int i, double x);
e931b73f3b4f *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
61 struct s1 {int (*f) (int a);};
e931b73f3b4f *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
62 struct s2 {int (*f) (double a);};
e931b73f3b4f *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
63 int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
e931b73f3b4f *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
64 int argc;
e931b73f3b4f *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
65 char **argv;],
e931b73f3b4f *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
66 [return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1];],
e931b73f3b4f *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
67 [ac_cv_prog_cc_stdc="$ac_arg"; break])
e931b73f3b4f *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
68 done
e931b73f3b4f *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
69 CC="$ac_save_CC"
e931b73f3b4f *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
70 ])
e931b73f3b4f *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
71 case "x$ac_cv_prog_cc_stdc" in
e931b73f3b4f *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
72 x|xno)
e931b73f3b4f *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
73 AC_MSG_RESULT([none needed]) ;;
e931b73f3b4f *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
74 *)
e931b73f3b4f *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
75 AC_MSG_RESULT($ac_cv_prog_cc_stdc)
e931b73f3b4f *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
76 CC="$CC $ac_cv_prog_cc_stdc" ;;
e931b73f3b4f *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
77 esac
e931b73f3b4f *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
78 ])# AC_PROG_CC_STDC
e931b73f3b4f *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
79
28583
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
80 # AC_FUNC_MKTIME
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
81 # --------------
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
82 AC_DEFUN(AC_FUNC_MKTIME,
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
83 [AC_REQUIRE([AC_HEADER_TIME])dnl
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
84 AC_CHECK_HEADERS(sys/time.h unistd.h)
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
85 AC_CHECK_FUNCS(alarm)
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
86 AC_CACHE_CHECK([for working mktime], ac_cv_func_working_mktime,
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
87 [AC_TRY_RUN(
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
88 [/* Test program from Paul Eggert (eggert@twinsun.com)
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
89 and Tony Leneis (tony@plaza.ds.adp.com). */
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
90 #if TIME_WITH_SYS_TIME
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
91 # include <sys/time.h>
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
92 # include <time.h>
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
93 #else
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
94 # if HAVE_SYS_TIME_H
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
95 # include <sys/time.h>
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
96 # else
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
97 # include <time.h>
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
98 # endif
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
99 #endif
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
100
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
101 #if HAVE_UNISTD_H
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
102 # include <unistd.h>
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
103 #endif
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
104
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
105 #if !HAVE_ALARM
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
106 # define alarm(X) /* empty */
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
107 #endif
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
108
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
109 /* Work around redefinition to rpl_putenv by other config tests. */
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
110 #undef putenv
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
111
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
112 static time_t time_t_max;
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
113
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
114 /* Values we'll use to set the TZ environment variable. */
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
115 static const char *const tz_strings[] = {
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
116 (const char *) 0, "TZ=GMT0", "TZ=JST-9",
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
117 "TZ=EST+3EDT+2,M10.1.0/00:00:00,M2.3.0/00:00:00"
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
118 };
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
119 #define N_STRINGS (sizeof (tz_strings) / sizeof (tz_strings[0]))
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
120
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
121 /* Fail if mktime fails to convert a date in the spring-forward gap.
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
122 Based on a problem report from Andreas Jaeger. */
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
123 static void
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
124 spring_forward_gap ()
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
125 {
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
126 /* glibc (up to about 1998-10-07) failed this test) */
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
127 struct tm tm;
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
128
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
129 /* Use the portable POSIX.1 specification "TZ=PST8PDT,M4.1.0,M10.5.0"
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
130 instead of "TZ=America/Vancouver" in order to detect the bug even
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
131 on systems that don't support the Olson extension, or don't have the
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
132 full zoneinfo tables installed. */
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
133 putenv ("TZ=PST8PDT,M4.1.0,M10.5.0");
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
134
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
135 tm.tm_year = 98;
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
136 tm.tm_mon = 3;
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
137 tm.tm_mday = 5;
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
138 tm.tm_hour = 2;
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
139 tm.tm_min = 0;
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
140 tm.tm_sec = 0;
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
141 tm.tm_isdst = -1;
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
142 if (mktime (&tm) == (time_t)-1)
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
143 exit (1);
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
144 }
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
145
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
146 static void
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
147 mktime_test (now)
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
148 time_t now;
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
149 {
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
150 struct tm *lt;
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
151 if ((lt = localtime (&now)) && mktime (lt) != now)
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
152 exit (1);
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
153 now = time_t_max - now;
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
154 if ((lt = localtime (&now)) && mktime (lt) != now)
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
155 exit (1);
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
156 }
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
157
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
158 static void
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
159 irix_6_4_bug ()
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
160 {
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
161 /* Based on code from Ariel Faigon. */
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
162 struct tm tm;
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
163 tm.tm_year = 96;
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
164 tm.tm_mon = 3;
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
165 tm.tm_mday = 0;
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
166 tm.tm_hour = 0;
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
167 tm.tm_min = 0;
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
168 tm.tm_sec = 0;
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
169 tm.tm_isdst = -1;
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
170 mktime (&tm);
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
171 if (tm.tm_mon != 2 || tm.tm_mday != 31)
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
172 exit (1);
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
173 }
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
174
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
175 static void
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
176 bigtime_test (j)
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
177 int j;
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
178 {
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
179 struct tm tm;
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
180 time_t now;
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
181 tm.tm_year = tm.tm_mon = tm.tm_mday = tm.tm_hour = tm.tm_min = tm.tm_sec = j;
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
182 now = mktime (&tm);
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
183 if (now != (time_t) -1)
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
184 {
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
185 struct tm *lt = localtime (&now);
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
186 if (! (lt
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
187 && lt->tm_year == tm.tm_year
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
188 && lt->tm_mon == tm.tm_mon
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
189 && lt->tm_mday == tm.tm_mday
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
190 && lt->tm_hour == tm.tm_hour
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
191 && lt->tm_min == tm.tm_min
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
192 && lt->tm_sec == tm.tm_sec
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
193 && lt->tm_yday == tm.tm_yday
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
194 && lt->tm_wday == tm.tm_wday
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
195 && ((lt->tm_isdst < 0 ? -1 : 0 < lt->tm_isdst)
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
196 == (tm.tm_isdst < 0 ? -1 : 0 < tm.tm_isdst))))
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
197 exit (1);
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
198 }
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
199 }
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
200
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
201 int
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
202 main ()
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
203 {
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
204 time_t t, delta;
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
205 int i, j;
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
206
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
207 /* This test makes some buggy mktime implementations loop.
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
208 Give up after 60 seconds; a mktime slower than that
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
209 isn't worth using anyway. */
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
210 alarm (60);
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
211
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
212 for (time_t_max = 1; 0 < time_t_max; time_t_max *= 2)
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
213 continue;
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
214 time_t_max--;
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
215 delta = time_t_max / 997; /* a suitable prime number */
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
216 for (i = 0; i < N_STRINGS; i++)
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
217 {
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
218 if (tz_strings[i])
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
219 putenv (tz_strings[i]);
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
220
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
221 for (t = 0; t <= time_t_max - delta; t += delta)
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
222 mktime_test (t);
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
223 mktime_test ((time_t) 60 * 60);
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
224 mktime_test ((time_t) 60 * 60 * 24);
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
225
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
226 for (j = 1; 0 < j; j *= 2)
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
227 bigtime_test (j);
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
228 bigtime_test (j - 1);
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
229 }
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
230 irix_6_4_bug ();
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
231 spring_forward_gap ();
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
232 exit (0);
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
233 }],
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
234 ac_cv_func_working_mktime=yes, ac_cv_func_working_mktime=no,
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
235 ac_cv_func_working_mktime=no)])
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
236 if test $ac_cv_func_working_mktime = no; then
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
237 LIBOBJS="$LIBOBJS mktime.${ac_objext}"
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
238 fi
28638
235bba09bd4c (AC_FUNC_MKTIME): Use AC_SUBST.
Dave Love <fx@gnu.org>
parents: 28583
diff changeset
239 AC_SUBST(LIBOBJS)dnl
28583
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
240 ])# AC_FUNC_MKTIME
0c4dc9f274f0 (AC_FUNC_MKTIME): New.
Dave Love <fx@gnu.org>
parents: 27939
diff changeset
241
27939
e931b73f3b4f *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
242 # AC_C_VOLATILE
e931b73f3b4f *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
243 # -------------
e931b73f3b4f *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
244 # Note that, unlike const, #defining volatile to be the empty string can
e931b73f3b4f *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
245 # actually turn a correct program into an incorrect one, since removing
e931b73f3b4f *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
246 # uses of volatile actually grants the compiler permission to perform
e931b73f3b4f *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
247 # optimizations that could break the user's code. So, do not #define
e931b73f3b4f *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
248 # volatile away unless it is really necessary to allow the user's code
e931b73f3b4f *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
249 # to compile cleanly. Benign compiler failures should be tolerated.
e931b73f3b4f *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
250 AC_DEFUN(AC_C_VOLATILE,
e931b73f3b4f *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
251 [AC_REQUIRE([AC_PROG_CC_STDC])dnl
e931b73f3b4f *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
252 AC_CACHE_CHECK([for working volatile], ac_cv_c_volatile,
e931b73f3b4f *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
253 [AC_TRY_COMPILE(,[
e931b73f3b4f *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
254 volatile int x;
e931b73f3b4f *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
255 int * volatile y;],
e931b73f3b4f *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
256 ac_cv_c_volatile=yes, ac_cv_c_volatile=no)])
e931b73f3b4f *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
257 if test $ac_cv_c_volatile = no; then
e931b73f3b4f *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
258 AC_DEFINE(volatile,,
e931b73f3b4f *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
259 [Define to empty if the keyword `volatile' does not work.
e931b73f3b4f *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
260 Warning: valid code using `volatile' can become incorrect
e931b73f3b4f *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
261 without. Disable with care.])
e931b73f3b4f *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
262 fi
e931b73f3b4f *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
263 ])
e931b73f3b4f *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
264
e931b73f3b4f *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
265 # AC_C_PROTOTYPES
e931b73f3b4f *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
266 # ---------------
e931b73f3b4f *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
267 # Check if the C compiler supports prototypes, included if it needs
e931b73f3b4f *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
268 # options.
e931b73f3b4f *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
269 AC_DEFUN(AC_C_PROTOTYPES,
e931b73f3b4f *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
270 [AC_REQUIRE([AC_PROG_CC_STDC])dnl
e931b73f3b4f *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
271 AC_REQUIRE([AC_PROG_CPP])dnl
e931b73f3b4f *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
272 AC_MSG_CHECKING([for function prototypes])
e931b73f3b4f *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
273 if test "$ac_cv_prog_cc_stdc" != no; then
e931b73f3b4f *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
274 AC_MSG_RESULT(yes)
e931b73f3b4f *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
275 AC_DEFINE(PROTOTYPES, 1,
e931b73f3b4f *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
276 [Define if the compiler supports function prototypes.])
e931b73f3b4f *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
277 else
e931b73f3b4f *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
278 AC_MSG_RESULT(no)
e931b73f3b4f *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
279 fi
e931b73f3b4f *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
280 ])# AC_C_PROTOTYPES
29384
f97066fb42ae (AC_SYS_LARGEFILE_TEST_INCLUDES)
Dave Love <fx@gnu.org>
parents: 28638
diff changeset
281
29901
56407d559c03 Define the post-2.13 stuff conditionally on autoconf version.
Dave Love <fx@gnu.org>
parents: 29404
diff changeset
282 dnl The following is a bit different from the prerelease autoconf at
56407d559c03 Define the post-2.13 stuff conditionally on autoconf version.
Dave Love <fx@gnu.org>
parents: 29404
diff changeset
283 dnl this time since that requires extra definitions.
29404
5b490e305c65 comment
Dave Love <fx@gnu.org>
parents: 29384
diff changeset
284
29384
f97066fb42ae (AC_SYS_LARGEFILE_TEST_INCLUDES)
Dave Love <fx@gnu.org>
parents: 28638
diff changeset
285 dnl By default, many hosts won't let programs access large files;
f97066fb42ae (AC_SYS_LARGEFILE_TEST_INCLUDES)
Dave Love <fx@gnu.org>
parents: 28638
diff changeset
286 dnl one must use special compiler options to get large-file access to work.
f97066fb42ae (AC_SYS_LARGEFILE_TEST_INCLUDES)
Dave Love <fx@gnu.org>
parents: 28638
diff changeset
287 dnl For more details about this brain damage please see:
f97066fb42ae (AC_SYS_LARGEFILE_TEST_INCLUDES)
Dave Love <fx@gnu.org>
parents: 28638
diff changeset
288 dnl http://www.sas.com/standards/large.file/x_open.20Mar96.html
f97066fb42ae (AC_SYS_LARGEFILE_TEST_INCLUDES)
Dave Love <fx@gnu.org>
parents: 28638
diff changeset
289
f97066fb42ae (AC_SYS_LARGEFILE_TEST_INCLUDES)
Dave Love <fx@gnu.org>
parents: 28638
diff changeset
290 dnl Written by Paul Eggert <eggert@twinsun.com>.
f97066fb42ae (AC_SYS_LARGEFILE_TEST_INCLUDES)
Dave Love <fx@gnu.org>
parents: 28638
diff changeset
291
f97066fb42ae (AC_SYS_LARGEFILE_TEST_INCLUDES)
Dave Love <fx@gnu.org>
parents: 28638
diff changeset
292 dnl Internal subroutine of AC_SYS_LARGEFILE.
f97066fb42ae (AC_SYS_LARGEFILE_TEST_INCLUDES)
Dave Love <fx@gnu.org>
parents: 28638
diff changeset
293 dnl AC_SYS_LARGEFILE_TEST_INCLUDES
f97066fb42ae (AC_SYS_LARGEFILE_TEST_INCLUDES)
Dave Love <fx@gnu.org>
parents: 28638
diff changeset
294 AC_DEFUN(AC_SYS_LARGEFILE_TEST_INCLUDES,
f97066fb42ae (AC_SYS_LARGEFILE_TEST_INCLUDES)
Dave Love <fx@gnu.org>
parents: 28638
diff changeset
295 [[#include <sys/types.h>
f97066fb42ae (AC_SYS_LARGEFILE_TEST_INCLUDES)
Dave Love <fx@gnu.org>
parents: 28638
diff changeset
296 int a[(off_t) 9223372036854775807 == 9223372036854775807 ? 1 : -1];
f97066fb42ae (AC_SYS_LARGEFILE_TEST_INCLUDES)
Dave Love <fx@gnu.org>
parents: 28638
diff changeset
297 ]])
f97066fb42ae (AC_SYS_LARGEFILE_TEST_INCLUDES)
Dave Love <fx@gnu.org>
parents: 28638
diff changeset
298
f97066fb42ae (AC_SYS_LARGEFILE_TEST_INCLUDES)
Dave Love <fx@gnu.org>
parents: 28638
diff changeset
299 dnl Internal subroutine of AC_SYS_LARGEFILE.
f97066fb42ae (AC_SYS_LARGEFILE_TEST_INCLUDES)
Dave Love <fx@gnu.org>
parents: 28638
diff changeset
300 dnl AC_SYS_LARGEFILE_MACRO_VALUE(C-MACRO, VALUE, CACHE-VAR, COMMENT, INCLUDES, FUNCTION-BODY)
f97066fb42ae (AC_SYS_LARGEFILE_TEST_INCLUDES)
Dave Love <fx@gnu.org>
parents: 28638
diff changeset
301 AC_DEFUN(AC_SYS_LARGEFILE_MACRO_VALUE,
f97066fb42ae (AC_SYS_LARGEFILE_TEST_INCLUDES)
Dave Love <fx@gnu.org>
parents: 28638
diff changeset
302 [AC_CACHE_CHECK([for $1 value needed for large files], $3,
f97066fb42ae (AC_SYS_LARGEFILE_TEST_INCLUDES)
Dave Love <fx@gnu.org>
parents: 28638
diff changeset
303 [$3=no
f97066fb42ae (AC_SYS_LARGEFILE_TEST_INCLUDES)
Dave Love <fx@gnu.org>
parents: 28638
diff changeset
304 AC_TRY_COMPILE(AC_SYS_LARGEFILE_TEST_INCLUDES
f97066fb42ae (AC_SYS_LARGEFILE_TEST_INCLUDES)
Dave Love <fx@gnu.org>
parents: 28638
diff changeset
305 $5
f97066fb42ae (AC_SYS_LARGEFILE_TEST_INCLUDES)
Dave Love <fx@gnu.org>
parents: 28638
diff changeset
306 ,
f97066fb42ae (AC_SYS_LARGEFILE_TEST_INCLUDES)
Dave Love <fx@gnu.org>
parents: 28638
diff changeset
307 [$6],
f97066fb42ae (AC_SYS_LARGEFILE_TEST_INCLUDES)
Dave Love <fx@gnu.org>
parents: 28638
diff changeset
308 ,
f97066fb42ae (AC_SYS_LARGEFILE_TEST_INCLUDES)
Dave Love <fx@gnu.org>
parents: 28638
diff changeset
309 [AC_TRY_COMPILE([#define $1 $2]
f97066fb42ae (AC_SYS_LARGEFILE_TEST_INCLUDES)
Dave Love <fx@gnu.org>
parents: 28638
diff changeset
310 AC_SYS_LARGEFILE_TEST_INCLUDES
f97066fb42ae (AC_SYS_LARGEFILE_TEST_INCLUDES)
Dave Love <fx@gnu.org>
parents: 28638
diff changeset
311 $5
f97066fb42ae (AC_SYS_LARGEFILE_TEST_INCLUDES)
Dave Love <fx@gnu.org>
parents: 28638
diff changeset
312 ,
f97066fb42ae (AC_SYS_LARGEFILE_TEST_INCLUDES)
Dave Love <fx@gnu.org>
parents: 28638
diff changeset
313 [$6],
f97066fb42ae (AC_SYS_LARGEFILE_TEST_INCLUDES)
Dave Love <fx@gnu.org>
parents: 28638
diff changeset
314 [$3=$2])])])
f97066fb42ae (AC_SYS_LARGEFILE_TEST_INCLUDES)
Dave Love <fx@gnu.org>
parents: 28638
diff changeset
315 if test "[$]$3" != no; then
f97066fb42ae (AC_SYS_LARGEFILE_TEST_INCLUDES)
Dave Love <fx@gnu.org>
parents: 28638
diff changeset
316 AC_DEFINE_UNQUOTED([$1], [$]$3, [$4])
f97066fb42ae (AC_SYS_LARGEFILE_TEST_INCLUDES)
Dave Love <fx@gnu.org>
parents: 28638
diff changeset
317 fi])
f97066fb42ae (AC_SYS_LARGEFILE_TEST_INCLUDES)
Dave Love <fx@gnu.org>
parents: 28638
diff changeset
318
f97066fb42ae (AC_SYS_LARGEFILE_TEST_INCLUDES)
Dave Love <fx@gnu.org>
parents: 28638
diff changeset
319 AC_DEFUN(AC_SYS_LARGEFILE,
f97066fb42ae (AC_SYS_LARGEFILE_TEST_INCLUDES)
Dave Love <fx@gnu.org>
parents: 28638
diff changeset
320 [AC_ARG_ENABLE(largefile,
f97066fb42ae (AC_SYS_LARGEFILE_TEST_INCLUDES)
Dave Love <fx@gnu.org>
parents: 28638
diff changeset
321 [ --disable-largefile omit support for large files])
f97066fb42ae (AC_SYS_LARGEFILE_TEST_INCLUDES)
Dave Love <fx@gnu.org>
parents: 28638
diff changeset
322 if test "$enable_largefile" != no; then
f97066fb42ae (AC_SYS_LARGEFILE_TEST_INCLUDES)
Dave Love <fx@gnu.org>
parents: 28638
diff changeset
323
f97066fb42ae (AC_SYS_LARGEFILE_TEST_INCLUDES)
Dave Love <fx@gnu.org>
parents: 28638
diff changeset
324 AC_CACHE_CHECK([for special C compiler options needed for large files],
f97066fb42ae (AC_SYS_LARGEFILE_TEST_INCLUDES)
Dave Love <fx@gnu.org>
parents: 28638
diff changeset
325 ac_cv_sys_largefile_CC,
f97066fb42ae (AC_SYS_LARGEFILE_TEST_INCLUDES)
Dave Love <fx@gnu.org>
parents: 28638
diff changeset
326 [ac_cv_sys_largefile_CC=no
f97066fb42ae (AC_SYS_LARGEFILE_TEST_INCLUDES)
Dave Love <fx@gnu.org>
parents: 28638
diff changeset
327 if test "$GCC" != yes; then
f97066fb42ae (AC_SYS_LARGEFILE_TEST_INCLUDES)
Dave Love <fx@gnu.org>
parents: 28638
diff changeset
328 # IRIX 6.2 and later do not support large files by default,
f97066fb42ae (AC_SYS_LARGEFILE_TEST_INCLUDES)
Dave Love <fx@gnu.org>
parents: 28638
diff changeset
329 # so use the C compiler's -n32 option if that helps.
f97066fb42ae (AC_SYS_LARGEFILE_TEST_INCLUDES)
Dave Love <fx@gnu.org>
parents: 28638
diff changeset
330 AC_TRY_COMPILE(AC_SYS_LARGEFILE_TEST_INCLUDES, , ,
f97066fb42ae (AC_SYS_LARGEFILE_TEST_INCLUDES)
Dave Love <fx@gnu.org>
parents: 28638
diff changeset
331 [ac_save_CC="$CC"
f97066fb42ae (AC_SYS_LARGEFILE_TEST_INCLUDES)
Dave Love <fx@gnu.org>
parents: 28638
diff changeset
332 CC="$CC -n32"
f97066fb42ae (AC_SYS_LARGEFILE_TEST_INCLUDES)
Dave Love <fx@gnu.org>
parents: 28638
diff changeset
333 AC_TRY_COMPILE(AC_SYS_LARGEFILE_TEST_INCLUDES, ,
f97066fb42ae (AC_SYS_LARGEFILE_TEST_INCLUDES)
Dave Love <fx@gnu.org>
parents: 28638
diff changeset
334 ac_cv_sys_largefile_CC=' -n32')
f97066fb42ae (AC_SYS_LARGEFILE_TEST_INCLUDES)
Dave Love <fx@gnu.org>
parents: 28638
diff changeset
335 CC="$ac_save_CC"])
f97066fb42ae (AC_SYS_LARGEFILE_TEST_INCLUDES)
Dave Love <fx@gnu.org>
parents: 28638
diff changeset
336 fi])
f97066fb42ae (AC_SYS_LARGEFILE_TEST_INCLUDES)
Dave Love <fx@gnu.org>
parents: 28638
diff changeset
337 if test "$ac_cv_sys_largefile_CC" != no; then
f97066fb42ae (AC_SYS_LARGEFILE_TEST_INCLUDES)
Dave Love <fx@gnu.org>
parents: 28638
diff changeset
338 CC="$CC$ac_cv_sys_largefile_CC"
f97066fb42ae (AC_SYS_LARGEFILE_TEST_INCLUDES)
Dave Love <fx@gnu.org>
parents: 28638
diff changeset
339 fi
f97066fb42ae (AC_SYS_LARGEFILE_TEST_INCLUDES)
Dave Love <fx@gnu.org>
parents: 28638
diff changeset
340
f97066fb42ae (AC_SYS_LARGEFILE_TEST_INCLUDES)
Dave Love <fx@gnu.org>
parents: 28638
diff changeset
341 AC_SYS_LARGEFILE_MACRO_VALUE(_FILE_OFFSET_BITS, 64,
f97066fb42ae (AC_SYS_LARGEFILE_TEST_INCLUDES)
Dave Love <fx@gnu.org>
parents: 28638
diff changeset
342 ac_cv_sys_file_offset_bits,
f97066fb42ae (AC_SYS_LARGEFILE_TEST_INCLUDES)
Dave Love <fx@gnu.org>
parents: 28638
diff changeset
343 [Number of bits in a file offset, on hosts where this is settable.])
f97066fb42ae (AC_SYS_LARGEFILE_TEST_INCLUDES)
Dave Love <fx@gnu.org>
parents: 28638
diff changeset
344 AC_SYS_LARGEFILE_MACRO_VALUE(_LARGEFILE_SOURCE, 1,
f97066fb42ae (AC_SYS_LARGEFILE_TEST_INCLUDES)
Dave Love <fx@gnu.org>
parents: 28638
diff changeset
345 ac_cv_sys_largefile_source,
f97066fb42ae (AC_SYS_LARGEFILE_TEST_INCLUDES)
Dave Love <fx@gnu.org>
parents: 28638
diff changeset
346 [Define to make ftello visible on some hosts (e.g. HP-UX 10.20).],
f97066fb42ae (AC_SYS_LARGEFILE_TEST_INCLUDES)
Dave Love <fx@gnu.org>
parents: 28638
diff changeset
347 [#include <stdio.h>], [return !ftello;])
f97066fb42ae (AC_SYS_LARGEFILE_TEST_INCLUDES)
Dave Love <fx@gnu.org>
parents: 28638
diff changeset
348 AC_SYS_LARGEFILE_MACRO_VALUE(_LARGE_FILES, 1,
f97066fb42ae (AC_SYS_LARGEFILE_TEST_INCLUDES)
Dave Love <fx@gnu.org>
parents: 28638
diff changeset
349 ac_cv_sys_large_files,
f97066fb42ae (AC_SYS_LARGEFILE_TEST_INCLUDES)
Dave Love <fx@gnu.org>
parents: 28638
diff changeset
350 [Define for large files, on AIX-style hosts.])
f97066fb42ae (AC_SYS_LARGEFILE_TEST_INCLUDES)
Dave Love <fx@gnu.org>
parents: 28638
diff changeset
351 AC_SYS_LARGEFILE_MACRO_VALUE(_XOPEN_SOURCE, 500,
f97066fb42ae (AC_SYS_LARGEFILE_TEST_INCLUDES)
Dave Love <fx@gnu.org>
parents: 28638
diff changeset
352 ac_cv_sys_xopen_source,
f97066fb42ae (AC_SYS_LARGEFILE_TEST_INCLUDES)
Dave Love <fx@gnu.org>
parents: 28638
diff changeset
353 [Define to make ftello visible on some hosts (e.g. glibc 2.1.3).],
f97066fb42ae (AC_SYS_LARGEFILE_TEST_INCLUDES)
Dave Love <fx@gnu.org>
parents: 28638
diff changeset
354 [#include <stdio.h>], [return !ftello;])
f97066fb42ae (AC_SYS_LARGEFILE_TEST_INCLUDES)
Dave Love <fx@gnu.org>
parents: 28638
diff changeset
355 fi
f97066fb42ae (AC_SYS_LARGEFILE_TEST_INCLUDES)
Dave Love <fx@gnu.org>
parents: 28638
diff changeset
356 ])
29901
56407d559c03 Define the post-2.13 stuff conditionally on autoconf version.
Dave Love <fx@gnu.org>
parents: 29404
diff changeset
357
31511
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
358 undefine([AC_FUNC_MMAP])dnl
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
359 dnl The autoconf 2.13 version loses on OSF, at least,
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
360 dnl by messing up the declaration of malloc.
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
361 AC_DEFUN([AC_FUNC_MMAP],
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
362 [AC_CHECK_HEADERS(stdlib.h unistd.h sys/stat.h)
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
363 AC_CHECK_FUNCS(getpagesize)
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
364 AC_CACHE_CHECK(for working mmap, ac_cv_func_mmap_fixed_mapped,
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
365 [AC_TRY_RUN(
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
366 [/* Thanks to Mike Haertel and Jim Avera for this test.
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
367 Here is a matrix of mmap possibilities:
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
368 mmap private not fixed
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
369 mmap private fixed at somewhere currently unmapped
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
370 mmap private fixed at somewhere already mapped
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
371 mmap shared not fixed
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
372 mmap shared fixed at somewhere currently unmapped
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
373 mmap shared fixed at somewhere already mapped
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
374 For private mappings, we should verify that changes cannot be read()
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
375 back from the file, nor mmap's back from the file at a different
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
376 address. (There have been systems where private was not correctly
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
377 implemented like the infamous i386 svr4.0, and systems where the
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
378 VM page cache was not coherent with the file system buffer cache
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
379 like early versions of FreeBSD and possibly contemporary NetBSD.)
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
380 For shared mappings, we should conversely verify that changes get
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
381 propogated back to all the places they're supposed to be.
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
382
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
383 Grep wants private fixed already mapped.
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
384 The main things grep needs to know about mmap are:
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
385 * does it exist and is it safe to write into the mmap'd area
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
386 * how to use it (BSD variants) */
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
387 #include <sys/types.h>
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
388 #include <fcntl.h>
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
389 #include <sys/mman.h>
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
390
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
391 #if STDC_HEADERS || HAVE_STDLIB_H
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
392 # include <stdlib.h>
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
393 #else
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
394 char *malloc ();
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
395 #endif
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
396 #if HAVE_UNISTD_H
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
397 # include <unistd.h>
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
398 #endif
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
399 #if HAVE_SYS_STAT_H
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
400 # include <sys/stat.h>
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
401 #endif
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
402
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
403 /* This mess was copied from the GNU getpagesize.h. */
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
404 #if !HAVE_GETPAGESIZE
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
405 /* Assume that all systems that can run configure have sys/param.h. */
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
406 # if !HAVE_SYS_PARAM_H
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
407 # define HAVE_SYS_PARAM_H 1
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
408 # endif
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
409
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
410 # ifdef _SC_PAGESIZE
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
411 # define getpagesize() sysconf(_SC_PAGESIZE)
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
412 # else /* no _SC_PAGESIZE */
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
413 # if HAVE_SYS_PARAM_H
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
414 # include <sys/param.h>
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
415 # ifdef EXEC_PAGESIZE
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
416 # define getpagesize() EXEC_PAGESIZE
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
417 # else /* no EXEC_PAGESIZE */
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
418 # ifdef NBPG
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
419 # define getpagesize() NBPG * CLSIZE
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
420 # ifndef CLSIZE
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
421 # define CLSIZE 1
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
422 # endif /* no CLSIZE */
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
423 # else /* no NBPG */
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
424 # ifdef NBPC
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
425 # define getpagesize() NBPC
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
426 # else /* no NBPC */
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
427 # ifdef PAGESIZE
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
428 # define getpagesize() PAGESIZE
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
429 # endif /* PAGESIZE */
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
430 # endif /* no NBPC */
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
431 # endif /* no NBPG */
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
432 # endif /* no EXEC_PAGESIZE */
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
433 # else /* no HAVE_SYS_PARAM_H */
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
434 # define getpagesize() 8192 /* punt totally */
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
435 # endif /* no HAVE_SYS_PARAM_H */
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
436 # endif /* no _SC_PAGESIZE */
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
437
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
438 #endif /* no HAVE_GETPAGESIZE */
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
439
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
440 int
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
441 main ()
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
442 {
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
443 char *data, *data2, *data3;
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
444 int i, pagesize;
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
445 int fd;
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
446
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
447 pagesize = getpagesize ();
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
448
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
449 /* First, make a file with some known garbage in it. */
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
450 data = (char *) malloc (pagesize);
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
451 if (!data)
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
452 exit (1);
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
453 for (i = 0; i < pagesize; ++i)
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
454 *(data + i) = rand ();
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
455 umask (0);
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
456 fd = creat ("conftestmmap", 0600);
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
457 if (fd < 0)
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
458 exit (1);
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
459 if (write (fd, data, pagesize) != pagesize)
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
460 exit (1);
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
461 close (fd);
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
462
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
463 /* Next, try to mmap the file at a fixed address which already has
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
464 something else allocated at it. If we can, also make sure that
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
465 we see the same garbage. */
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
466 fd = open ("conftestmmap", O_RDWR);
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
467 if (fd < 0)
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
468 exit (1);
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
469 data2 = (char *) malloc (2 * pagesize);
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
470 if (!data2)
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
471 exit (1);
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
472 data2 += (pagesize - ((int) data2 & (pagesize - 1))) & (pagesize - 1);
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
473 if (data2 != mmap (data2, pagesize, PROT_READ | PROT_WRITE,
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
474 MAP_PRIVATE | MAP_FIXED, fd, 0L))
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
475 exit (1);
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
476 for (i = 0; i < pagesize; ++i)
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
477 if (*(data + i) != *(data2 + i))
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
478 exit (1);
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
479
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
480 /* Finally, make sure that changes to the mapped area do not
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
481 percolate back to the file as seen by read(). (This is a bug on
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
482 some variants of i386 svr4.0.) */
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
483 for (i = 0; i < pagesize; ++i)
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
484 *(data2 + i) = *(data2 + i) + 1;
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
485 data3 = (char *) malloc (pagesize);
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
486 if (!data3)
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
487 exit (1);
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
488 if (read (fd, data3, pagesize) != pagesize)
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
489 exit (1);
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
490 for (i = 0; i < pagesize; ++i)
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
491 if (*(data + i) != *(data3 + i))
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
492 exit (1);
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
493 close (fd);
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
494 unlink ("conftestmmap");
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
495 exit (0);
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
496 }], ac_cv_func_mmap_fixed_mapped=yes, ac_cv_func_mmap_fixed_mapped=no,
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
497 ac_cv_func_mmap_fixed_mapped=no)])
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
498 if test $ac_cv_func_mmap_fixed_mapped = yes; then
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
499 AC_DEFINE(HAVE_MMAP, 1,
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
500 [Define if you have a working `mmap' system call.])
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
501 fi
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
502 ])# AC_FUNC_MMAP
b7463306b3ac (AC_FUNC_MMAP): Use fixed version from development
Dave Love <fx@gnu.org>
parents: 29901
diff changeset
503
29901
56407d559c03 Define the post-2.13 stuff conditionally on autoconf version.
Dave Love <fx@gnu.org>
parents: 29404
diff changeset
504 ) dnl ifelse