*** empty log message ***
[platform/upstream/coreutils.git] / m4 / jm-macros.m4
1 #serial 86   -*- autoconf -*-
2
3 dnl Misc type-related macros for coreutils.
4
5 # Copyright (C) 1998, 2000, 2001, 2002, 2003, 2004, 2005 Free Software
6 # Foundation, Inc.
7
8 # This program is free software; you can redistribute it and/or modify
9 # it under the terms of the GNU General Public License as published by
10 # the Free Software Foundation; either version 2, or (at your option)
11 # any later version.
12
13 # This program is distributed in the hope that it will be useful,
14 # but WITHOUT ANY WARRANTY; without even the implied warranty of
15 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16 # GNU General Public License for more details.
17
18 # You should have received a copy of the GNU General Public License
19 # along with this program; if not, write to the Free Software Foundation,
20 # Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
21
22 # Written by Jim Meyering.
23
24 AC_DEFUN([gl_MACROS],
25 [
26   AC_PREREQ(2.58)
27
28   GNU_PACKAGE="GNU $PACKAGE"
29   AC_DEFINE_UNQUOTED(GNU_PACKAGE, "$GNU_PACKAGE",
30     [The concatenation of the strings `GNU ', and PACKAGE.])
31   AC_SUBST(GNU_PACKAGE)
32
33   AM_MISSING_PROG(HELP2MAN, help2man)
34   AC_SUBST(OPTIONAL_BIN_PROGS)
35   AC_SUBST(MAN)
36   AC_SUBST(DF_PROG)
37
38   dnl This macro actually runs replacement code.  See isc-posix.m4.
39   AC_REQUIRE([AC_ISC_POSIX])dnl
40
41   gl_CHECK_ALL_TYPES
42
43   AC_REQUIRE([gl_HOST_OS])
44   AC_REQUIRE([gl_ASSERT])
45   AC_REQUIRE([gl_CHECK_TYPE_STRUCT_UTIMBUF])
46   AC_REQUIRE([gl_CHECK_TYPE_STRUCT_DIRENT_D_TYPE])
47   AC_REQUIRE([gl_CHECK_TYPE_STRUCT_DIRENT_D_INO])
48   AC_REQUIRE([gl_CHECK_DECLS])
49
50   AC_REQUIRE([gl_PREREQ])
51
52   AC_REQUIRE([gl_FUNC_DIRFD])
53   AC_REQUIRE([AC_FUNC_ACL])
54   AC_REQUIRE([gl_FUNC_LCHOWN])
55   AC_REQUIRE([gl_FUNC_RMDIR_NOTEMPTY])
56   AC_REQUIRE([gl_FUNC_CHOWN])
57   AC_REQUIRE([AC_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK])
58   AC_REQUIRE([AC_FUNC_STRERROR_R])
59   AC_REQUIRE([gl_FUNC_GROUP_MEMBER])
60   AC_REQUIRE([gl_AFS])
61   AC_REQUIRE([gl_AC_FUNC_LINK_FOLLOWS_SYMLINK])
62   AC_REQUIRE([gl_FUNC_FPENDING])
63
64   # This is for od and stat, and any other program that
65   # uses the PRI.MAX macros from inttypes.h.
66   AC_REQUIRE([gt_INTTYPES_PRI])
67   AC_REQUIRE([gl_ULLONG_MAX])
68
69   AC_REQUIRE([gl_FUNC_GETGROUPS])
70
71   AC_REQUIRE([AC_FUNC_FSEEKO])
72   AC_REQUIRE([AC_FUNC_ALLOCA])
73
74   AC_CONFIG_LIBOBJ_DIR([lib])
75   AC_FUNC_GETLOADAVG([lib])
76
77   AC_REQUIRE([gl_SYS_PROC_UPTIME])
78   AC_REQUIRE([gl_FUNC_FTRUNCATE])
79
80   # raise is used by at least sort and ls.
81   AC_REPLACE_FUNCS(raise)
82
83   # By default, argmatch should fail calling usage (1).
84   AC_DEFINE(ARGMATCH_DIE, [usage (1)],
85             [Define to the function xargmatch calls on failures.])
86   AC_DEFINE(ARGMATCH_DIE_DECL, [extern void usage ()],
87             [Define to the declaration of the xargmatch failure function.])
88
89   dnl Used to define SETVBUF in sys2.h.
90   dnl This evokes the following warning from autoconf:
91   dnl ...: warning: AC_TRY_RUN called without default to allow cross compiling
92   AC_FUNC_SETVBUF_REVERSED
93
94   # used by sleep and shred
95   AC_REQUIRE([gl_CLOCK_TIME])
96   AC_CHECK_FUNCS_ONCE(gettimeofday)
97   AC_FUNC_GETTIMEOFDAY_CLOBBER
98   # used by shred
99   AC_CHECK_FUNCS_ONCE(directio)
100
101   AC_REQUIRE([AC_FUNC_CLOSEDIR_VOID])
102
103   AC_CHECK_FUNCS_ONCE( \
104     endgrent \
105     endpwent \
106     ftruncate \
107     hasmntopt \
108     isascii \
109     iswspace \
110     lchown \
111     listmntent \
112     memcpy \
113     mempcpy \
114     mkfifo \
115     mbrlen \
116     realpath \
117     sethostname \
118     siginterrupt \
119     strchr \
120     strerror \
121     strrchr \
122     sysctl \
123     sysinfo \
124     tcgetpgrp \
125     wcrtomb \
126     tzset \
127   )
128
129   AC_FUNC_STRTOD
130
131   AC_REQUIRE([cu_PREREQ_STAT_PROG])
132
133   # for dd.c and shred.c
134   coreutils_saved_libs=$LIBS
135     AC_SEARCH_LIBS([fdatasync], [rt posix4],
136                    [test "$ac_cv_search_fdatasync" = "none required" ||
137                     LIB_FDATASYNC=$ac_cv_search_fdatasync])
138     AC_SUBST([LIB_FDATASYNC])
139     AC_CHECK_FUNCS(fdatasync)
140   LIBS=$coreutils_saved_libs
141
142   # See if linking `seq' requires -lm.
143   # It does on nearly every system.  The single exception (so far) is
144   # BeOS which has all the math functions in the normal runtime library
145   # and doesn't have a separate math library.
146
147   AC_SUBST(SEQ_LIBM)
148   ac_seq_body='
149      static double x, y;
150      x = floor (x);
151      x = rint (x);
152      x = modf (x, &y);'
153   AC_TRY_LINK([#include <math.h>], $ac_seq_body, ,
154     [ac_seq_save_LIBS="$LIBS"
155      LIBS="$LIBS -lm"
156      AC_TRY_LINK([#include <math.h>], $ac_seq_body, SEQ_LIBM=-lm)
157      LIBS="$ac_seq_save_LIBS"
158     ])
159
160   AM_LANGINFO_CODESET
161   gl_GLIBC21
162   AM_ICONV
163   gl_FUNC_UNLINK_BUSY_TEXT
164
165   # These tests are for df.
166   AC_REQUIRE([gl_FSUSAGE])
167   AC_REQUIRE([gl_MOUNTLIST])
168   if test $gl_cv_list_mounted_fs = yes && test $gl_cv_fs_space = yes; then
169     DF_PROG='df$(EXEEXT)'
170   fi
171   AC_REQUIRE([gl_AC_DOS])
172   AC_REQUIRE([AC_FUNC_CANONICALIZE_FILE_NAME])
173
174   # If any of these functions don't exist (e.g. DJGPP 2.03),
175   # use the corresponding stub.
176   AC_CHECK_FUNC([fchdir], , [AC_LIBOBJ(fchdir-stub)])
177
178   AC_REQUIRE([gl_FUNC_FREE])
179   AC_REQUIRE([gl_FUNC_CHDIR_LONG])
180 ])
181
182 # These tests must be run before any use of AC_CHECK_TYPE,
183 # because that macro compiles code that tests e.g., HAVE_UNISTD_H.
184 # See the definition of ac_includes_default in `configure'.
185 AC_DEFUN([gl_CHECK_ALL_HEADERS],
186 [
187   AC_CHECK_HEADERS_ONCE( \
188     errno.h  \
189     fcntl.h \
190     float.h \
191     hurd.h \
192     limits.h \
193     memory.h \
194     mntent.h \
195     mnttab.h \
196     netdb.h \
197     paths.h \
198     stdlib.h \
199     stddef.h \
200     stdint.h \
201     string.h \
202     sys/filsys.h \
203     sys/fs/s5param.h \
204     sys/fs_types.h \
205     sys/fstyp.h \
206     sys/ioctl.h \
207     sys/mntent.h \
208     sys/param.h \
209     sys/resource.h \
210     sys/socket.h \
211     sys/statfs.h \
212     sys/statvfs.h \
213     sys/systeminfo.h \
214     sys/time.h \
215     sys/timeb.h \
216     sys/vfs.h \
217     sys/wait.h \
218     syslog.h \
219     termios.h \
220     unistd.h \
221     utime.h \
222   )
223   AC_CHECK_HEADERS(sys/mount.h sys/sysctl.h, [], [],
224     [AC_INCLUDES_DEFAULT
225      [#if HAVE_SYS_PARAM_H
226        #include <sys/param.h>
227       #endif]])
228 ])
229
230 # This macro must be invoked before any tests that run the compiler.
231 AC_DEFUN([gl_CHECK_ALL_TYPES],
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_C_CONST])
246   AC_REQUIRE([AC_C_VOLATILE])
247   AC_REQUIRE([AC_C_INLINE])
248   AC_REQUIRE([AC_C_LONG_DOUBLE])
249
250   AC_REQUIRE([gl_CHECK_ALL_HEADERS])
251   AC_REQUIRE([AC_HEADER_DIRENT])
252   AC_REQUIRE([AC_HEADER_STDC])
253   AC_CHECK_MEMBERS(
254     [struct stat.st_author,
255      struct stat.st_blksize],,,
256     [$ac_includes_default
257 #include <sys/stat.h>
258   ])
259   AC_REQUIRE([AC_STRUCT_ST_BLOCKS])
260
261   AC_REQUIRE([AC_STRUCT_ST_MTIM_NSEC])
262   AC_REQUIRE([AC_STRUCT_ST_DM_MODE])
263
264   AC_REQUIRE([AC_TYPE_GETGROUPS])
265   AC_REQUIRE([AC_TYPE_MBSTATE_T])
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_SIZE_T])
270   AC_REQUIRE([AC_TYPE_UID_T])
271   AC_CHECK_TYPE(ino_t, unsigned long int)
272
273   gt_TYPE_SSIZE_T
274
275   dnl This relies on the fact that autoconf 2.14a's implementation of
276   dnl AC_CHECK_TYPE checks includes unistd.h.
277   AC_CHECK_TYPE(major_t, unsigned int)
278   AC_CHECK_TYPE(minor_t, unsigned int)
279
280   AC_REQUIRE([gl_AC_TYPE_UINT32_T])
281   AC_REQUIRE([gl_AC_TYPE_UINTMAX_T])
282   AC_REQUIRE([gl_AC_TYPE_UINTPTR_T])
283   AC_REQUIRE([gl_AC_TYPE_UNSIGNED_LONG_LONG])
284
285   AC_REQUIRE([AC_HEADER_MAJOR])
286   AC_REQUIRE([AC_HEADER_DIRENT])
287
288 ])