| dnl common platform checks needed by MPMs, methods for MPMs to state | |
| dnl their support for the platform, functions to query MPM properties | |
| APR_CHECK_APR_DEFINE(APR_HAS_THREADS) | |
| have_threaded_sig_graceful=yes | |
| case $host in | |
| *-linux-*) | |
| case `uname -r` in | |
| 2.0* ) | |
| dnl Threaded MPM's are not supported on Linux 2.0 | |
| dnl as on 2.0 the linuxthreads library uses SIGUSR1 | |
| dnl and SIGUSR2 internally | |
| have_threaded_sig_graceful=no | |
| ;; | |
| esac | |
| ;; | |
| esac | |
| dnl See if APR supports APR_POLLSET_THREADSAFE. | |
| dnl XXX This hack tests for the underlying functions used by APR when it supports | |
| dnl XXX APR_POLLSET_THREADSAFE, and duplicates APR's Darwin version check. | |
| dnl A run-time check for | |
| dnl apr_pollset_create(,,APR_POLLSET_THREADSAFE) == APR_SUCCESS | |
| dnl would be great but an in-tree apr (srclib/apr) hasn't been built yet. | |
| AC_CACHE_CHECK([whether APR supports thread-safe pollsets], [ac_cv_have_threadsafe_pollset], [ | |
| case $host in | |
| *-apple-darwin[[1-9]].*) | |
| APR_SETIFNULL(ac_cv_func_kqueue, [no]) | |
| ;; | |
| esac | |
| AC_CHECK_FUNCS(kqueue port_create epoll_create) | |
| if test "$ac_cv_func_kqueue$ac_cv_func_port_create$ac_cv_func_epoll_create" != "nonono"; then | |
| ac_cv_have_threadsafe_pollset=yes | |
| else | |
| ac_cv_have_threadsafe_pollset=no | |
| fi | |
| ]) | |
| dnl See if APR has skiplist | |
| dnl The base httpd prereq is APR 1.4.x, so we don't have to consider | |
| dnl earlier versions. | |
| case $APR_VERSION in | |
| 1.4*) | |
| apr_has_skiplist=no | |
| ;; | |
| *) | |
| apr_has_skiplist=yes | |
| esac | |
| dnl See if this is a forking platform w.r.t. MPMs | |
| case $host in | |
| *mingw32* | *os2-emx*) | |
| forking_mpms_supported=no | |
| ;; | |
| *) | |
| forking_mpms_supported=yes | |
| ;; | |
| esac | |
| dnl APACHE_MPM_SUPPORTED(name, supports-shared, is_threaded) | |
| AC_DEFUN([APACHE_MPM_SUPPORTED],[ | |
| if test "$2" = "yes"; then | |
| eval "ap_supported_mpm_$1=shared" | |
| ap_supported_shared_mpms="$ap_supported_shared_mpms $1 " | |
| else | |
| eval "ap_supported_mpm_$1=static" | |
| fi | |
| if test "$3" = "yes"; then | |
| eval "ap_threaded_mpm_$1=yes" | |
| fi | |
| ])dnl | |
| dnl APACHE_MPM_ENABLED(name) | |
| AC_DEFUN([APACHE_MPM_ENABLED],[ | |
| if ap_mpm_is_enabled $1; then | |
| : | |
| else | |
| eval "ap_enabled_mpm_$1=yes" | |
| ap_enabled_mpms="$ap_enabled_mpms $1 " | |
| fi | |
| ])dnl | |
| ap_mpm_is_supported () | |
| { | |
| eval "tmp=\$ap_supported_mpm_$1" | |
| if test -z "$tmp"; then | |
| return 1 | |
| else | |
| return 0 | |
| fi | |
| } | |
| ap_mpm_supports_shared () | |
| { | |
| eval "tmp=\$ap_supported_mpm_$1" | |
| if test "$tmp" = "shared"; then | |
| return 0 | |
| else | |
| return 1 | |
| fi | |
| } | |
| ap_mpm_is_threaded () | |
| { | |
| if test "$mpm_build" = "shared" -a ac_cv_define_APR_HAS_THREADS = "yes"; then | |
| return 0 | |
| fi | |
| for mpm in $ap_enabled_mpms; do | |
| eval "tmp=\$ap_threaded_mpm_$mpm" | |
| if test "$tmp" = "yes"; then | |
| return 0 | |
| fi | |
| done | |
| return 1 | |
| } | |
| ap_mpm_is_enabled () | |
| { | |
| eval "tmp=\$ap_enabled_mpm_$1" | |
| if test "$tmp" = "yes"; then | |
| return 0 | |
| else | |
| return 1 | |
| fi | |
| } |