Distribute allocsa.valgrind.
[gnulib.git] / m4 / jm-macros.m4
index cb4a5ae..6a4e250 100644 (file)
@@ -1,10 +1,29 @@
-#serial 39   -*- autoconf -*-
+#serial 76   -*- autoconf -*-
 
-dnl Misc type-related macros for fileutils, sh-utils, textutils.
+dnl Misc type-related macros for coreutils.
 
-AC_DEFUN([jm_MACROS],
+# Copyright (C) 1998, 2000, 2001, 2002, 2003, 2004 Free Software
+# Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software Foundation,
+# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+# Written by Jim Meyering.
+
+AC_DEFUN([gl_MACROS],
 [
-  AC_PREREQ(2.52)
+  AC_PREREQ(2.58)
 
   GNU_PACKAGE="GNU $PACKAGE"
   AC_DEFINE_UNQUOTED(GNU_PACKAGE, "$GNU_PACKAGE",
@@ -13,84 +32,52 @@ AC_DEFUN([jm_MACROS],
 
   AM_MISSING_PROG(HELP2MAN, help2man)
   AC_SUBST(OPTIONAL_BIN_PROGS)
-  AC_SUBST(OPTIONAL_BIN_ZCRIPTS)
   AC_SUBST(MAN)
   AC_SUBST(DF_PROG)
 
   dnl This macro actually runs replacement code.  See isc-posix.m4.
   AC_REQUIRE([AC_ISC_POSIX])dnl
 
-  jm_CHECK_ALL_TYPES
-  jm_INCLUDED_REGEX([lib/regex.c])
+  gl_CHECK_ALL_TYPES
 
-  AC_REQUIRE([UTILS_HOST_OS])
-  AC_REQUIRE([UTILS_FUNC_MKDIR_TRAILING_SLASH])
-  AC_REQUIRE([jm_BISON])
-  AC_REQUIRE([jm_ASSERT])
-  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_DECLS])
+  AC_REQUIRE([gl_HOST_OS])
+  AC_REQUIRE([gl_ASSERT])
+  AC_REQUIRE([gl_CHECK_TYPE_STRUCT_UTIMBUF])
+  AC_REQUIRE([gl_CHECK_TYPE_STRUCT_DIRENT_D_TYPE])
+  AC_REQUIRE([gl_CHECK_TYPE_STRUCT_DIRENT_D_INO])
+  AC_REQUIRE([gl_CHECK_DECLS])
 
-  AC_REQUIRE([jm_PREREQ])
+  AC_REQUIRE([gl_PREREQ])
 
-  AC_REQUIRE([UTILS_FUNC_DIRFD])
-  AC_REQUIRE([jm_FUNC_LCHOWN])
+  AC_REQUIRE([gl_FUNC_DIRFD])
+  AC_REQUIRE([AC_FUNC_ACL])
+  AC_REQUIRE([gl_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([gl_FUNC_CHOWN])
   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([AC_FUNC_STRERROR_R])
-  AC_REQUIRE([jm_FUNC_NANOSLEEP])
-  AC_REQUIRE([jm_FUNC_READDIR])
-  AC_REQUIRE([jm_FUNC_MEMCMP])
-  AC_REQUIRE([jm_FUNC_GLIBC_UNLOCKED_IO])
-  AC_REQUIRE([jm_FUNC_FNMATCH])
-  AC_REQUIRE([jm_FUNC_GROUP_MEMBER])
-  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_FUNC_FPENDING])
-
-  AC_REQUIRE([jm_FUNC_GETGROUPS])
-  test -n "$GETGROUPS_LIB" && LIBS="$GETGROUPS_LIB $LIBS"
-
-  AC_REQUIRE([AC_FUNC_VPRINTF])
+  AC_REQUIRE([gl_FUNC_GROUP_MEMBER])
+  AC_REQUIRE([gl_AFS])
+  AC_REQUIRE([gl_AC_FUNC_LINK_FOLLOWS_SYMLINK])
+  AC_REQUIRE([gl_FUNC_FPENDING])
+
+  # This is for od and stat, and any other program that
+  # uses the PRI.MAX macros from inttypes.h.
+  AC_REQUIRE([gt_INTTYPES_PRI])
+
+  AC_REQUIRE([gl_FUNC_GETGROUPS])
+
+  AC_REQUIRE([AC_FUNC_FSEEKO])
   AC_REQUIRE([AC_FUNC_ALLOCA])
+
+  AC_CONFIG_LIBOBJ_DIR([lib])
   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(gethostname getusershell)
-  AC_REPLACE_FUNCS(stime strcspn stpcpy strstr strtol strtoul)
-  AC_REPLACE_FUNCS(strpbrk)
-  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)
-
-  AC_REPLACE_FUNCS(memchr memcpy memmove memrchr memset)
-  AC_CHECK_FUNCS(getpagesize)
-
-  AC_REPLACE_FUNCS(mkstemp)
-  if test $ac_cv_func_mkstemp != yes; then
-    AC_LIBOBJ(tempname)
-  fi
+
+  AC_REQUIRE([gl_SYS_PROC_UPTIME])
+  AC_REQUIRE([gl_FUNC_FTRUNCATE])
+
+  # raise is used by at least sort and ls.
+  AC_REPLACE_FUNCS(raise)
 
   # By default, argmatch should fail calling usage (1).
   AC_DEFINE(ARGMATCH_DIE, [usage (1)],
@@ -104,65 +91,55 @@ AC_DEFUN([jm_MACROS],
   AC_FUNC_SETVBUF_REVERSED
 
   # 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.
-
-  # 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([gl_CLOCK_TIME])
+  AC_CHECK_FUNCS_ONCE(gettimeofday)
   AC_FUNC_GETTIMEOFDAY_CLOBBER
+  # used by shred
+  AC_CHECK_FUNCS_ONCE(directio)
 
   AC_REQUIRE([AC_FUNC_CLOSEDIR_VOID])
-  AC_REQUIRE([jm_FUNC_UTIME])
 
-  AC_CHECK_FUNCS( \
-    acl \
-    bcopy \
-    canonicalize_file_name \
+  AC_CHECK_FUNCS_ONCE( \
     endgrent \
     endpwent \
-    fchdir \
-    fdatasync \
-    ftime \
     ftruncate \
-    getcwd \
     gethrtime \
-    getmntinfo \
     hasmntopt \
     isascii \
+    iswspace \
     lchown \
     listmntent \
     localeconv \
     memcpy \
     mempcpy \
     mkfifo \
+    mbrlen \
     realpath \
-    resolvepath \
     sethostname \
     strchr \
     strerror \
     strrchr \
+    sysctl \
     sysinfo \
+    tcgetpgrp \
     wcrtomb \
     tzset \
   )
 
-  AM_FUNC_GETLINE
-  if test $am_cv_func_working_getline != yes; then
-    AC_CHECK_FUNCS(getdelim)
-  fi
-  AM_FUNC_OBSTACK
+  AC_FUNC_STRTOD
 
-  AM_FUNC_STRTOD
-  AC_SUBST(POW_LIBM)
-  test $am_cv_func_strtod_needs_libm = yes && POW_LIBM=-lm
+  AC_REQUIRE([cu_PREREQ_STAT_PROG])
+  AC_REQUIRE([GL_FUNC_GETCWD_PATH_MAX])
+  AC_REQUIRE([GL_FUNC_READDIR])
+
+  # for dd.c and shred.c
+  fetish_saved_libs=$LIBS
+    AC_SEARCH_LIBS([fdatasync], [rt posix4],
+                  [test "$ac_cv_search_fdatasync" = "none required" ||
+                   LIB_FDATASYNC=$ac_cv_search_fdatasync])
+    AC_SUBST([LIB_FDATASYNC])
+    AC_CHECK_FUNCS(fdatasync)
+  LIBS=$fetish_saved_libs
 
   # See if linking `seq' requires -lm.
   # It does on nearly every system.  The single exception (so far) is
@@ -183,33 +160,36 @@ AC_DEFUN([jm_MACROS],
     ])
 
   AM_LANGINFO_CODESET
-  jm_GLIBC21
+  gl_GLIBC21
   AM_ICONV
-  jm_FUNC_UNLINK_BUSY_TEXT
+  gl_FUNC_UNLINK_BUSY_TEXT
 
   # These tests are for df.
-  jm_LIST_MOUNTED_FILESYSTEMS([list_mounted_fs=yes], [list_mounted_fs=no])
-  jm_FSTYPENAME
-  jm_FILE_SYSTEM_USAGE([space=yes], [space=no])
-  if test $list_mounted_fs = yes && test $space = yes; then
-    DF_PROG="df"
-    AC_LIBOBJ(fsusage)
-    AC_LIBOBJ(mountlist)
+  AC_REQUIRE([gl_FSUSAGE])
+  AC_REQUIRE([gl_MOUNTLIST])
+  if test $gl_cv_list_mounted_fs = yes && test $gl_cv_fs_space = yes; then
+    DF_PROG='df$(EXEEXT)'
   fi
-  AC_REQUIRE([jm_AC_DOS])
+  AC_REQUIRE([gl_AC_DOS])
+  AC_REQUIRE([AC_FUNC_CANONICALIZE_FILE_NAME])
+
+  # If any of these functions don't exist (e.g. DJGPP 2.03),
+  # use the corresponding stub.
+  AC_CHECK_FUNC([fchdir], , [AC_LIBOBJ(fchdir-stub)])
 
+  AC_REQUIRE([gl_FUNC_FREE])
 ])
 
 # 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_DEFUN([gl_CHECK_ALL_HEADERS],
 [
-  AC_CHECK_HEADERS( \
+  AC_CHECK_HEADERS_ONCE( \
     errno.h  \
     fcntl.h \
-    fenv.h \
     float.h \
+    hurd.h \
     limits.h \
     memory.h \
     mntent.h \
@@ -220,14 +200,12 @@ AC_DEFUN([jm_CHECK_ALL_HEADERS],
     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 \
@@ -242,18 +220,17 @@ AC_DEFUN([jm_CHECK_ALL_HEADERS],
     termios.h \
     unistd.h \
     utime.h \
-    values.h \
   )
+  AC_CHECK_HEADERS(sys/mount.h sys/sysctl.h, [], [],
+    [AC_INCLUDES_DEFAULT
+     [#if HAVE_SYS_PARAM_H
+       #include <sys/param.h>
+      #endif]])
 ])
 
 # This macro must be invoked before any tests that run the compiler.
-AC_DEFUN([jm_CHECK_ALL_TYPES],
+AC_DEFUN([gl_CHECK_ALL_TYPES],
 [
-  # 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 whether functions and headers are available, whether they work, etc.
@@ -266,44 +243,47 @@ AC_DEFUN([jm_CHECK_ALL_TYPES],
 
   dnl Checks for typedefs, structures, and compiler characteristics.
   AC_REQUIRE([AC_C_BIGENDIAN])
-  AC_REQUIRE([AC_PROG_CC_STDC])
   AC_REQUIRE([AC_C_CONST])
   AC_REQUIRE([AC_C_VOLATILE])
   AC_REQUIRE([AC_C_INLINE])
   AC_REQUIRE([AC_C_LONG_DOUBLE])
 
-  AC_REQUIRE([jm_CHECK_ALL_HEADERS])
+  AC_REQUIRE([gl_CHECK_ALL_HEADERS])
   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_author,
+     struct stat.st_blksize],,,
+    [$ac_includes_default
 #include <sys/stat.h>
   ])
   AC_REQUIRE([AC_STRUCT_ST_BLOCKS])
 
-  AC_REQUIRE([AC_STRUCT_TM])
-  AC_REQUIRE([AC_STRUCT_TIMEZONE])
   AC_REQUIRE([AC_HEADER_STAT])
   AC_REQUIRE([AC_STRUCT_ST_MTIM_NSEC])
   AC_REQUIRE([AC_STRUCT_ST_DM_MODE])
-  AC_REQUIRE([jm_CHECK_TYPE_STRUCT_TIMESPEC])
 
   AC_REQUIRE([AC_TYPE_GETGROUPS])
+  AC_REQUIRE([AC_TYPE_MBSTATE_T])
   AC_REQUIRE([AC_TYPE_MODE_T])
   AC_REQUIRE([AC_TYPE_OFF_T])
   AC_REQUIRE([AC_TYPE_PID_T])
   AC_REQUIRE([AC_TYPE_SIGNAL])
   AC_REQUIRE([AC_TYPE_SIZE_T])
   AC_REQUIRE([AC_TYPE_UID_T])
-  AC_CHECK_TYPE(ino_t, unsigned long)
+  AC_CHECK_TYPE(ino_t, unsigned long int)
+
+  gt_TYPE_SSIZE_T
 
   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([gl_AC_TYPE_UINT32_T])
+  AC_REQUIRE([gl_AC_TYPE_UINTMAX_T])
+  AC_REQUIRE([gl_AC_TYPE_UINTPTR_T])
+  AC_REQUIRE([gl_AC_TYPE_UNSIGNED_LONG_LONG])
 
   AC_REQUIRE([AC_HEADER_MAJOR])
   AC_REQUIRE([AC_HEADER_DIRENT])