1 # mmap-anon.m4 serial 6
2 dnl Copyright (C) 2005, 2007, 2009 Free Software Foundation, Inc.
3 dnl This file is free software; the Free Software Foundation
4 dnl gives unlimited permission to copy and/or distribute it,
5 dnl with or without modifications, as long as this notice is preserved.
7 # Detect how mmap can be used to create anonymous (not file-backed) memory
9 # - On Linux, AIX, OSF/1, Solaris, Cygwin, Interix, Haiku, both MAP_ANONYMOUS
10 # and MAP_ANON exist and have the same value.
11 # - On HP-UX, only MAP_ANONYMOUS exists.
12 # - On MacOS X, FreeBSD, NetBSD, OpenBSD, only MAP_ANON exists.
13 # - On IRIX, neither exists, and a file descriptor opened to /dev/zero must be
16 AC_DEFUN([gl_FUNC_MMAP_ANON],
18 dnl Work around a bug of AC_EGREP_CPP in autoconf-2.57.
19 AC_REQUIRE([AC_PROG_CPP])
20 AC_REQUIRE([AC_PROG_EGREP])
22 dnl Persuade glibc <sys/mman.h> to define MAP_ANONYMOUS.
23 AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])
28 # Try to allow MAP_ANONYMOUS.
29 gl_have_mmap_anonymous=no
30 if test $ac_cv_func_mmap_fixed_mapped = yes; then
31 AC_MSG_CHECKING([for MAP_ANONYMOUS])
32 AC_EGREP_CPP([I cant identify this map.], [
35 I cant identify this map.
38 [gl_have_mmap_anonymous=yes])
39 if test $gl_have_mmap_anonymous != yes; then
40 AC_EGREP_CPP([I cant identify this map.], [
43 I cant identify this map.
46 [AC_DEFINE([MAP_ANONYMOUS], [MAP_ANON],
47 [Define to a substitute value for mmap()'s MAP_ANONYMOUS flag.])
48 gl_have_mmap_anonymous=yes])
50 AC_MSG_RESULT([$gl_have_mmap_anonymous])
51 if test $gl_have_mmap_anonymous = yes; then
52 AC_DEFINE([HAVE_MAP_ANONYMOUS], [1],
53 [Define to 1 if mmap()'s MAP_ANONYMOUS flag is available after including
54 config.h and <sys/mman.h>.])