tweak the `whether...' message
[gnulib.git] / m4 / jm-macros.m4
1 #serial 24
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([AC_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([AC_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_FUNC_GETLOADAVG([lib])
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 rmdir rpmatch strndup strverscmp)
111   AC_REPLACE_FUNCS(atexit)
112   AC_REPLACE_FUNCS(strnlen)
113   AC_REPLACE_FUNCS(getpass)
114
115   dnl used by e.g. intl/*domain.c and lib/canon-host.c
116   AC_REPLACE_FUNCS(strdup)
117
118   AC_REPLACE_FUNCS(memchr memmove memcpy memset)
119   AC_CHECK_FUNCS(getpagesize)
120
121   # By default, argmatch should fail calling usage (1).
122   AC_DEFINE(ARGMATCH_DIE, [usage (1)],
123             [Define to the function xargmatch calls on failures.])
124   AC_DEFINE(ARGMATCH_DIE_DECL, [extern void usage ()],
125             [Define to the declaration of the xargmatch failure function.])
126
127   dnl Used to define SETVBUF in sys2.h.
128   dnl This evokes the following warning from autoconf:
129   dnl ...: warning: AC_TRY_RUN called without default to allow cross compiling
130   AC_FUNC_SETVBUF_REVERSED
131
132   # used by sleep and shred
133   # Solaris 2.5.1 needs -lposix4 to get the clock_gettime function.
134   # Solaris 7 prefers the library name -lrt to the obsolescent name -lposix4.
135
136   # Save and restore LIBS so e.g., -lrt, isn't added to it.  Otherwise, *all*
137   # programs in the package would end up linked with that potentially-shared
138   # library, inducing unnecessary run-time overhead.
139   fetish_saved_libs=$LIBS
140     AC_SEARCH_LIBS(clock_gettime, [rt posix4],
141                    [LIB_CLOCK_GETTIME=$ac_cv_search_clock_gettime])
142     AC_SUBST(LIB_CLOCK_GETTIME)
143     AC_CHECK_FUNCS(clock_gettime)
144   LIBS=$fetish_saved_libs
145   AC_CHECK_FUNCS(gettimeofday)
146
147   AC_REQUIRE([AC_FUNC_CLOSEDIR_VOID])
148   AC_REQUIRE([jm_FUNC_UTIME])
149
150   AC_CHECK_FUNCS( \
151     acl \
152     bcopy \
153     endgrent \
154     endpwent \
155     fchdir \
156     fdatasync \
157     fseeko \
158     ftime \
159     ftruncate \
160     getcwd \
161     gethrtime \
162     getmntinfo \
163     hasmntopt \
164     isascii \
165     lchown \
166     listmntent \
167     localeconv \
168     memcpy \
169     mempcpy \
170     mkfifo \
171     realpath \
172     resolvepath \
173     sethostname \
174     strchr \
175     strerror \
176     strrchr \
177     sysinfo \
178     tzset \
179   )
180
181   AM_FUNC_GETLINE
182   if test $am_cv_func_working_getline != yes; then
183     AC_CHECK_FUNCS(getdelim)
184   fi
185   AM_FUNC_OBSTACK
186
187   AM_FUNC_STRTOD
188   AC_SUBST(POW_LIBM)
189   test $am_cv_func_strtod_needs_libm = yes && POW_LIBM=-lm
190
191   # See if linking `seq' requires -lm.
192   # It does on nearly every system.  The single exception (so far) is
193   # BeOS which has all the math functions in the normal runtime library
194   # and doesn't have a separate math library.
195
196   AC_SUBST(SEQ_LIBM)
197   ac_seq_body='
198      static double x, y;
199      x = floor (x);
200      x = rint (x);
201      x = modf (x, &y);'
202   AC_TRY_LINK([#include <math.h>], $ac_seq_body, ,
203     [ac_seq_save_LIBS="$LIBS"
204      LIBS="$LIBS -lm"
205      AC_TRY_LINK([#include <math.h>], $ac_seq_body, SEQ_LIBM=-lm)
206      LIBS="$ac_seq_save_LIBS"
207     ])
208
209   jm_LANGINFO_CODESET
210   jm_GLIBC21
211   jm_ICONV
212
213   # These tests are for df.
214   jm_LIST_MOUNTED_FILESYSTEMS([list_mounted_fs=yes], [list_mounted_fs=no])
215   jm_FSTYPENAME
216   jm_FILE_SYSTEM_USAGE([space=yes], [space=no])
217   if test $list_mounted_fs = yes && test $space = yes; then
218     DF_PROG="df"
219     AC_LIBOBJ(fsusage)
220     AC_LIBOBJ(mountlist)
221   fi
222
223 ])
224
225 # This macro must be invoked before any tests that run the compiler.
226 AC_DEFUN(jm_CHECK_ALL_TYPES,
227 [
228   # FIXME: I shouldn't have to require this macro here.  Rather, it should
229   # be required by any autoconf macro that performs a compile-time test or
230   # otherwise uses confdefs.h.
231   AC_REQUIRE([AC__GNU_SOURCE])
232
233   dnl This test must come as early as possible after the compiler configuration
234   dnl tests, because the choice of the file model can (in principle) affect
235   dnl whether functions and headers are available, whether they work, etc.
236   AC_REQUIRE([AC_SYS_LARGEFILE])
237
238   dnl This test must precede tests of compiler characteristics like
239   dnl that for the inline keyword, since it may change the degree to
240   dnl which the compiler supports such features.
241   AC_REQUIRE([AM_C_PROTOTYPES])
242
243   dnl Checks for typedefs, structures, and compiler characteristics.
244   AC_REQUIRE([AC_C_BIGENDIAN])
245   AC_REQUIRE([AC_PROG_CC_STDC])
246   AC_REQUIRE([AC_C_CONST])
247   AC_REQUIRE([AC_C_VOLATILE])
248   AC_REQUIRE([AC_C_INLINE])
249   AC_REQUIRE([AC_C_LONG_DOUBLE])
250
251   AC_REQUIRE([AC_HEADER_DIRENT])
252   AC_REQUIRE([AC_HEADER_STDC])
253   AC_CHECK_MEMBERS([struct stat.st_blksize],,,[$ac_includes_default
254 #include <sys/stat.h>
255   ])
256   AC_REQUIRE([AC_STRUCT_ST_BLOCKS])
257
258   AC_REQUIRE([AC_STRUCT_TM])
259   AC_REQUIRE([AC_STRUCT_TIMEZONE])
260   AC_REQUIRE([AC_HEADER_STAT])
261   AC_REQUIRE([AC_STRUCT_ST_MTIM_NSEC])
262   AC_REQUIRE([AC_STRUCT_ST_DM_MODE])
263   AC_REQUIRE([jm_CHECK_TYPE_STRUCT_TIMESPEC])
264
265   AC_REQUIRE([AC_TYPE_GETGROUPS])
266   AC_REQUIRE([AC_TYPE_MODE_T])
267   AC_REQUIRE([AC_TYPE_OFF_T])
268   AC_REQUIRE([AC_TYPE_PID_T])
269   AC_REQUIRE([AC_TYPE_SIGNAL])
270   AC_REQUIRE([AC_TYPE_SIZE_T])
271   AC_REQUIRE([AC_TYPE_UID_T])
272   AC_CHECK_TYPE(ino_t, unsigned long)
273
274   dnl This relies on the fact that autoconf 2.14a's implementation of
275   dnl AC_CHECK_TYPE checks includes unistd.h.
276   AC_CHECK_TYPE(ssize_t, int)
277
278   AC_REQUIRE([jm_AC_TYPE_UINTMAX_T])
279   AC_REQUIRE([jm_AC_TYPE_UNSIGNED_LONG_LONG])
280
281   AC_REQUIRE([AC_HEADER_MAJOR])
282   AC_REQUIRE([AC_HEADER_DIRENT])
283
284 ])