*** empty log message ***
[gnulib.git] / m4 / jm-macros.m4
index 317ea28..f2875ad 100644 (file)
@@ -1,4 +1,4 @@
-#serial 14
+#serial 31   -*- autoconf -*-
 
 dnl Misc type-related macros for fileutils, sh-utils, textutils.
 
 
 dnl Misc type-related macros for fileutils, sh-utils, textutils.
 
@@ -19,44 +19,7 @@ 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])
   jm_INCLUDED_REGEX([lib/regex.c])
 
   AC_REQUIRE([jm_BISON])
@@ -70,14 +33,15 @@ AC_DEFUN(jm_MACROS,
   AC_REQUIRE([jm_PREREQ])
 
   AC_REQUIRE([jm_FUNC_LCHOWN])
   AC_REQUIRE([jm_PREREQ])
 
   AC_REQUIRE([jm_FUNC_LCHOWN])
+  AC_REQUIRE([fetish_FUNC_RMDIR_NOTEMPTY])
   AC_REQUIRE([jm_FUNC_CHOWN])
   AC_REQUIRE([jm_FUNC_MKTIME])
   AC_REQUIRE([jm_FUNC_LSTAT])
   AC_REQUIRE([jm_FUNC_CHOWN])
   AC_REQUIRE([jm_FUNC_MKTIME])
   AC_REQUIRE([jm_FUNC_LSTAT])
-  AC_REQUIRE([jm_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK])
+  AC_REQUIRE([AC_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK])
   AC_REQUIRE([jm_FUNC_STAT])
   AC_REQUIRE([jm_FUNC_REALLOC])
   AC_REQUIRE([jm_FUNC_MALLOC])
   AC_REQUIRE([jm_FUNC_STAT])
   AC_REQUIRE([jm_FUNC_REALLOC])
   AC_REQUIRE([jm_FUNC_MALLOC])
-  AC_REQUIRE([jm_FUNC_STRERROR_R])
+  AC_REQUIRE([AC_FUNC_STRERROR_R])
   AC_REQUIRE([jm_FUNC_NANOSLEEP])
   AC_REQUIRE([jm_FUNC_READDIR])
   AC_REQUIRE([jm_FUNC_MEMCMP])
   AC_REQUIRE([jm_FUNC_NANOSLEEP])
   AC_REQUIRE([jm_FUNC_READDIR])
   AC_REQUIRE([jm_FUNC_MEMCMP])
@@ -91,27 +55,32 @@ AC_DEFUN(jm_MACROS,
   AC_REQUIRE([AM_FUNC_ERROR_AT_LINE])
   AC_REQUIRE([jm_FUNC_GNU_STRFTIME])
   AC_REQUIRE([jm_FUNC_MKTIME])
   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([AC_FUNC_VPRINTF])
   AC_REQUIRE([AC_FUNC_ALLOCA])
 
   AC_REQUIRE([jm_FUNC_GETGROUPS])
   test -n "$GETGROUPS_LIB" && LIBS="$GETGROUPS_LIB $LIBS"
 
   AC_REQUIRE([AC_FUNC_VPRINTF])
   AC_REQUIRE([AC_FUNC_ALLOCA])
-  AC_REQUIRE([AM_FUNC_GETLOADAVG])
+  AC_FUNC_GETLOADAVG([lib])
   AC_REQUIRE([jm_SYS_PROC_UPTIME])
   AC_REQUIRE([jm_FUNC_FTRUNCATE])
   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(gethostname getusershell)
   AC_REPLACE_FUNCS(stime strcspn stpcpy strstr strtol strtoul)
   AC_REPLACE_FUNCS(strpbrk)
 
   AC_REPLACE_FUNCS(strcasecmp strncasecmp)
   AC_REPLACE_FUNCS(dup2)
   AC_REPLACE_FUNCS(gethostname getusershell)
   AC_REPLACE_FUNCS(stime strcspn stpcpy strstr strtol strtoul)
   AC_REPLACE_FUNCS(strpbrk)
-  AC_REPLACE_FUNCS(euidaccess memcmp mkdir rmdir rpmatch strndup strverscmp)
+  AC_REPLACE_FUNCS(euidaccess memcmp rmdir rpmatch strndup strverscmp)
+  AC_REPLACE_FUNCS(atexit)
+  AC_REPLACE_FUNCS(strnlen)
+  AC_REPLACE_FUNCS(getpass)
 
   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)
 
   # By default, argmatch should fail calling usage (1).
   AC_CHECK_FUNCS(getpagesize)
 
   # By default, argmatch should fail calling usage (1).
@@ -128,8 +97,16 @@ AC_DEFUN(jm_MACROS,
   # used by sleep and shred
   # Solaris 2.5.1 needs -lposix4 to get the clock_gettime function.
   # Solaris 7 prefers the library name -lrt to the obsolescent name -lposix4.
   # used by sleep and shred
   # Solaris 2.5.1 needs -lposix4 to get the clock_gettime function.
   # Solaris 7 prefers the library name -lrt to the obsolescent name -lposix4.
-  AC_SEARCH_LIBS(clock_gettime, [rt posix4])
-  AC_CHECK_FUNCS(clock_gettime)
+
+  # Save and restore LIBS so e.g., -lrt, isn't added to it.  Otherwise, *all*
+  # programs in the package would end up linked with that potentially-shared
+  # library, inducing unnecessary run-time overhead.
+  fetish_saved_libs=$LIBS
+    AC_SEARCH_LIBS(clock_gettime, [rt posix4],
+                  [LIB_CLOCK_GETTIME=$ac_cv_search_clock_gettime])
+    AC_SUBST(LIB_CLOCK_GETTIME)
+    AC_CHECK_FUNCS(clock_gettime)
+  LIBS=$fetish_saved_libs
   AC_CHECK_FUNCS(gettimeofday)
 
   AC_REQUIRE([AC_FUNC_CLOSEDIR_VOID])
   AC_CHECK_FUNCS(gettimeofday)
 
   AC_REQUIRE([AC_FUNC_CLOSEDIR_VOID])
@@ -163,6 +140,7 @@ AC_DEFUN(jm_MACROS,
     strerror \
     strrchr \
     sysinfo \
     strerror \
     strrchr \
     sysinfo \
+    wcrtomb \
     tzset \
   )
 
     tzset \
   )
 
@@ -176,9 +154,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"
+    ])
 
 
+  jm_LANGINFO_CODESET
+  jm_GLIBC21
   jm_ICONV
   jm_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])
