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