maint: update copyright
[gnulib.git] / m4 / mmap-anon.m4
index 6093567..94ae2e2 100644 (file)
@@ -1,54 +1,55 @@
-# mmap-anon.m4 serial 1
-dnl Copyright (C) 2005 Free Software Foundation, Inc.
+# mmap-anon.m4 serial 10
+dnl Copyright (C) 2005, 2007, 2009-2014 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
 dnl with or without modifications, as long as this notice is preserved.
 
-AC_DEFUN([gl_FUNC_MMAP],
-[
-  dnl Work around a bug of AC_EGREP_CPP in autoconf-2.57.
-  AC_REQUIRE([AC_PROG_CPP])
-  AC_REQUIRE([AC_PROG_EGREP])
+# Detect how mmap can be used to create anonymous (not file-backed) memory
+# mappings.
+# - On Linux, AIX, OSF/1, Solaris, Cygwin, Interix, Haiku, both MAP_ANONYMOUS
+#   and MAP_ANON exist and have the same value.
+# - On HP-UX, only MAP_ANONYMOUS exists.
+# - On Mac OS X, FreeBSD, NetBSD, OpenBSD, only MAP_ANON exists.
+# - On IRIX, neither exists, and a file descriptor opened to /dev/zero must be
+#   used.
 
+AC_DEFUN([gl_FUNC_MMAP_ANON],
+[
   dnl Persuade glibc <sys/mman.h> to define MAP_ANONYMOUS.
-  AC_REQUIRE([AC_GNU_SOURCE])
+  AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
 
-  # Check for mmap()
-  AC_FUNC_MMAP
+  # Check for mmap(). Don't use AC_FUNC_MMAP, because it checks too much: it
+  # fails on HP-UX 11, because MAP_FIXED mappings do not work. But this is
+  # irrelevant for anonymous mappings.
+  AC_CHECK_FUNC([mmap], [gl_have_mmap=yes], [gl_have_mmap=no])
 
   # Try to allow MAP_ANONYMOUS.
   gl_have_mmap_anonymous=no
-  if test $ac_cv_func_mmap_fixed_mapped = yes; then
+  if test $gl_have_mmap = yes; then
     AC_MSG_CHECKING([for MAP_ANONYMOUS])
-    AC_EGREP_CPP([I cant identify this map.], [
+    AC_EGREP_CPP([I cannot identify this map], [
 #include <sys/mman.h>
 #ifdef MAP_ANONYMOUS
-    I cant identify this map.
+    I cannot identify this map
 #endif
 ],
       [gl_have_mmap_anonymous=yes])
-    if test $gl_have_mmap_anonymous = no; then
-      AC_EGREP_HEADER([MAP_ANON], [
+    if test $gl_have_mmap_anonymous != yes; then
+      AC_EGREP_CPP([I cannot identify this map], [
 #include <sys/mman.h>
 #ifdef MAP_ANON
-    I cant identify this map.
+    I cannot identify this map
 #endif
 ],
-        [AC_DEFINE(MAP_ANONYMOUS, MAP_ANON,
+        [AC_DEFINE([MAP_ANONYMOUS], [MAP_ANON],
           [Define to a substitute value for mmap()'s MAP_ANONYMOUS flag.])
          gl_have_mmap_anonymous=yes])
     fi
-    AC_MSG_RESULT($gl_have_mmap_anonymous)
+    AC_MSG_RESULT([$gl_have_mmap_anonymous])
     if test $gl_have_mmap_anonymous = yes; then
-      AC_DEFINE(HAVE_MAP_ANONYMOUS, 1,
+      AC_DEFINE([HAVE_MAP_ANONYMOUS], [1],
         [Define to 1 if mmap()'s MAP_ANONYMOUS flag is available after including
          config.h and <sys/mman.h>.])
     fi
-
-    AH_VERBATIM([MAP_FILE],
-[/* Define MAP_FILE when it isn't otherwise.  */
-#ifndef MAP_FILE
-# define MAP_FILE 0
-#endif])
   fi
 ])