(xreadlink): Omit size_t* arg. All uses changed.
[gnulib.git] / m4 / jm-macros.m4
index 35bc9e1..c583277 100644 (file)
@@ -1,10 +1,10 @@
-#serial 23
+#serial 39   -*- autoconf -*-
 
 dnl Misc type-related macros for fileutils, sh-utils, textutils.
 
 
 dnl Misc type-related macros for fileutils, sh-utils, textutils.
 
-AC_DEFUN(jm_MACROS,
+AC_DEFUN([jm_MACROS],
 [
 [
-  AC_PREREQ(2.14a)
+  AC_PREREQ(2.52)
 
   GNU_PACKAGE="GNU $PACKAGE"
   AC_DEFINE_UNQUOTED(GNU_PACKAGE, "$GNU_PACKAGE",
 
   GNU_PACKAGE="GNU $PACKAGE"
   AC_DEFINE_UNQUOTED(GNU_PACKAGE, "$GNU_PACKAGE",
@@ -19,49 +19,11 @@ AC_DEFUN(jm_MACROS,
   dnl This macro actually runs replacement code.  See isc-posix.m4.
   AC_REQUIRE([AC_ISC_POSIX])dnl
 
   dnl This macro actually runs replacement code.  See isc-posix.m4.
   AC_REQUIRE([AC_ISC_POSIX])dnl
 
-  AC_CHECK_HEADERS( \
-    errno.h  \
-    fcntl.h \
-    fenv.h \
-    float.h \
-    limits.h \
-    memory.h \
-    mntent.h \
-    mnttab.h \
-    netdb.h \
-    paths.h \
-    stdlib.h \
-    stddef.h \
-    string.h \
-    sys/acl.h \
-    sys/filsys.h \
-    sys/fs/s5param.h \
-    sys/fs_types.h \
-    sys/fstyp.h \
-    sys/ioctl.h \
-    sys/mntent.h \
-    sys/mount.h \
-    sys/param.h \
-    sys/socket.h \
-    sys/statfs.h \
-    sys/statvfs.h \
-    sys/systeminfo.h \
-    sys/time.h \
-    sys/timeb.h \
-    sys/vfs.h \
-    sys/wait.h \
-    syslog.h \
-    termios.h \
-    unistd.h \
-    utime.h \
-    values.h \
-  )
-
+  jm_CHECK_ALL_TYPES
   jm_INCLUDED_REGEX([lib/regex.c])
 
   AC_REQUIRE([jm_BISON])
   AC_REQUIRE([jm_ASSERT])
   jm_INCLUDED_REGEX([lib/regex.c])
 
   AC_REQUIRE([jm_BISON])
   AC_REQUIRE([jm_ASSERT])
-  AC_REQUIRE([jm_AC_HEADER_INTTYPES_H])
   AC_REQUIRE([jm_CHECK_TYPE_STRUCT_UTIMBUF])
   AC_REQUIRE([jm_CHECK_TYPE_STRUCT_DIRENT_D_TYPE])
   AC_REQUIRE([jm_CHECK_TYPE_STRUCT_DIRENT_D_INO])
   AC_REQUIRE([jm_CHECK_TYPE_STRUCT_UTIMBUF])
   AC_REQUIRE([jm_CHECK_TYPE_STRUCT_DIRENT_D_TYPE])
   AC_REQUIRE([jm_CHECK_TYPE_STRUCT_DIRENT_D_INO])
@@ -88,10 +50,12 @@ AC_DEFUN(jm_MACROS,
   AC_REQUIRE([jm_FUNC_PUTENV])
   AC_REQUIRE([jm_AFS])
   AC_REQUIRE([jm_AC_PREREQ_XSTRTOUMAX])
   AC_REQUIRE([jm_FUNC_PUTENV])
   AC_REQUIRE([jm_AFS])
   AC_REQUIRE([jm_AC_PREREQ_XSTRTOUMAX])
+  AC_REQUIRE([jm_AC_PREREQ_XSTRTOIMAX])
   AC_REQUIRE([jm_AC_FUNC_LINK_FOLLOWS_SYMLINK])
   AC_REQUIRE([AM_FUNC_ERROR_AT_LINE])
   AC_REQUIRE([jm_FUNC_GNU_STRFTIME])
   AC_REQUIRE([jm_FUNC_MKTIME])
   AC_REQUIRE([jm_AC_FUNC_LINK_FOLLOWS_SYMLINK])
   AC_REQUIRE([AM_FUNC_ERROR_AT_LINE])
   AC_REQUIRE([jm_FUNC_GNU_STRFTIME])
   AC_REQUIRE([jm_FUNC_MKTIME])
+  AC_REQUIRE([jm_FUNC_FPENDING])
 
   AC_REQUIRE([jm_FUNC_GETGROUPS])
   test -n "$GETGROUPS_LIB" && LIBS="$GETGROUPS_LIB $LIBS"
 
   AC_REQUIRE([jm_FUNC_GETGROUPS])
   test -n "$GETGROUPS_LIB" && LIBS="$GETGROUPS_LIB $LIBS"
@@ -101,6 +65,7 @@ AC_DEFUN(jm_MACROS,
   AC_FUNC_GETLOADAVG([lib])
   AC_REQUIRE([jm_SYS_PROC_UPTIME])
   AC_REQUIRE([jm_FUNC_FTRUNCATE])
   AC_FUNC_GETLOADAVG([lib])
   AC_REQUIRE([jm_SYS_PROC_UPTIME])
   AC_REQUIRE([jm_FUNC_FTRUNCATE])
+  AC_REQUIRE([vb_FUNC_RENAME])
 
   AC_REPLACE_FUNCS(strcasecmp strncasecmp)
   AC_REPLACE_FUNCS(dup2)
 
   AC_REPLACE_FUNCS(strcasecmp strncasecmp)
   AC_REPLACE_FUNCS(dup2)
@@ -115,9 +80,14 @@ AC_DEFUN(jm_MACROS,
   dnl used by e.g. intl/*domain.c and lib/canon-host.c
   AC_REPLACE_FUNCS(strdup)
 
   dnl used by e.g. intl/*domain.c and lib/canon-host.c
   AC_REPLACE_FUNCS(strdup)
 
-  AC_REPLACE_FUNCS(memchr memmove memcpy memset)
+  AC_REPLACE_FUNCS(memchr memcpy memmove memrchr memset)
   AC_CHECK_FUNCS(getpagesize)
 
   AC_CHECK_FUNCS(getpagesize)
 
+  AC_REPLACE_FUNCS(mkstemp)
+  if test $ac_cv_func_mkstemp != yes; then
+    AC_LIBOBJ(tempname)
+  fi
+
   # By default, argmatch should fail calling usage (1).
   AC_DEFINE(ARGMATCH_DIE, [usage (1)],
            [Define to the function xargmatch calls on failures.])
   # By default, argmatch should fail calling usage (1).
   AC_DEFINE(ARGMATCH_DIE, [usage (1)],
            [Define to the function xargmatch calls on failures.])
@@ -143,6 +113,7 @@ AC_DEFUN(jm_MACROS,
     AC_CHECK_FUNCS(clock_gettime)
   LIBS=$fetish_saved_libs
   AC_CHECK_FUNCS(gettimeofday)
     AC_CHECK_FUNCS(clock_gettime)
   LIBS=$fetish_saved_libs
   AC_CHECK_FUNCS(gettimeofday)
+  AC_FUNC_GETTIMEOFDAY_CLOBBER
 
   AC_REQUIRE([AC_FUNC_CLOSEDIR_VOID])
   AC_REQUIRE([jm_FUNC_UTIME])
 
   AC_REQUIRE([AC_FUNC_CLOSEDIR_VOID])
   AC_REQUIRE([jm_FUNC_UTIME])
@@ -150,11 +121,11 @@ AC_DEFUN(jm_MACROS,
   AC_CHECK_FUNCS( \
     acl \
     bcopy \
   AC_CHECK_FUNCS( \
     acl \
     bcopy \
+    canonicalize_file_name \
     endgrent \
     endpwent \
     fchdir \
     fdatasync \
     endgrent \
     endpwent \
     fchdir \
     fdatasync \
-    fseeko \
     ftime \
     ftruncate \
     getcwd \
     ftime \
     ftruncate \
     getcwd \
@@ -175,6 +146,7 @@ AC_DEFUN(jm_MACROS,
     strerror \
     strrchr \
     sysinfo \
     strerror \
     strrchr \
     sysinfo \
+    wcrtomb \
     tzset \
   )
 
     tzset \
   )
 
@@ -188,9 +160,28 @@ AC_DEFUN(jm_MACROS,
   AC_SUBST(POW_LIBM)
   test $am_cv_func_strtod_needs_libm = yes && POW_LIBM=-lm
 
   AC_SUBST(POW_LIBM)
   test $am_cv_func_strtod_needs_libm = yes && POW_LIBM=-lm
 
-  jm_LANGINFO_CODESET
+  # See if linking `seq' requires -lm.
+  # It does on nearly every system.  The single exception (so far) is
+  # BeOS which has all the math functions in the normal runtime library
+  # and doesn't have a separate math library.
+
+  AC_SUBST(SEQ_LIBM)
+  ac_seq_body='
+     static double x, y;
+     x = floor (x);
+     x = rint (x);
+     x = modf (x, &y);'
+  AC_TRY_LINK([#include <math.h>], $ac_seq_body, ,
+    [ac_seq_save_LIBS="$LIBS"
+     LIBS="$LIBS -lm"
+     AC_TRY_LINK([#include <math.h>], $ac_seq_body, SEQ_LIBM=-lm)
+     LIBS="$ac_seq_save_LIBS"
+    ])
+
+  AM_LANGINFO_CODESET
   jm_GLIBC21
   jm_GLIBC21
-  jm_ICONV
+  AM_ICONV
+  jm_FUNC_UNLINK_BUSY_TEXT
 
   # These tests are for df.
   jm_LIST_MOUNTED_FILESYSTEMS([list_mounted_fs=yes], [list_mounted_fs=no])
 
   # These tests are for df.
   jm_LIST_MOUNTED_FILESYSTEMS([list_mounted_fs=yes], [list_mounted_fs=no])
@@ -201,17 +192,63 @@ AC_DEFUN(jm_MACROS,
     AC_LIBOBJ(fsusage)
     AC_LIBOBJ(mountlist)
   fi
     AC_LIBOBJ(fsusage)
     AC_LIBOBJ(mountlist)
   fi
+  AC_REQUIRE([jm_AC_DOS])
 
 ])
 
 
 ])
 
+# These tests must be run before any use of AC_CHECK_TYPE,
+# because that macro compiles code that tests e.g., HAVE_UNISTD_H.
+# See the definition of ac_includes_default in `configure'.
+AC_DEFUN([jm_CHECK_ALL_HEADERS],
+[
+  AC_CHECK_HEADERS( \
+    errno.h  \
+    fcntl.h \
+    fenv.h \
+    float.h \
+    limits.h \
+    memory.h \
+    mntent.h \
+    mnttab.h \
+    netdb.h \
+    paths.h \
+    stdlib.h \
+    stddef.h \
+    stdint.h \
+    string.h \
+    sys/acl.h \
+    sys/filsys.h \
+    sys/fs/s5param.h \
+    sys/fs_types.h \
+    sys/fstyp.h \
+    sys/ioctl.h \
+    sys/mntent.h \
+    sys/mount.h \
+    sys/param.h \
+    sys/resource.h \
+    sys/socket.h \
+    sys/statfs.h \
+    sys/statvfs.h \
+    sys/systeminfo.h \
+    sys/time.h \
+    sys/timeb.h \
+    sys/vfs.h \
+    sys/wait.h \
+    syslog.h \
+    termios.h \
+    unistd.h \
+    utime.h \
+    values.h \
+  )
+])
+
 # This macro must be invoked before any tests that run the compiler.
 # This macro must be invoked before any tests that run the compiler.
-AC_DEFUN(jm_CHECK_ALL_TYPES,
+AC_DEFUN([jm_CHECK_ALL_TYPES],
 [
 [
-  # Emit this code into config.h.in.
-  # The ifndef is to avoid redefinition warnings.
-  AH_VERBATIM([_GNU_SOURCE], [#ifndef _GNU_SOURCE
-# define _GNU_SOURCE
-#endif])
+  # FIXME: I shouldn't have to require this macro here.  Rather, it should
+  # be required by any autoconf macro that performs a compile-time test or
+  # otherwise uses confdefs.h.
+  AC_REQUIRE([AC__GNU_SOURCE])
 
   dnl This test must come as early as possible after the compiler configuration
   dnl tests, because the choice of the file model can (in principle) affect
 
   dnl This test must come as early as possible after the compiler configuration
   dnl tests, because the choice of the file model can (in principle) affect
@@ -231,6 +268,7 @@ AC_DEFUN(jm_CHECK_ALL_TYPES,
   AC_REQUIRE([AC_C_INLINE])
   AC_REQUIRE([AC_C_LONG_DOUBLE])
 
   AC_REQUIRE([AC_C_INLINE])
   AC_REQUIRE([AC_C_LONG_DOUBLE])
 
+  AC_REQUIRE([jm_CHECK_ALL_HEADERS])
   AC_REQUIRE([AC_HEADER_DIRENT])
   AC_REQUIRE([AC_HEADER_STDC])
   AC_CHECK_MEMBERS([struct stat.st_blksize],,,[$ac_includes_default
   AC_REQUIRE([AC_HEADER_DIRENT])
   AC_REQUIRE([AC_HEADER_STDC])
   AC_CHECK_MEMBERS([struct stat.st_blksize],,,[$ac_includes_default
@@ -257,6 +295,8 @@ AC_DEFUN(jm_CHECK_ALL_TYPES,
   dnl This relies on the fact that autoconf 2.14a's implementation of
   dnl AC_CHECK_TYPE checks includes unistd.h.
   AC_CHECK_TYPE(ssize_t, int)
   dnl This relies on the fact that autoconf 2.14a's implementation of
   dnl AC_CHECK_TYPE checks includes unistd.h.
   AC_CHECK_TYPE(ssize_t, int)
+  AC_CHECK_TYPE(major_t, unsigned int)
+  AC_CHECK_TYPE(minor_t, unsigned int)
 
   AC_REQUIRE([jm_AC_TYPE_UINTMAX_T])
   AC_REQUIRE([jm_AC_TYPE_UNSIGNED_LONG_LONG])
 
   AC_REQUIRE([jm_AC_TYPE_UINTMAX_T])
   AC_REQUIRE([jm_AC_TYPE_UNSIGNED_LONG_LONG])