(jm_PREREQ): Add jm_PREREQ_STAT.
[gnulib.git] / m4 / prereq.m4
1 #serial 25
2
3 dnl These are the prerequisite macros for files in the lib/
4 dnl directories of the fileutils, sh-utils, and textutils packages.
5
6 AC_DEFUN([jm_PREREQ],
7 [
8   jm_PREREQ_ADDEXT
9   jm_PREREQ_CANON_HOST
10   jm_PREREQ_DIRNAME
11   jm_PREREQ_ERROR
12   jm_PREREQ_EXCLUDE
13   jm_PREREQ_GETPAGESIZE
14   jm_PREREQ_HARD_LOCALE
15   jm_PREREQ_HASH
16   jm_PREREQ_HUMAN
17   jm_PREREQ_MBSWIDTH
18   jm_PREREQ_MEMCHR
19   jm_PREREQ_PHYSMEM
20   jm_PREREQ_POSIXVER
21   jm_PREREQ_QUOTEARG
22   jm_PREREQ_READUTMP
23   jm_PREREQ_REGEX
24   jm_PREREQ_STAT
25   jm_PREREQ_STRNLEN
26   jm_PREREQ_TEMPNAME # called by mkstemp
27   jm_PREREQ_XGETCWD
28   jm_PREREQ_XREADLINK
29 ])
30
31 AC_DEFUN([jm_PREREQ_ADDEXT],
32 [
33   dnl For addext.c.
34   AC_SYS_LONG_FILE_NAMES
35   AC_CHECK_FUNCS(pathconf)
36   AC_CHECK_HEADERS(limits.h string.h unistd.h)
37 ])
38
39 AC_DEFUN([jm_PREREQ_CANON_HOST],
40 [
41   dnl Add any libraries as early as possible.
42   dnl In particular, inet_ntoa needs -lnsl at least on Solaris5.5.1,
43   dnl so we have to add -lnsl to LIBS before checking for that function.
44   AC_SEARCH_LIBS(gethostbyname, [inet nsl])
45
46   dnl These come from -lnsl on Solaris5.5.1.
47   AC_CHECK_FUNCS(gethostbyname gethostbyaddr inet_ntoa)
48
49   AC_CHECK_FUNCS(gethostbyname gethostbyaddr inet_ntoa)
50   AC_CHECK_HEADERS(unistd.h string.h netdb.h sys/socket.h \
51                    netinet/in.h arpa/inet.h)
52 ])
53
54 AC_DEFUN([jm_PREREQ_DIRNAME],
55 [
56   AC_HEADER_STDC
57   AC_CHECK_HEADERS(string.h)
58 ])
59
60 AC_DEFUN([jm_PREREQ_EXCLUDE],
61 [
62   jm_FUNC_FNMATCH
63   AC_CHECK_HEADERS(stdbool.h)
64 ])
65
66 AC_DEFUN([jm_PREREQ_GETPAGESIZE],
67 [
68   AC_CHECK_FUNCS(getpagesize)
69   AC_CHECK_HEADERS(OS.h unistd.h)
70 ])
71
72 AC_DEFUN([jm_PREREQ_HARD_LOCALE],
73 [
74   AC_CHECK_HEADERS(locale.h stdlib.h string.h)
75   AC_CHECK_FUNCS(setlocale)
76   AM_C_PROTOTYPES
77 ])
78
79 AC_DEFUN([jm_PREREQ_HASH],
80 [
81   AC_CHECK_HEADERS(stdlib.h stdbool.h)
82   AC_REQUIRE([jm_CHECK_DECLS])
83 ])
84
85 # If you use human.c, you need the following files:
86 # inttypes.m4 ulonglong.m4
87 AC_DEFUN([jm_PREREQ_HUMAN],
88 [
89   AC_CHECK_HEADERS(limits.h stdlib.h string.h)
90   AC_CHECK_DECLS([getenv])
91   AC_REQUIRE([jm_AC_TYPE_UINTMAX_T])
92 ])
93
94 AC_DEFUN([jm_PREREQ_MEMCHR],
95 [
96   AC_CHECK_HEADERS(limits.h stdlib.h bp-sym.h)
97 ])
98
99 AC_DEFUN([jm_PREREQ_PHYSMEM],
100 [
101   AC_CHECK_HEADERS(sys/pstat.h unistd.h)
102   AC_CHECK_FUNCS(pstat_getstatic pstat_getdynamic)
103 ])
104
105 AC_DEFUN([jm_PREREQ_POSIXVER],
106 [
107   AC_CHECK_HEADERS(unistd.h)
108   AC_CHECK_DECLS([getenv])
109 ])
110
111 AC_DEFUN([jm_PREREQ_QUOTEARG],
112 [
113   AC_CHECK_FUNCS(isascii iswprint)
114   jm_FUNC_MBRTOWC
115   AC_CHECK_HEADERS(limits.h stddef.h stdlib.h string.h wchar.h wctype.h)
116   AC_HEADER_STDC
117   AC_C_BACKSLASH_A
118   AC_MBSTATE_T
119   AM_C_PROTOTYPES
120 ])
121
122 AC_DEFUN([jm_PREREQ_READUTMP],
123 [
124   AC_HEADER_STDC
125   AC_CHECK_HEADERS(string.h utmp.h utmpx.h sys/param.h)
126   AC_CHECK_FUNCS(utmpname)
127   AC_CHECK_FUNCS(utmpxname)
128   AM_C_PROTOTYPES
129
130   if test $ac_cv_header_utmp_h = yes || test $ac_cv_header_utmpx_h = yes; then
131     utmp_includes="\
132 $ac_includes_default
133 #ifdef HAVE_UTMPX_H
134 # include <utmpx.h>
135 #endif
136 #ifdef HAVE_UTMP_H
137 # include <utmp.h>
138 #endif
139 "
140     AC_CHECK_MEMBERS([struct utmpx.ut_user],,,[$utmp_includes])
141     AC_CHECK_MEMBERS([struct utmp.ut_user],,,[$utmp_includes])
142     AC_CHECK_MEMBERS([struct utmpx.ut_name],,,[$utmp_includes])
143     AC_CHECK_MEMBERS([struct utmp.ut_name],,,[$utmp_includes])
144     AC_CHECK_MEMBERS([struct utmpx.ut_type],,,[$utmp_includes])
145     AC_CHECK_MEMBERS([struct utmp.ut_type],,,[$utmp_includes])
146     AC_CHECK_MEMBERS([struct utmpx.ut_pid],,,[$utmp_includes])
147     AC_CHECK_MEMBERS([struct utmp.ut_pid],,,[$utmp_includes])
148     AC_CHECK_MEMBERS([struct utmpx.ut_id],,,[$utmp_includes])
149     AC_CHECK_MEMBERS([struct utmp.ut_id],,,[$utmp_includes])
150     AC_CHECK_MEMBERS([struct utmpx.ut_exit],,,[$utmp_includes])
151     AC_CHECK_MEMBERS([struct utmp.ut_exit],,,[$utmp_includes])
152     AC_LIBOBJ(readutmp)
153   fi
154 ])
155
156 AC_DEFUN([jm_PREREQ_REGEX],
157 [
158   dnl FIXME: Maybe provide a btowc replacement someday: solaris-2.5.1 lacks it.
159   dnl FIXME: Check for wctype and iswctype, and and add -lw if necessary
160   dnl to get them.
161   AC_CHECK_FUNCS(bzero bcopy isascii btowc)
162   AC_CHECK_HEADERS(alloca.h libintl.h wctype.h wchar.h)
163   AC_HEADER_STDC
164   AC_FUNC_ALLOCA
165 ])
166
167 AC_DEFUN([jm_PREREQ_STAT],
168 [
169   AC_CHECK_HEADERS(sys/sysmacros.h sys/statvfs.h sys/vfs.h inttypes.h)
170   AC_CHECK_FUNCS(statvfs)
171   jm_AC_TYPE_LONG_LONG
172   statfs_includes="\
173 $ac_includes_default
174 #include <sys/vfs.h>
175 "
176   statvfs_includes="\
177 $ac_includes_default
178 #include <sys/statvfs.h>
179 "
180   AC_CHECK_MEMBERS([struct statfs.f_basetype],,,[$statfs_includes])
181   AC_CHECK_MEMBERS([struct statvfs.f_basetype],,,[$statvfs_includes])
182   AC_CHECK_MEMBERS([struct statfs.f_type],,,[$statfs_includes])
183   AC_CHECK_MEMBERS([struct statvfs.f_type],,,[$statvfs_includes])
184 ])
185
186 AC_DEFUN([jm_PREREQ_STRNLEN],
187 [
188   AC_FUNC_STRNLEN
189   AC_HEADER_STDC
190   AC_CHECK_HEADERS(memory.h)
191   AC_CHECK_DECLS([memchr])
192
193   # This is necessary because automake-1.6.1 doens't understand
194   # that the above use of AC_FUNC_STRNLEN means we may have to use
195   # lib/strnlen.c.
196   test $ac_cv_func_strnlen_working = yes \
197     && AC_LIBOBJ(strnlen)
198 ])
199
200 AC_DEFUN([jm_PREREQ_TEMPNAME],
201 [
202   AC_HEADER_STDC
203   AC_HEADER_STAT
204   AC_CHECK_HEADERS(fcntl.h sys/time.h stdint.h unistd.h)
205   AC_CHECK_FUNCS(__secure_getenv gettimeofday)
206   AC_CHECK_DECLS([getenv])
207 ])
208
209 AC_DEFUN([jm_PREREQ_XGETCWD],
210 [
211   AC_C_PROTOTYPES
212   AC_CHECK_HEADERS(limits.h stdlib.h sys/param.h unistd.h)
213   AC_CHECK_FUNCS(getcwd)
214   AC_FUNC_GETCWD_NULL
215 ])
216
217 AC_DEFUN([jm_PREREQ_XREADLINK],
218 [
219   AC_C_PROTOTYPES
220   AC_CHECK_HEADERS(limits.h stdlib.h sys/types.h unistd.h)
221 ])