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 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 }