freebsd-ports/www/apache2/Makefile.modules
Clement Laforet 17cfbfeee1 Add WITH_PTHREAD_LIBS and WITH_EXPERIMENTAL_THREADS.
These options are for people who want to directly link
apache against libkse and libthr.

Usage:
    WITH_EXPERIMENTAL_THREADS=YES
            Overrides default pthread detection behaviour.
    WITH_PTHREAD_LIBS={kse;thr}
            Lets you choose your pthread lib.
            Don't even try to use "c_r"...

*** These options are unsupported ***
But all gdb backtraces are welcome :-)
AFAIK, apache works well, but mod_php4 (worker MPM) behavior
is quite funny.
All modules which use apr mutexes may crash with KSE.
Since I'm working on it, if you have coredumps, feel free
to send me the backtrace (you must compile libkse, apache
and modules with debugging symbols).
Don't forget to set kern.sugid_coredump to 1.
(using CoreDumpDirectory in httpd.conf can help too)
2004-01-21 21:21:12 +00:00

265 lines
7.9 KiB
Text

# Makefile.modules
# Author: Clement Laforet <clement@FreeBSD.org>
#
# This file is used to build modules list, DBM dependencies and MPM selection.
# I hope it can easily handle external modules (such as mod_perl) or MPMs, like
# muxmpm.
#
# Note to myself: (to generate PLIST_SUB entries for modules)
# gsed 's/^\(.*\)mod\(.*\)\.so/%%\MOD\U\2%%\L\1mod\2\.so/' pkg-plist > tmp
# mv tmp pkg-plist
#
# $FreeBSD$
#
.if defined(SLAVE_DESIGNED_FOR) && ${PORTVERSION} != ${SLAVE_DESIGNED_FOR}
BROKEN= "Sorry, ${SLAVENAME} and ${PORTNAME} versionsq are out of sync"
.endif
# MPM section:
# << TO BE WRITTEN >>
.if defined (SLAVE_PORT_MPM)
PLIST_SUB+= PREFORK="@comment " WORKER="@comment "
PKGNAMESUFFIX= -${SLAVE_PORT_MPM}
.else
. if ${WITH_MPM} != "prefork"
PKGNAMESUFFIX= -${WITH_MPM:L}
WITH_THREADS= yes
. if ${WITH_MPM:L} == "worker"
PLIST_SUB+= PREFORK="@comment " WORKER=""
. elif ${WITH_MPM:L} == "perchild"
PLIST_SUB+= PREFORK="@comment " WORKER="@comment "
. else
BROKEN= "Unknown MPM: ${WITH_MPM}"
. endif
. else
PLIST_SUB+= PREFORK="@comment " WORKER="@comment "
. endif
.else
PLIST_SUB+= PREFORK="@comment " WORKER="@comment "
.endif
# xDBM section
#
.if !defined(WITH_DBM) && defined(WITH_BERKELEYDB)
WITH_DBM=bdb
.endif
.if defined(WITH_DBM) && !defined(WITH_BERKELEYDB)
WITH_BERKELEYDB= FreeBSD
.endif
.if defined(WITH_DBM)
. if ${WITH_DBM:L} == "sdbm"
CONFIGURE_ARGS+= --with-dbm=sdbm
. elif ${WITH_DBM:L} == "gdbm"
LIB_DEPENDS+= gdbm.3:${PORTSDIR}/databases/gdbm
CONFIGURE_ARGS+= --with-gdbm=${LOCALBASE}
. elif ${WITH_DBM:L} == "db" || ${WITH_DBM:L} == "bdb"
. if ${WITH_BERKELEYDB} == "FreeBSD"
CONFIGURE_ARGS+= --with-dbm=db185 \
--with-berkeley-db=/usr
. elif ${WITH_BERKELEYDB} == "db2"
LIB_DEPENDS+= db2:${PORTSDIR}/databases/db2
CONFIGURE_ARGS+= --with-dbm=db2 \
--with-berkeley-db=${LOCALBASE}
. elif ${WITH_BERKELEYDB} == "db3"
LIB_DEPENDS+= db3:${PORTSDIR}/databases/db3
CONFIGURE_ARGS+= --with-dbm=db3 \
--with-berkeley-db=${LOCALBASE}
. elif ${WITH_BERKELEYDB} == "db4"
LIB_DEPENDS+= db4:${PORTSDIR}/databases/db4
CONFIGURE_ARGS+= --with-dbm=db4 \
--with-berkeley-db=${LOCALBASE}
. elif ${WITH_BERKELEYDB} == "db41"
LIB_DEPENDS+= db41:${PORTSDIR}/databases/db41
CONFIGURE_ARGS+= --with-dbm=db41 \
--with-berkeley-db=${LOCALBASE}
. elif ${WITH_BERKELEYDB} == "db42"
LIB_DEPENDS+= db-4.2:${PORTSDIR}/databases/db42
CONFIGURE_ARGS+= --with-dbm=db42 \
--with-berkeley-db=${LOCALBASE}/include:${LOCALBASE}/lib/db42
. else
BROKEN= "Unknown Berkeley DB version"
. endif
. else
BROKEN= "Unknown DBM"
. endif
.else
CONFIGURE_ARGS+= --with-dbm=sdbm
.endif
# Modules section:
# How does it works ?
# << TO BE WRITTEN >>
# All supported modules
AUTH_MODULES= access auth auth_anon auth_dbm auth_digest
DAV_MODULES= dav dav_fs
EXPERIMENTAL_MODULES= bucketeer case_filter case_filter_in ext_filter charset_lite \
optional_hook_export optional_hook_import \
optional_fn_import optional_fn_export
LDAP_MODULES= ldap auth_ldap
MISC_MODULES= actions alias asis autoindex cache cern_meta \
cgi cgid charset_lite deflate dir disk_cache env expires \
file_cache headers imap include info log_config logio mime \
mime_magic negotiation rewrite setenvif speling status \
unique_id userdir usertrack vhost_alias
PROXY_MODULES= proxy proxy_connect proxy_ftp proxy_http
SSL_MODULE= ssl
SUEXEC_MODULES= suexec
THREADS_MODULES= cache file_cache disk_cache mem_cache
# Work in progress
SLAVE_PORT_MODULES?= # If you are porting a slave port for apache2 please define SLAVE_PORT_MODULES
DEFAULT_MODULES= ${AUTH_MODULES} ${DAV_MODULES} ${MISC_MODULES} \
${PROXY_MODULES} ${SLAVE_PORT_MODULES}
AVAILABLE_MODULES= ${DEFAULT_MODULES} ${EXPERIMENTAL_MODULES} ${LDAP_MODULES} ${THREADS_MODULES} \
${SSL_MODULE} ${SUEXEC_MODULES} ${SLAVE_PORT_MODULES}
# Setting "@comment " as default.
.for module in ${AVAILABLE_MODULES}
${module}_PLIST_SUB= "@comment "
.endfor
# Configure
.if defined(WITH_MODULES) && ( defined(WITHOUT_MODULES) || defined(WITH_EXTRA_MODULES))
BROKEN= "WITH_MODULES and WITHOUT_MODULES are mutually exclusive"
.endif
.if defined(WITHOUT_AUTH) || defined(WITH_CUSTOM_AUTH) || \
defined(WITHOUT_PROXY) || defined(WITH_CUSTOM_PROXY) || \
defined(WITHOUT_DAV)
CUSTOM= YES
.endif
.if !defined(WITH_STATIC_APACHE)
# FYI
#DYNAMIC_MODULES= so
CONFIGURE_ARGS+= --enable-so
.else
CONFIGURE_ARGS+= --disable-so
WITH_ALL_STATIC_MODULES= YES
.endif
### This part is not processed if WITH_MODULES is defined
.if defined(WITH_MODULES)
_APACHE_MODULES+= ${WITH_MODULES}
.elif !defined(CUSTOM)
_APACHE_MODULES+= ${DEFAULT_MODULES}
.else
. if defined(WITH_CUSTOM_AUTH)
_APACHE_MODULES+= ${WITH_CUSTOM_AUTH}
. elif !defined(WITHOUT_AUTH)
_APACHE_MODULES+= ${AUTH_MODULES}
. endif
. if defined(WITH_CUSTOM_PROXY)
_APACHE_MODULES+= ${WITH_CUSTOM_PROXY}
. elif !defined(WITHOUT_PROXY)
_APACHE_MODULES+= ${PROXY_MODULES}
. endif
. if !defined(WITHOUT_DAV)
_APACHE_MODULES+= dav dav_fs
. endif
_APACHE_MODULES+= ${MISC_MODULES} ${SLAVE_PORT_MODULES}
.endif # end of module selection
.if defined (WITH_LDAP)
_APACHE_MODULES+= ${LDAP_MODULES}
.endif
.if defined(WITH_THREADS)
CONFIGURE_ARGS+= --enable-threads
CFLAGS+= -DFREEBSD_THREAD_HACK
. if defined(WITH_EXPERIMENTAL_THREADS)
CONFIGURE_ARGS+= ac_cv_pthreads_lib=${WITH_PTHREAD_LIBS}
. endif
. if !defined(WITH_CUSTOM_THREADS)
_APACHE_MODULES+= ${THREAD_MODULES}
. else
_APACHE_MODULES+= ${WITH_CUSTOM_THREADS}
. endif
.endif # endif of module selection
.if !defined(WITHOUT_SSL)
_APACHE_MODULES+= ${SSL_MODULE}
CONFIGURE_ARGS+= --with-ssl=${OPENSSLBASE}
RC_SUB+= -e 's,@@SSL@@,ssl,g'
.else
RC_SUB+= -e 's,@@SSL@@,,g'
.endif
.if defined(WITH_SUEXEC)
SUEXEC_DOCROOT?= ${PREFIX_RELDEST}/www/data
SUEXEC_USERDIR?= public_html
SUEXEC_SAFEPATH?= ${PREFIX_RELDEST}/bin:${LOCALBASE}/bin:/usr/bin:/bin
SUEXEC_UIDMIN?= 1000
SUEXEC_GIDMIN?= 1000
SUEXEC_CALLER?= ${WWWOWN}
_APACHE_MODULES+= ${SUEXEC_MODULES}
CONFIGURE_ARGS+= --with-suexec-caller=${SUEXEC_CALLER} \
--with-suexec-uidmin=${SUEXEC_UIDMIN} \
--with-suexec-gidmin=${SUEXEC_GIDMIN} \
--with-suexec-userdir="${SUEXEC_USERDIR}" \
--with-suexec-docroot="${SUEXEC_DOCROOT}" \
--with-suexec-safepath="${SUEXEC_SAFEPATH}" \
--with-suexec-logfile="/var/log/httpd-suexec.log" \
--with-suexec-bin="${PREFIX_RELDEST}/sbin/suexec"
. if defined(WITH_SUEXEC_UMASK)
CONFIGURE_ARGS+= --with-suexec-umask=${WITH_SUEXEC_UMASK}
. endif
.endif
.if defined(WITH_EXTRA_MODULES)
_APACHE_MODULES+= ${WITH_EXTRA_MODULES}
.endif
.if defined(WITH_EXPERIMENTAL)
_APACHE_MODULES+= ${EXPERIMENTAL_MODULES}
.endif
.if !defined(WITHOUT_MODULES)
APACHE_MODULES= ${_APACHE_MODULES}
.else
APACHE_MODULES!= \
for module in ${_APACHE_MODULES}; do \
${ECHO_CMD} ${WITHOUT_MODULES} | ${GREP} -wq $${module} 2> /dev/null || \
${ECHO_CMD} $${module}; \
done
.endif
.if defined(WITH_STATIC_MODULES)
_CONFIGURE_ARGS!= \
for module in ${APACHE_MODULES} ; do \
${ECHO_CMD} ${WITH_STATIC_MODULES} | \
${GREP} -wq $${module} 2> /dev/null ; \
if [ "$${?}" = "0" ] ; then \
${ECHO_CMD} "--enable-$${module}"; \
else \
${ECHO_CMD} "--enable-$${module}=shared"; \
fi; done
CONFIGURE_ARGS+= ${_CONFIGURE_ARGS}
.elif defined(WITH_STATIC_APACHE) || defined(WITH_ALL_STATIC_MODULES)
CONFIGURE_ARGS+= --enable-modules="${APACHE_MODULES}"
.else
CONFIGURE_ARGS+= --enable-mods-shared="${APACHE_MODULES}"
.endif
.if defined(WITH_STATIC_MODULES)
_SHARED_MODULES!= \
for module in ${APACHE_MODULES} ; do \
${ECHO_CMD} ${WITH_STATIC_MODULES} | ${GREP} -wq $${module} 2> /dev/null || \
${ECHO_CMD} $${module}; \
done
SHARED_MODULES= ${_SHARED_MODULES}
.elif !defined(WITH_ALL_STATIC_MODULES)
SHARED_MODULES= ${APACHE_MODULES}
.endif
. for module in ${SHARED_MODULES}
${module}_PLIST_SUB= ""
. endfor
.for module in ${AVAILABLE_MODULES}
PLIST_SUB+= MOD_${module:U}=${${module}_PLIST_SUB}
.endfor