summaryrefslogtreecommitdiffstats
path: root/server/mpm/config.m4
blob: 08541b0932b0a86ff586c29cb402266968208c53 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
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
dnl XXX supports APR_POLLSET_THREADSAFE.
dnl FIXME with a run-time check for
dnl     apr_pollset_create(,,APR_POLLSET_THREADSAFE) == APR_SUCCESS
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
    have_threadsafe_pollset=yes
else
    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,[
    SUPPORTED_MPMS="$SUPPORTED_MPMS $1 "
    if test "$3" = "yes"; then
        THREADED_MPMS="$THREADED_MPMS $1 "
    fi
])dnl

dnl APACHE_MPM_ENABLED(name)
AC_DEFUN(APACHE_MPM_ENABLED,[
    if ap_mpm_is_enabled $1; then
        :
    else
        ENABLED_MPMS="$ENABLED_MPMS $1 "
    fi
])dnl

ap_mpm_is_supported ()
{
    if echo "$SUPPORTED_MPMS" | grep " $1 " >/dev/null; 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 $ENABLED_MPMS; do
        if echo "$THREADED_MPMS" | grep " $mpm " >/dev/null; then
            return 0
        fi
    done
    return 1
}

ap_mpm_is_enabled ()
{
    if echo "$ENABLED_MPMS" | grep " $1 " >/dev/null; then
        return 0
    else
        return 1
    fi
}