@@ -186,20 +183,65 @@ AC_DEFUN(jm_MACROS,
   jm_FILE_SYSTEM_USAGE([space=yes], [space=no])
   if test $list_mounted_fs = yes && test $space = yes; then
     DF_PROG="df"
   jm_FILE_SYSTEM_USAGE([space=yes], [space=no])
   if test $list_mounted_fs = yes && test $space = yes; then
     DF_PROG="df"
-    LIBOBJS="$LIBOBJS fsusage.$ac_objext"
-    LIBOBJS="$LIBOBJS mountlist.$ac_objext"
+    AC_LIBOBJ(fsusage)
+    AC_LIBOBJ(mountlist)
   fi
   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/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.
 AC_DEFUN(jm_CHECK_ALL_TYPES,
 [
 # This macro must be invoked before any tests that run the compiler.
 AC_DEFUN(jm_CHECK_ALL_TYPES,
 [
-  # Enable GNU extensions.
-  # Define this here, not in acconfig's @TOP@ section, since definitions
-  # in the latter don't make it into the configure-time tests.
-  AC_DEFINE([_GNU_SOURCE], 1,
-    [Enable GNU extensions on systems that have them.])
+  # 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
@@ -219,9 +261,10 @@ 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_REQUIRE([AC_HEADER_DIRENT])
   AC_REQUIRE([AC_HEADER_STDC])
-  AC_CHECK_MEMBERS((struct stat.st_blksize),,,[$ac_includes_default
+  AC_CHECK_MEMBERS([struct stat.st_blksize],,,[$ac_includes_default
 #include <sys/stat.h>
   ])
   AC_REQUIRE([AC_STRUCT_ST_BLOCKS])
 #include <sys/stat.h>
   ])
   AC_REQUIRE([AC_STRUCT_ST_BLOCKS])