63319cd8466106d3455aa749e79ad83ec84820ab
[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], 1,
206     [Enable GNU extensions on systems that have them.])
207
208   dnl This test must come as early as possible after the compiler configuration
209   dnl tests, because the choice of the file model can (in principle) affect
210   dnl whether functions and headers are available, whether they work, etc.
211   AC_REQUIRE([AC_SYS_LARGEFILE])
212
213   dnl This test must precede tests of compiler characteristics like
214   dnl that for the inline keyword, since it may change the degree to
215   dnl which the compiler supports such features.
216   AC_REQUIRE([AM_C_PROTOTYPES])
217
218   dnl Checks for typedefs, structures, and compiler characteristics.
219   AC_REQUIRE([AC_C_BIGENDIAN])
220   AC_REQUIRE([AC_PROG_CC_STDC])
221   AC_REQUIRE([AC_C_CONST])
222   AC_REQUIRE([AC_C_VOLATILE])
223   AC_REQUIRE([AC_C_INLINE])
224   AC_REQUIRE([AC_C_LONG_DOUBLE])
225
226   AC_REQUIRE([AC_HEADER_DIRENT])
227   AC_REQUIRE([AC_HEADER_STDC])
228   AC_CHECK_MEMBERS((struct stat.st_blksize),,,[$ac_includes_default
229 #include <sys/stat.h>
230   ])
231   AC_REQUIRE([AC_STRUCT_ST_BLOCKS])
232
233   AC_REQUIRE([AC_STRUCT_TM])
234   AC_REQUIRE([AC_STRUCT_TIMEZONE])
235   AC_REQUIRE([AC_HEADER_STAT])
236   AC_REQUIRE([AC_STRUCT_ST_MTIM_NSEC])
237   AC_REQUIRE([AC_STRUCT_ST_DM_MODE])
238   AC_REQUIRE([jm_CHECK_TYPE_STRUCT_TIMESPEC])
239
240   AC_REQUIRE([AC_TYPE_GETGROUPS])
241   AC_REQUIRE([AC_TYPE_MODE_T])
242   AC_REQUIRE([AC_TYPE_OFF_T])
243   AC_REQUIRE([AC_TYPE_PID_T])
244   AC_REQUIRE([AC_TYPE_SIGNAL])
245   AC_REQUIRE([AC_TYPE_SIZE_T])
246   AC_REQUIRE([AC_TYPE_UID_T])
247   AC_CHECK_TYPE(ino_t, unsigned long)
248
249   dnl This relies on the fact that autoconf 2.14a's implementation of
250   dnl AC_CHECK_TYPE checks includes unistd.h.
251   AC_CHECK_TYPE(ssize_t, int)
252
253   AC_REQUIRE([jm_AC_TYPE_UINTMAX_T])
254   AC_REQUIRE([jm_AC_TYPE_UNSIGNED_LONG_LONG])
255
256   AC_REQUIRE([AC_HEADER_MAJOR])
257   AC_REQUIRE([AC_HEADER_DIRENT])
258
259 ])