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