*** empty log message ***
[gnulib.git] / m4 / jm-macros.m4
1 #serial 30   -*- autoconf -*-
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     stdint.h \
36     string.h \
37     sys/acl.h \
38     sys/filsys.h \
39     sys/fs/s5param.h \
40     sys/fs_types.h \
41     sys/fstyp.h \
42     sys/ioctl.h \
43     sys/mntent.h \
44     sys/mount.h \
45     sys/param.h \
46     sys/socket.h \
47     sys/statfs.h \
48     sys/statvfs.h \
49     sys/systeminfo.h \
50     sys/time.h \
51     sys/timeb.h \
52     sys/vfs.h \
53     sys/wait.h \
54     syslog.h \
55     termios.h \
56     unistd.h \
57     utime.h \
58     values.h \
59   )
60
61   jm_INCLUDED_REGEX([lib/regex.c])
62
63   AC_REQUIRE([jm_BISON])
64   AC_REQUIRE([jm_ASSERT])
65   AC_REQUIRE([jm_AC_HEADER_INTTYPES_H])
66   AC_REQUIRE([jm_CHECK_TYPE_STRUCT_UTIMBUF])
67   AC_REQUIRE([jm_CHECK_TYPE_STRUCT_DIRENT_D_TYPE])
68   AC_REQUIRE([jm_CHECK_TYPE_STRUCT_DIRENT_D_INO])
69   AC_REQUIRE([jm_CHECK_DECLS])
70
71   AC_REQUIRE([jm_PREREQ])
72
73   AC_REQUIRE([jm_FUNC_LCHOWN])
74   AC_REQUIRE([fetish_FUNC_RMDIR_NOTEMPTY])
75   AC_REQUIRE([jm_FUNC_CHOWN])
76   AC_REQUIRE([jm_FUNC_MKTIME])
77   AC_REQUIRE([jm_FUNC_LSTAT])
78   AC_REQUIRE([AC_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK])
79   AC_REQUIRE([jm_FUNC_STAT])
80   AC_REQUIRE([jm_FUNC_REALLOC])
81   AC_REQUIRE([jm_FUNC_MALLOC])
82   AC_REQUIRE([AC_FUNC_STRERROR_R])
83   AC_REQUIRE([jm_FUNC_NANOSLEEP])
84   AC_REQUIRE([jm_FUNC_READDIR])
85   AC_REQUIRE([jm_FUNC_MEMCMP])
86   AC_REQUIRE([jm_FUNC_GLIBC_UNLOCKED_IO])
87   AC_REQUIRE([jm_FUNC_FNMATCH])
88   AC_REQUIRE([jm_FUNC_GROUP_MEMBER])
89   AC_REQUIRE([jm_FUNC_PUTENV])
90   AC_REQUIRE([jm_AFS])
91   AC_REQUIRE([jm_AC_PREREQ_XSTRTOUMAX])
92   AC_REQUIRE([jm_AC_FUNC_LINK_FOLLOWS_SYMLINK])
93   AC_REQUIRE([AM_FUNC_ERROR_AT_LINE])
94   AC_REQUIRE([jm_FUNC_GNU_STRFTIME])
95   AC_REQUIRE([jm_FUNC_MKTIME])
96   AC_REQUIRE([jm_FUNC_FPENDING])
97
98   AC_REQUIRE([jm_FUNC_GETGROUPS])
99   test -n "$GETGROUPS_LIB" && LIBS="$GETGROUPS_LIB $LIBS"
100
101   AC_REQUIRE([AC_FUNC_VPRINTF])
102   AC_REQUIRE([AC_FUNC_ALLOCA])
103   AC_FUNC_GETLOADAVG([lib])
104   AC_REQUIRE([jm_SYS_PROC_UPTIME])
105   AC_REQUIRE([jm_FUNC_FTRUNCATE])
106   AC_REQUIRE([vb_FUNC_RENAME])
107
108   AC_REPLACE_FUNCS(strcasecmp strncasecmp)
109   AC_REPLACE_FUNCS(dup2)
110   AC_REPLACE_FUNCS(gethostname getusershell)
111   AC_REPLACE_FUNCS(stime strcspn stpcpy strstr strtol strtoul)
112   AC_REPLACE_FUNCS(strpbrk)
113   AC_REPLACE_FUNCS(euidaccess memcmp rmdir rpmatch strndup strverscmp)
114   AC_REPLACE_FUNCS(atexit)
115   AC_REPLACE_FUNCS(strnlen)
116   AC_REPLACE_FUNCS(getpass)
117
118   dnl used by e.g. intl/*domain.c and lib/canon-host.c
119   AC_REPLACE_FUNCS(strdup)
120
121   AC_REPLACE_FUNCS(memchr memcpy memmove memrchr memset)
122   AC_CHECK_FUNCS(getpagesize)
123
124   # By default, argmatch should fail calling usage (1).
125   AC_DEFINE(ARGMATCH_DIE, [usage (1)],
126             [Define to the function xargmatch calls on failures.])
127   AC_DEFINE(ARGMATCH_DIE_DECL, [extern void usage ()],
128             [Define to the declaration of the xargmatch failure function.])
129
130   dnl Used to define SETVBUF in sys2.h.
131   dnl This evokes the following warning from autoconf:
132   dnl ...: warning: AC_TRY_RUN called without default to allow cross compiling
133   AC_FUNC_SETVBUF_REVERSED
134
135   # used by sleep and shred
136   # Solaris 2.5.1 needs -lposix4 to get the clock_gettime function.
137   # Solaris 7 prefers the library name -lrt to the obsolescent name -lposix4.
138
139   # Save and restore LIBS so e.g., -lrt, isn't added to it.  Otherwise, *all*
140   # programs in the package would end up linked with that potentially-shared
141   # library, inducing unnecessary run-time overhead.
142   fetish_saved_libs=$LIBS
143     AC_SEARCH_LIBS(clock_gettime, [rt posix4],
144                    [LIB_CLOCK_GETTIME=$ac_cv_search_clock_gettime])
145     AC_SUBST(LIB_CLOCK_GETTIME)
146     AC_CHECK_FUNCS(clock_gettime)
147   LIBS=$fetish_saved_libs
148   AC_CHECK_FUNCS(gettimeofday)
149
150   AC_REQUIRE([AC_FUNC_CLOSEDIR_VOID])
151   AC_REQUIRE([jm_FUNC_UTIME])
152
153   AC_CHECK_FUNCS( \
154     acl \
155     bcopy \
156     endgrent \
157     endpwent \
158     fchdir \
159     fdatasync \
160     fseeko \
161     ftime \
162     ftruncate \
163     getcwd \
164     gethrtime \
165     getmntinfo \
166     hasmntopt \
167     isascii \
168     lchown \
169     listmntent \
170     localeconv \
171     memcpy \
172     mempcpy \
173     mkfifo \
174     realpath \
175     resolvepath \
176     sethostname \
177     strchr \
178     strerror \
179     strrchr \
180     sysinfo \
181     wcrtomb \
182     tzset \
183   )
184
185   AM_FUNC_GETLINE
186   if test $am_cv_func_working_getline != yes; then
187     AC_CHECK_FUNCS(getdelim)
188   fi
189   AM_FUNC_OBSTACK
190
191   AM_FUNC_STRTOD
192   AC_SUBST(POW_LIBM)
193   test $am_cv_func_strtod_needs_libm = yes && POW_LIBM=-lm
194
195   # See if linking `seq' requires -lm.
196   # It does on nearly every system.  The single exception (so far) is
197   # BeOS which has all the math functions in the normal runtime library
198   # and doesn't have a separate math library.
199
200   AC_SUBST(SEQ_LIBM)
201   ac_seq_body='
202      static double x, y;
203      x = floor (x);
204      x = rint (x);
205      x = modf (x, &y);'
206   AC_TRY_LINK([#include <math.h>], $ac_seq_body, ,
207     [ac_seq_save_LIBS="$LIBS"
208      LIBS="$LIBS -lm"
209      AC_TRY_LINK([#include <math.h>], $ac_seq_body, SEQ_LIBM=-lm)
210      LIBS="$ac_seq_save_LIBS"
211     ])
212
213   jm_LANGINFO_CODESET
214   jm_GLIBC21
215   jm_ICONV
216   jm_FUNC_UNLINK_BUSY_TEXT
217
218   # These tests are for df.
219   jm_LIST_MOUNTED_FILESYSTEMS([list_mounted_fs=yes], [list_mounted_fs=no])
220   jm_FSTYPENAME
221   jm_FILE_SYSTEM_USAGE([space=yes], [space=no])
222   if test $list_mounted_fs = yes && test $space = yes; then
223     DF_PROG="df"
224     AC_LIBOBJ(fsusage)
225     AC_LIBOBJ(mountlist)
226   fi
227   AC_REQUIRE([jm_AC_DOS])
228
229 ])
230
231 # This macro must be invoked before any tests that run the compiler.
232 AC_DEFUN(jm_CHECK_ALL_TYPES,
233 [
234   # FIXME: I shouldn't have to require this macro here.  Rather, it should
235   # be required by any autoconf macro that performs a compile-time test or
236   # otherwise uses confdefs.h.
237   AC_REQUIRE([AC__GNU_SOURCE])
238
239   dnl This test must come as early as possible after the compiler configuration
240   dnl tests, because the choice of the file model can (in principle) affect
241   dnl whether functions and headers are available, whether they work, etc.
242   AC_REQUIRE([AC_SYS_LARGEFILE])
243
244   dnl This test must precede tests of compiler characteristics like
245   dnl that for the inline keyword, since it may change the degree to
246   dnl which the compiler supports such features.
247   AC_REQUIRE([AM_C_PROTOTYPES])
248
249   dnl Checks for typedefs, structures, and compiler characteristics.
250   AC_REQUIRE([AC_C_BIGENDIAN])
251   AC_REQUIRE([AC_PROG_CC_STDC])
252   AC_REQUIRE([AC_C_CONST])
253   AC_REQUIRE([AC_C_VOLATILE])
254   AC_REQUIRE([AC_C_INLINE])
255   AC_REQUIRE([AC_C_LONG_DOUBLE])
256
257   AC_REQUIRE([AC_HEADER_DIRENT])
258   AC_REQUIRE([AC_HEADER_STDC])
259   AC_CHECK_MEMBERS([struct stat.st_blksize],,,[$ac_includes_default
260 #include <sys/stat.h>
261   ])
262   AC_REQUIRE([AC_STRUCT_ST_BLOCKS])
263
264   AC_REQUIRE([AC_STRUCT_TM])
265   AC_REQUIRE([AC_STRUCT_TIMEZONE])
266   AC_REQUIRE([AC_HEADER_STAT])
267   AC_REQUIRE([AC_STRUCT_ST_MTIM_NSEC])
268   AC_REQUIRE([AC_STRUCT_ST_DM_MODE])
269   AC_REQUIRE([jm_CHECK_TYPE_STRUCT_TIMESPEC])
270
271   AC_REQUIRE([AC_TYPE_GETGROUPS])
272   AC_REQUIRE([AC_TYPE_MODE_T])
273   AC_REQUIRE([AC_TYPE_OFF_T])
274   AC_REQUIRE([AC_TYPE_PID_T])
275   AC_REQUIRE([AC_TYPE_SIGNAL])
276   AC_REQUIRE([AC_TYPE_SIZE_T])
277   AC_REQUIRE([AC_TYPE_UID_T])
278   AC_CHECK_TYPE(ino_t, unsigned long)
279
280   dnl This relies on the fact that autoconf 2.14a's implementation of
281   dnl AC_CHECK_TYPE checks includes unistd.h.
282   AC_CHECK_TYPE(ssize_t, int)
283
284   AC_REQUIRE([jm_AC_TYPE_UINTMAX_T])
285   AC_REQUIRE([jm_AC_TYPE_UNSIGNED_LONG_LONG])
286
287   AC_REQUIRE([AC_HEADER_MAJOR])
288   AC_REQUIRE([AC_HEADER_DIRENT])
289
290 ])