(jm_CHECK_ALL_TYPES) [_GNU_SOURCE]: Use the one-arg form
[gnulib.git] / m4 / jm-macros.m4
1 #serial 15
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     string.h \
36     sys/acl.h \
37     sys/filsys.h \
38     sys/fs/s5param.h \
39     sys/fs_types.h \
40     sys/fstyp.h \
41     sys/ioctl.h \
42     sys/mntent.h \
43     sys/mount.h \
44     sys/param.h \
45     sys/socket.h \
46     sys/statfs.h \
47     sys/statvfs.h \
48     sys/systeminfo.h \
49     sys/time.h \
50     sys/timeb.h \
51     sys/vfs.h \
52     sys/wait.h \
53     syslog.h \
54     termios.h \
55     unistd.h \
56     utime.h \
57     values.h \
58   )
59
60   jm_INCLUDED_REGEX([lib/regex.c])
61
62   AC_REQUIRE([jm_BISON])
63   AC_REQUIRE([jm_ASSERT])
64   AC_REQUIRE([jm_AC_HEADER_INTTYPES_H])
65   AC_REQUIRE([jm_CHECK_TYPE_STRUCT_UTIMBUF])
66   AC_REQUIRE([jm_CHECK_TYPE_STRUCT_DIRENT_D_TYPE])
67   AC_REQUIRE([jm_CHECK_TYPE_STRUCT_DIRENT_D_INO])
68   AC_REQUIRE([jm_CHECK_DECLS])
69
70   AC_REQUIRE([jm_PREREQ])
71
72   AC_REQUIRE([jm_FUNC_LCHOWN])
73   AC_REQUIRE([jm_FUNC_CHOWN])
74   AC_REQUIRE([jm_FUNC_MKTIME])
75   AC_REQUIRE([jm_FUNC_LSTAT])
76   AC_REQUIRE([jm_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK])
77   AC_REQUIRE([jm_FUNC_STAT])
78   AC_REQUIRE([jm_FUNC_REALLOC])
79   AC_REQUIRE([jm_FUNC_MALLOC])
80   AC_REQUIRE([jm_FUNC_STRERROR_R])
81   AC_REQUIRE([jm_FUNC_NANOSLEEP])
82   AC_REQUIRE([jm_FUNC_READDIR])
83   AC_REQUIRE([jm_FUNC_MEMCMP])
84   AC_REQUIRE([jm_FUNC_GLIBC_UNLOCKED_IO])
85   AC_REQUIRE([jm_FUNC_FNMATCH])
86   AC_REQUIRE([jm_FUNC_GROUP_MEMBER])
87   AC_REQUIRE([jm_FUNC_PUTENV])
88   AC_REQUIRE([jm_AFS])
89   AC_REQUIRE([jm_AC_PREREQ_XSTRTOUMAX])
90   AC_REQUIRE([jm_AC_FUNC_LINK_FOLLOWS_SYMLINK])
91   AC_REQUIRE([AM_FUNC_ERROR_AT_LINE])
92   AC_REQUIRE([jm_FUNC_GNU_STRFTIME])
93   AC_REQUIRE([jm_FUNC_MKTIME])
94
95   AC_REQUIRE([jm_FUNC_GETGROUPS])
96   test -n "$GETGROUPS_LIB" && LIBS="$GETGROUPS_LIB $LIBS"
97
98   AC_REQUIRE([AC_FUNC_VPRINTF])
99   AC_REQUIRE([AC_FUNC_ALLOCA])
100   AC_REQUIRE([AM_FUNC_GETLOADAVG])
101   AC_REQUIRE([jm_SYS_PROC_UPTIME])
102   AC_REQUIRE([jm_FUNC_FTRUNCATE])
103
104   AC_REPLACE_FUNCS(strcasecmp strncasecmp)
105   AC_REPLACE_FUNCS(dup2)
106   AC_REPLACE_FUNCS(gethostname getusershell)
107   AC_REPLACE_FUNCS(stime strcspn stpcpy strstr strtol strtoul)
108   AC_REPLACE_FUNCS(strpbrk)
109   AC_REPLACE_FUNCS(euidaccess memcmp mkdir rmdir rpmatch strndup strverscmp)
110
111   dnl used by e.g. intl/*domain.c and lib/canon-host.c
112   AC_REPLACE_FUNCS(strdup)
113
114   AC_REPLACE_FUNCS(memchr memmove memcpy memset)
115   AC_CHECK_FUNCS(getpagesize)
116
117   # By default, argmatch should fail calling usage (1).
118   AC_DEFINE(ARGMATCH_DIE, [usage (1)],
119             [Define to the function xargmatch calls on failures.])
120   AC_DEFINE(ARGMATCH_DIE_DECL, [extern void usage ()],
121             [Define to the declaration of the xargmatch failure function.])
122
123   dnl Used to define SETVBUF in sys2.h.
124   dnl This evokes the following warning from autoconf:
125   dnl ...: warning: AC_TRY_RUN called without default to allow cross compiling
126   AC_FUNC_SETVBUF_REVERSED
127
128   # used by sleep and shred
129   # Solaris 2.5.1 needs -lposix4 to get the clock_gettime function.
130   # Solaris 7 prefers the library name -lrt to the obsolescent name -lposix4.
131   AC_SEARCH_LIBS(clock_gettime, [rt posix4])
132   AC_CHECK_FUNCS(clock_gettime)
133   AC_CHECK_FUNCS(gettimeofday)
134
135   AC_REQUIRE([AC_FUNC_CLOSEDIR_VOID])
136   AC_REQUIRE([jm_FUNC_UTIME])
137
138   AC_CHECK_FUNCS( \
139     acl \
140     bcopy \
141     endgrent \
142     endpwent \
143     fchdir \
144     fdatasync \
145     fseeko \
146     ftime \
147     ftruncate \
148     getcwd \
149     gethrtime \
150     getmntinfo \
151     hasmntopt \
152     isascii \
153     lchown \
154     listmntent \
155     localeconv \
156     memcpy \
157     mempcpy \
158     mkfifo \
159     realpath \
160     resolvepath \
161     sethostname \
162     strchr \
163     strerror \
164     strrchr \
165     sysinfo \
166     tzset \
167   )
168
169   AM_FUNC_GETLINE
170   if test $am_cv_func_working_getline != yes; then
171     AC_CHECK_FUNCS(getdelim)
172   fi
173   AM_FUNC_OBSTACK
174
175   AM_FUNC_STRTOD
176   AC_SUBST(POW_LIBM)
177   test $am_cv_func_strtod_needs_libm = yes && POW_LIBM=-lm
178
179   jm_LANGINFO_CODESET
180
181   jm_ICONV
182
183   # These tests are for df.
184   jm_LIST_MOUNTED_FILESYSTEMS([list_mounted_fs=yes], [list_mounted_fs=no])
185   jm_FSTYPENAME
186   jm_FILE_SYSTEM_USAGE([space=yes], [space=no])
187   if test $list_mounted_fs = yes && test $space = yes; then
188     DF_PROG="df"
189     LIBOBJS="$LIBOBJS fsusage.$ac_objext"
190     LIBOBJS="$LIBOBJS mountlist.$ac_objext"
191   fi
192
193 ])
194
195 # This macro must be invoked before any tests that run the compiler.
196 AC_DEFUN(jm_CHECK_ALL_TYPES,
197 [
198   # Emit this code into config.h.in.
199   # The ifndef is to avoid redefinition warnings.
200   AH_VERBATIM([_GNU_SOURCE], [#ifndef _GNU_SOURCE
201 # undef _GNU_SOURCE
202 #endif])
203
204   # Enable GNU extensions.
205   AC_DEFINE([_GNU_SOURCE])
206
207   dnl This test must come as early as possible after the compiler configuration
208   dnl tests, because the choice of the file model can (in principle) affect
209   dnl whether functions and headers are available, whether they work, etc.
210   AC_REQUIRE([AC_SYS_LARGEFILE])
211
212   dnl This test must precede tests of compiler characteristics like
213   dnl that for the inline keyword, since it may change the degree to
214   dnl which the compiler supports such features.
215   AC_REQUIRE([AM_C_PROTOTYPES])
216
217   dnl Checks for typedefs, structures, and compiler characteristics.
218   AC_REQUIRE([AC_C_BIGENDIAN])
219   AC_REQUIRE([AC_PROG_CC_STDC])
220   AC_REQUIRE([AC_C_CONST])
221   AC_REQUIRE([AC_C_VOLATILE])
222   AC_REQUIRE([AC_C_INLINE])
223   AC_REQUIRE([AC_C_LONG_DOUBLE])
224
225   AC_REQUIRE([AC_HEADER_DIRENT])
226   AC_REQUIRE([AC_HEADER_STDC])
227   AC_CHECK_MEMBERS((struct stat.st_blksize),,,[$ac_includes_default
228 #include <sys/stat.h>
229   ])
230   AC_REQUIRE([AC_STRUCT_ST_BLOCKS])
231
232   AC_REQUIRE([AC_STRUCT_TM])
233   AC_REQUIRE([AC_STRUCT_TIMEZONE])
234   AC_REQUIRE([AC_HEADER_STAT])
235   AC_REQUIRE([AC_STRUCT_ST_MTIM_NSEC])
236   AC_REQUIRE([AC_STRUCT_ST_DM_MODE])
237   AC_REQUIRE([jm_CHECK_TYPE_STRUCT_TIMESPEC])
238
239   AC_REQUIRE([AC_TYPE_GETGROUPS])
240   AC_REQUIRE([AC_TYPE_MODE_T])
241   AC_REQUIRE([AC_TYPE_OFF_T])
242   AC_REQUIRE([AC_TYPE_PID_T])
243   AC_REQUIRE([AC_TYPE_SIGNAL])
244   AC_REQUIRE([AC_TYPE_SIZE_T])
245   AC_REQUIRE([AC_TYPE_UID_T])
246   AC_CHECK_TYPE(ino_t, unsigned long)
247
248   dnl This relies on the fact that autoconf 2.14a's implementation of
249   dnl AC_CHECK_TYPE checks includes unistd.h.
250   AC_CHECK_TYPE(ssize_t, int)
251
252   AC_REQUIRE([jm_AC_TYPE_UINTMAX_T])
253   AC_REQUIRE([jm_AC_TYPE_UNSIGNED_LONG_LONG])
254
255   AC_REQUIRE([AC_HEADER_MAJOR])
256   AC_REQUIRE([AC_HEADER_DIRENT])
257
258 ])