*** empty log message ***
[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([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
132   # Save and restore LIBS so e.g., -lrt, isn't added to it.  Otherwise, *all*
133   # programs in the package would end up linked with that potentially-shared
134   # library, inducing unnecessary run-time overhead.
135   fetish_saved_libs=$LIBS
136     AC_SEARCH_LIBS(clock_gettime, [rt posix4],
137                    [LIB_CLOCK_GETTIME=$ac_cv_search_clock_gettime])
138     AC_SUBST(LIB_CLOCK_GETTIME)
139     AC_CHECK_FUNCS(clock_gettime)
140   LIBS=$fetish_saved_libs
141   AC_CHECK_FUNCS(gettimeofday)
142
143   AC_REQUIRE([AC_FUNC_CLOSEDIR_VOID])
144   AC_REQUIRE([jm_FUNC_UTIME])
145
146   AC_CHECK_FUNCS( \
147     acl \
148     bcopy \
149     endgrent \
150     endpwent \
151     fchdir \
152     fdatasync \
153     fseeko \
154     ftime \
155     ftruncate \
156     getcwd \
157     gethrtime \
158     getmntinfo \
159     hasmntopt \
160     isascii \
161     lchown \
162     listmntent \
163     localeconv \
164     memcpy \
165     mempcpy \
166     mkfifo \
167     realpath \
168     resolvepath \
169     sethostname \
170     strchr \
171     strerror \
172     strrchr \
173     sysinfo \
174     tzset \
175   )
176
177   AM_FUNC_GETLINE
178   if test $am_cv_func_working_getline != yes; then
179     AC_CHECK_FUNCS(getdelim)
180   fi
181   AM_FUNC_OBSTACK
182
183   AM_FUNC_STRTOD
184   AC_SUBST(POW_LIBM)
185   test $am_cv_func_strtod_needs_libm = yes && POW_LIBM=-lm
186
187   jm_LANGINFO_CODESET
188
189   jm_ICONV
190
191   # These tests are for df.
192   jm_LIST_MOUNTED_FILESYSTEMS([list_mounted_fs=yes], [list_mounted_fs=no])
193   jm_FSTYPENAME
194   jm_FILE_SYSTEM_USAGE([space=yes], [space=no])
195   if test $list_mounted_fs = yes && test $space = yes; then
196     DF_PROG="df"
197     LIBOBJS="$LIBOBJS fsusage.$ac_objext"
198     LIBOBJS="$LIBOBJS mountlist.$ac_objext"
199   fi
200
201 ])
202
203 # This macro must be invoked before any tests that run the compiler.
204 AC_DEFUN(jm_CHECK_ALL_TYPES,
205 [
206   # Emit this code into config.h.in.
207   # The ifndef is to avoid redefinition warnings.
208   AH_VERBATIM([_GNU_SOURCE], [#ifndef _GNU_SOURCE
209 # define _GNU_SOURCE
210 #endif])
211
212   dnl This test must come as early as possible after the compiler configuration
213   dnl tests, because the choice of the file model can (in principle) affect
214   dnl whether functions and headers are available, whether they work, etc.
215   AC_REQUIRE([AC_SYS_LARGEFILE])
216
217   dnl This test must precede tests of compiler characteristics like
218   dnl that for the inline keyword, since it may change the degree to
219   dnl which the compiler supports such features.
220   AC_REQUIRE([AM_C_PROTOTYPES])
221
222   dnl Checks for typedefs, structures, and compiler characteristics.
223   AC_REQUIRE([AC_C_BIGENDIAN])
224   AC_REQUIRE([AC_PROG_CC_STDC])
225   AC_REQUIRE([AC_C_CONST])
226   AC_REQUIRE([AC_C_VOLATILE])
227   AC_REQUIRE([AC_C_INLINE])
228   AC_REQUIRE([AC_C_LONG_DOUBLE])
229
230   AC_REQUIRE([AC_HEADER_DIRENT])
231   AC_REQUIRE([AC_HEADER_STDC])
232   AC_CHECK_MEMBERS((struct stat.st_blksize),,,[$ac_includes_default
233 #include <sys/stat.h>
234   ])
235   AC_REQUIRE([AC_STRUCT_ST_BLOCKS])
236
237   AC_REQUIRE([AC_STRUCT_TM])
238   AC_REQUIRE([AC_STRUCT_TIMEZONE])
239   AC_REQUIRE([AC_HEADER_STAT])
240   AC_REQUIRE([AC_STRUCT_ST_MTIM_NSEC])
241   AC_REQUIRE([AC_STRUCT_ST_DM_MODE])
242   AC_REQUIRE([jm_CHECK_TYPE_STRUCT_TIMESPEC])
243
244   AC_REQUIRE([AC_TYPE_GETGROUPS])
245   AC_REQUIRE([AC_TYPE_MODE_T])
246   AC_REQUIRE([AC_TYPE_OFF_T])
247   AC_REQUIRE([AC_TYPE_PID_T])
248   AC_REQUIRE([AC_TYPE_SIGNAL])
249   AC_REQUIRE([AC_TYPE_SIZE_T])
250   AC_REQUIRE([AC_TYPE_UID_T])
251   AC_CHECK_TYPE(ino_t, unsigned long)
252
253   dnl This relies on the fact that autoconf 2.14a's implementation of
254   dnl AC_CHECK_TYPE checks includes unistd.h.
255   AC_CHECK_TYPE(ssize_t, int)
256
257   AC_REQUIRE([jm_AC_TYPE_UINTMAX_T])
258   AC_REQUIRE([jm_AC_TYPE_UNSIGNED_LONG_LONG])
259
260   AC_REQUIRE([AC_HEADER_MAJOR])
261   AC_REQUIRE([AC_HEADER_DIRENT])
262
263 ])