(jm_MACROS): Add stdint.h to the list of headers.
[gnulib.git] / m4 / jm-macros.m4
1 #serial 28   -*- autoconf -*-
2
3 dnl Misc type-related macros for fileutils, sh-utils, textutils.
4
5 AC_DEFUN(jm_MACROS,
6 [
7   AC_PREREQ(2.14a)
8
9   GNU_PACKAGE="GNU $PACKAGE"
10   AC_DEFINE_UNQUOTED(GNU_PACKAGE, "$GNU_PACKAGE",
11     [The concatenation of the strings `GNU ', and PACKAGE.])
12   AC_SUBST(GNU_PACKAGE)
13
14   AC_SUBST(OPTIONAL_BIN_PROGS)
15   AC_SUBST(OPTIONAL_BIN_ZCRIPTS)
16   AC_SUBST(MAN)
17   AC_SUBST(DF_PROG)
18
19   dnl This macro actually runs replacement code.  See isc-posix.m4.
20   AC_REQUIRE([AC_ISC_POSIX])dnl
21
22   AC_CHECK_HEADERS( \
23     errno.h  \
24     fcntl.h \
25     fenv.h \
26     float.h \
27     limits.h \
28     memory.h \
29     mntent.h \
30     mnttab.h \
31     netdb.h \
32     paths.h \
33     stdlib.h \
34     stddef.h \
35     stdint.h \
36     string.h \
37     sys/acl.h \
38     sys/filsys.h \
39     sys/fs/s5param.h \
40     sys/fs_types.h \
41     sys/fstyp.h \
42     sys/ioctl.h \
43     sys/mntent.h \
44     sys/mount.h \
45     sys/param.h \
46     sys/socket.h \
47     sys/statfs.h \
48     sys/statvfs.h \
49     sys/systeminfo.h \
50     sys/time.h \
51     sys/timeb.h \
52     sys/vfs.h \
53     sys/wait.h \
54     syslog.h \
55     termios.h \
56     unistd.h \
57     utime.h \
58     values.h \
59   )
60
61   jm_INCLUDED_REGEX([lib/regex.c])
62
63   AC_REQUIRE([jm_BISON])
64   AC_REQUIRE([jm_ASSERT])
65   AC_REQUIRE([jm_AC_HEADER_INTTYPES_H])
66   AC_REQUIRE([jm_CHECK_TYPE_STRUCT_UTIMBUF])
67   AC_REQUIRE([jm_CHECK_TYPE_STRUCT_DIRENT_D_TYPE])
68   AC_REQUIRE([jm_CHECK_TYPE_STRUCT_DIRENT_D_INO])
69   AC_REQUIRE([jm_CHECK_DECLS])
70
71   AC_REQUIRE([jm_PREREQ])
72
73   AC_REQUIRE([jm_FUNC_LCHOWN])
74   AC_REQUIRE([fetish_FUNC_RMDIR_NOTEMPTY])
75   AC_REQUIRE([jm_FUNC_CHOWN])
76   AC_REQUIRE([jm_FUNC_MKTIME])
77   AC_REQUIRE([jm_FUNC_LSTAT])
78   AC_REQUIRE([AC_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK])
79   AC_REQUIRE([jm_FUNC_STAT])
80   AC_REQUIRE([jm_FUNC_REALLOC])
81   AC_REQUIRE([jm_FUNC_MALLOC])
82   AC_REQUIRE([AC_FUNC_STRERROR_R])
83   AC_REQUIRE([jm_FUNC_NANOSLEEP])
84   AC_REQUIRE([jm_FUNC_READDIR])
85   AC_REQUIRE([jm_FUNC_MEMCMP])
86   AC_REQUIRE([jm_FUNC_GLIBC_UNLOCKED_IO])
87   AC_REQUIRE([jm_FUNC_FNMATCH])
88   AC_REQUIRE([jm_FUNC_GROUP_MEMBER])
89   AC_REQUIRE([jm_FUNC_PUTENV])
90   AC_REQUIRE([jm_AFS])
91   AC_REQUIRE([jm_AC_PREREQ_XSTRTOUMAX])
92   AC_REQUIRE([jm_AC_FUNC_LINK_FOLLOWS_SYMLINK])
93   AC_REQUIRE([AM_FUNC_ERROR_AT_LINE])
94   AC_REQUIRE([jm_FUNC_GNU_STRFTIME])
95   AC_REQUIRE([jm_FUNC_MKTIME])
96   AC_REQUIRE([jm_FUNC_FPENDING])
97
98   AC_REQUIRE([jm_FUNC_GETGROUPS])
99   test -n "$GETGROUPS_LIB" && LIBS="$GETGROUPS_LIB $LIBS"
100
101   AC_REQUIRE([AC_FUNC_VPRINTF])
102   AC_REQUIRE([AC_FUNC_ALLOCA])
103   AC_FUNC_GETLOADAVG([lib])
104   AC_REQUIRE([jm_SYS_PROC_UPTIME])
105   AC_REQUIRE([jm_FUNC_FTRUNCATE])
106
107   AC_REPLACE_FUNCS(strcasecmp strncasecmp)
108   AC_REPLACE_FUNCS(dup2)
109   AC_REPLACE_FUNCS(gethostname getusershell)
110   AC_REPLACE_FUNCS(stime strcspn stpcpy strstr strtol strtoul)
111   AC_REPLACE_FUNCS(strpbrk)
112   AC_REPLACE_FUNCS(euidaccess memcmp rmdir rpmatch strndup strverscmp)
113   AC_REPLACE_FUNCS(atexit)
114   AC_REPLACE_FUNCS(strnlen)
115   AC_REPLACE_FUNCS(getpass)
116
117   dnl used by e.g. intl/*domain.c and lib/canon-host.c
118   AC_REPLACE_FUNCS(strdup)
119
120   AC_REPLACE_FUNCS(memchr memcpy memmove memrchr memset)
121   AC_CHECK_FUNCS(getpagesize)
122
123   # By default, argmatch should fail calling usage (1).
124   AC_DEFINE(ARGMATCH_DIE, [usage (1)],
125             [Define to the function xargmatch calls on failures.])
126   AC_DEFINE(ARGMATCH_DIE_DECL, [extern void usage ()],
127             [Define to the declaration of the xargmatch failure function.])
128
129   dnl Used to define SETVBUF in sys2.h.
130   dnl This evokes the following warning from autoconf:
131   dnl ...: warning: AC_TRY_RUN called without default to allow cross compiling
132   AC_FUNC_SETVBUF_REVERSED
133
134   # used by sleep and shred
135   # Solaris 2.5.1 needs -lposix4 to get the clock_gettime function.
136   # Solaris 7 prefers the library name -lrt to the obsolescent name -lposix4.
137
138   # Save and restore LIBS so e.g., -lrt, isn't added to it.  Otherwise, *all*
139   # programs in the package would end up linked with that potentially-shared
140   # library, inducing unnecessary run-time overhead.
141   fetish_saved_libs=$LIBS
142     AC_SEARCH_LIBS(clock_gettime, [rt posix4],
143                    [LIB_CLOCK_GETTIME=$ac_cv_search_clock_gettime])
144     AC_SUBST(LIB_CLOCK_GETTIME)
145     AC_CHECK_FUNCS(clock_gettime)
146   LIBS=$fetish_saved_libs
147   AC_CHECK_FUNCS(gettimeofday)
148
149   AC_REQUIRE([AC_FUNC_CLOSEDIR_VOID])
150   AC_REQUIRE([jm_FUNC_UTIME])
151
152   AC_CHECK_FUNCS( \
153     acl \
154     bcopy \
155     endgrent \
156     endpwent \
157     fchdir \
158     fdatasync \
159     fseeko \
160     ftime \
161     ftruncate \
162     getcwd \
163     gethrtime \
164     getmntinfo \
165     hasmntopt \
166     isascii \
167     lchown \
168     listmntent \
169     localeconv \
170     memcpy \
171     mempcpy \
172     mkfifo \
173     realpath \
174     resolvepath \
175     sethostname \
176     strchr \
177     strerror \
178     strrchr \
179     sysinfo \
180     wcrtomb \
181     tzset \
182   )
183
184   AM_FUNC_GETLINE
185   if test $am_cv_func_working_getline != yes; then
186     AC_CHECK_FUNCS(getdelim)
187   fi
188   AM_FUNC_OBSTACK
189
190   AM_FUNC_STRTOD
191   AC_SUBST(POW_LIBM)
192   test $am_cv_func_strtod_needs_libm = yes && POW_LIBM=-lm
193
194   # See if linking `seq' requires -lm.
195   # It does on nearly every system.  The single exception (so far) is
196   # BeOS which has all the math functions in the normal runtime library
197   # and doesn't have a separate math library.
198
199   AC_SUBST(SEQ_LIBM)
200   ac_seq_body='
201      static double x, y;
202      x = floor (x);
203      x = rint (x);
204      x = modf (x, &y);'
205   AC_TRY_LINK([#include <math.h>], $ac_seq_body, ,
206     [ac_seq_save_LIBS="$LIBS"
207      LIBS="$LIBS -lm"
208      AC_TRY_LINK([#include <math.h>], $ac_seq_body, SEQ_LIBM=-lm)
209      LIBS="$ac_seq_save_LIBS"
210     ])
211
212   jm_LANGINFO_CODESET
213   jm_GLIBC21
214   jm_ICONV
215   jm_FUNC_UNLINK_BUSY_TEXT
216
217   # These tests are for df.
218   jm_LIST_MOUNTED_FILESYSTEMS([list_mounted_fs=yes], [list_mounted_fs=no])
219   jm_FSTYPENAME
220   jm_FILE_SYSTEM_USAGE([space=yes], [space=no])
221   if test $list_mounted_fs = yes && test $space = yes; then
222     DF_PROG="df"
223     AC_LIBOBJ(fsusage)
224     AC_LIBOBJ(mountlist)
225   fi
226
227 ])
228
229 # This macro must be invoked before any tests that run the compiler.
230 AC_DEFUN(jm_CHECK_ALL_TYPES,
231 [
232   # FIXME: I shouldn't have to require this macro here.  Rather, it should
233   # be required by any autoconf macro that performs a compile-time test or
234   # otherwise uses confdefs.h.
235   AC_REQUIRE([AC__GNU_SOURCE])
236
237   dnl This test must come as early as possible after the compiler configuration
238   dnl tests, because the choice of the file model can (in principle) affect
239   dnl whether functions and headers are available, whether they work, etc.
240   AC_REQUIRE([AC_SYS_LARGEFILE])
241
242   dnl This test must precede tests of compiler characteristics like
243   dnl that for the inline keyword, since it may change the degree to
244   dnl which the compiler supports such features.
245   AC_REQUIRE([AM_C_PROTOTYPES])
246
247   dnl Checks for typedefs, structures, and compiler characteristics.
248   AC_REQUIRE([AC_C_BIGENDIAN])
249   AC_REQUIRE([AC_PROG_CC_STDC])
250   AC_REQUIRE([AC_C_CONST])
251   AC_REQUIRE([AC_C_VOLATILE])
252   AC_REQUIRE([AC_C_INLINE])
253   AC_REQUIRE([AC_C_LONG_DOUBLE])
254
255   AC_REQUIRE([AC_HEADER_DIRENT])
256   AC_REQUIRE([AC_HEADER_STDC])
257   AC_CHECK_MEMBERS([struct stat.st_blksize],,,[$ac_includes_default
258 #include <sys/stat.h>
259   ])
260   AC_REQUIRE([AC_STRUCT_ST_BLOCKS])
261
262   AC_REQUIRE([AC_STRUCT_TM])
263   AC_REQUIRE([AC_STRUCT_TIMEZONE])
264   AC_REQUIRE([AC_HEADER_STAT])
265   AC_REQUIRE([AC_STRUCT_ST_MTIM_NSEC])
266   AC_REQUIRE([AC_STRUCT_ST_DM_MODE])
267   AC_REQUIRE([jm_CHECK_TYPE_STRUCT_TIMESPEC])
268
269   AC_REQUIRE([AC_TYPE_GETGROUPS])
270   AC_REQUIRE([AC_TYPE_MODE_T])
271   AC_REQUIRE([AC_TYPE_OFF_T])
272   AC_REQUIRE([AC_TYPE_PID_T])
273   AC_REQUIRE([AC_TYPE_SIGNAL])
274   AC_REQUIRE([AC_TYPE_SIZE_T])
275   AC_REQUIRE([AC_TYPE_UID_T])
276   AC_CHECK_TYPE(ino_t, unsigned long)
277
278   dnl This relies on the fact that autoconf 2.14a's implementation of
279   dnl AC_CHECK_TYPE checks includes unistd.h.
280   AC_CHECK_TYPE(ssize_t, int)
281
282   AC_REQUIRE([jm_AC_TYPE_UINTMAX_T])
283   AC_REQUIRE([jm_AC_TYPE_UNSIGNED_LONG_LONG])
284
285   AC_REQUIRE([AC_HEADER_MAJOR])
286   AC_REQUIRE([AC_HEADER_DIRENT])
287
288 ])