APR's configure script uses AC_TRY_RUN to detect whether /dev/zero can
be mmaped. When cross-compiling this defaults to no. While APR compiles
fine like this (since r1873594 in the APR 1.7 branch), the apr_lock
implementation method falls back to SysV IPC semget().
<snip>
checking for mmap that can map /dev/zero... no
<snip>
decision on apr_lock implementation method... SysV IPC semget()
<snip>
This commit adds a cache check with which users who cross-compile APR
can influence the outcome of the test by setting the variable
ac_cv_mmap__dev_zero=yes:
<snip>
checking for mmap that can map /dev/zero... (cached) yes
<snip>
decision on apr_lock implementation method... pthread pshared mutex
<snip>
This way the new default apr_lock mechanism can also be used when
cross-compiling (if /dev/zero is in fact mmapable that is).
Index: configure.in
===================================================================
--- configure.in (revision 1873663)
+++ configure.in (working copy)
@@ -1186,8 +1186,9 @@
# Not all systems can mmap /dev/zero (such as HP-UX). Check for that.
if test "$ac_cv_func_mmap" = "yes" &&
test "$ac_cv_file__dev_zero" = "yes"; then
- AC_MSG_CHECKING(for mmap that can map /dev/zero)
- AC_TRY_RUN([
+ AC_CACHE_CHECK([for mmap that can map /dev/zero],
+ [ac_cv_mmap__dev_zero],
+ [AC_TRY_RUN([
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
@@ -1210,9 +1211,7 @@
return 3;
}
return 0;
- }], [], [ac_cv_file__dev_zero=no], [ac_cv_file__dev_zero=no])
-
- AC_MSG_RESULT($ac_cv_file__dev_zero)
+ }], [], [ac_cv_file__dev_zero=no], [ac_cv_file__dev_zero=no])])
fi
# Now we determine which one is our anonymous shmem preference.