dnl APACHE_HELP_STRING(LHS, RHS)
dnl Autoconf 2.50 can not handle substr correctly. It does have
dnl AC_HELP_STRING, so let's try to call it if we can.
dnl Note: this define must be on one line so that it can be properly returned
AC_DEFUN(APACHE_HELP_STRING,[ifelse(regexp(AC_ACVERSION, 2\.1), -1, AC_HELP_STRING($1,$2),[ ]$1 substr([ ],len($1))$2)])dnl
dnl APACHE_SUBST(VARIABLE)
dnl Makes VARIABLE available in generated files
dnl (do not use @variable@ in Makefiles, but $(variable))
APACHE_VAR_SUBST="$APACHE_VAR_SUBST $1"
dnl APACHE_FAST_OUTPUT(FILENAME)
dnl Perform substitutions on FILENAME (Makefiles only)
AC_DEFUN(APACHE_FAST_OUTPUT,[
APACHE_FAST_OUTPUT_FILES="$APACHE_FAST_OUTPUT_FILES $1"
dnl APACHE_GEN_CONFIG_VARS
AC_DEFUN(APACHE_GEN_CONFIG_VARS,[
APACHE_SUBST(exec_prefix)
APACHE_SUBST(localstatedir)
APACHE_SUBST(installbuilddir)
APACHE_SUBST(proxycachedir)
APACHE_SUBST(other_targets)
APACHE_SUBST(CC_FOR_BUILD)
APACHE_SUBST(CFLAGS_FOR_BUILD)
APACHE_SUBST(HTTPD_LDFLAGS)
APACHE_SUBST(UTIL_LDFLAGS)
APACHE_SUBST(NOTEST_CPPFLAGS)
APACHE_SUBST(NOTEST_CFLAGS)
APACHE_SUBST(NOTEST_CXXFLAGS)
APACHE_SUBST(NOTEST_LDFLAGS)
APACHE_SUBST(NOTEST_LIBS)
APACHE_SUBST(EXTRA_CPPFLAGS)
APACHE_SUBST(EXTRA_CFLAGS)
APACHE_SUBST(EXTRA_CXXFLAGS)
APACHE_SUBST(EXTRA_LDFLAGS)
APACHE_SUBST(EXTRA_INCLUDES)
APACHE_SUBST(INTERNAL_CPPFLAGS)
APACHE_SUBST(MODULE_DIRS)
APACHE_SUBST(MODULE_CLEANDIRS)
APACHE_SUBST(CORE_IMPLIB_FILE)
APACHE_SUBST(CORE_IMPLIB)
APACHE_SUBST(INSTALL_PROG_FLAGS)
APACHE_SUBST(DSO_MODULES)
APACHE_SUBST(ENABLED_DSO_MODULES)
APACHE_SUBST(LOAD_ALL_MODULES)
APACHE_SUBST(APR_INCLUDEDIR)
APACHE_SUBST(APR_VERSION)
APACHE_SUBST(APU_INCLUDEDIR)
APACHE_SUBST(APU_VERSION)
APACHE_SUBST(APREQ_MAJOR_VERSION)
APACHE_SUBST(APREQ_LIBTOOL_VERSION)
abs_srcdir="`(cd $srcdir && pwd)`"
test -d build || $mkdir_p build
for i in $APACHE_VAR_SUBST; do
AC_DEFUN(APACHE_GEN_MAKEFILES,[
dnl ## APACHE_OUTPUT(file)
dnl ## adds "file" to the list of files generated by AC_OUTPUT
dnl ## This macro can be used several times.
AC_DEFUN(APACHE_OUTPUT, [
APACHE_OUTPUT_FILES="$APACHE_OUTPUT_FILES $1"
dnl If rlim_t is not defined, define it to int
AC_DEFUN(APACHE_TYPE_RLIM_T, [
AC_CACHE_CHECK([for rlim_t], ac_cv_type_rlim_t, [
if test "$ac_cv_type_rlim_t" = "no" ; then
dnl APACHE_MODPATH_INIT(modpath)
AC_DEFUN(APACHE_MODPATH_INIT,[
modpath_current=modules/$1
AC_DEFUN(APACHE_MODPATH_FINISH,[
if test ! -z "$modpath_static" -o ! -z "$modpath_shared"; then
MODULE_DIRS="$MODULE_DIRS $current_dir"
MODULE_CLEANDIRS="$MODULE_CLEANDIRS $current_dir"
dnl APACHE_MODPATH_ADD(name[, shared[, objects [, ldflags[, libs]]]])
AC_DEFUN(APACHE_MODPATH_ADD,[
if test -z "$module_standalone"; then
# The filename of a convenience library must have a "lib" prefix:
BUILTIN_LIBS="$BUILTIN_LIBS $modpath_current/$libname"
modpath_static="$modpath_static $libname"
shobjects=`echo $objects | sed 's/\.lo/.slo/g'`
modpath_shared="$modpath_shared $libname"
\$(SH_LINK) -rpath \$(libexecdir) -module -avoid-version $4 $objects $5
dnl APACHE_MPM_MODULE(name[, shared[, objects[, config[, path[, libs]]]]])
dnl Provide information for building the MPM. (Enablement is handled using
dnl --with-mpm/--enable-mpms-shared.)
dnl name -- name of MPM, same as MPM directory name
dnl shared -- "shared" to indicate shared module build, empty string otherwise
dnl objects -- one or more .lo files to link into the MPM module (default:
mpmname.lo)
dnl config -- configuration logic to run if the MPM is enabled
dnl libs -- libs needed by this MPM
AC_DEFUN(APACHE_MPM_MODULE,[
if ap_mpm_is_enabled $1; then
shobjects=`echo $objects | sed 's/\.lo/.slo/g'`
\$(SH_LINK) -rpath \$(libexecdir) -module -avoid-version $objects $6
# add default MPM to LoadModule list
if test $1 = $default_mpm; then
DSO_MODULES="$DSO_MODULES mpm_$1"
ENABLED_DSO_MODULES="${ENABLED_DSO_MODULES},mpm_$1"
dnl APACHE_MODULE(name, helptext[, objects[, structname[, default[, config[, prereq_module]]]]])
dnl yes -- enabled by default. user must explicitly disable.
dnl no -- disabled under default, most, all. user must explicitly enable.
dnl most -- disabled by default. enabled explicitly or with most or all.
dnl static -- enabled as static by default, must be explicitly changed.
dnl "" -- disabled under default, most. enabled explicitly or with all.
dnl XXX: The arg must really be empty here. Passing an empty shell
dnl XXX: variable doesn't work for some reason. This should be
dnl basically:
yes/no is a hard setting. "most" means follow the "most"
dnl setting. otherwise, fall under the "all" setting.
dnl explicit
yes/no always overrides, except if the user selects
dnl prereq_module is a module (without the "mod_" prefix) that must be enabled
dnl if the current module is enabled. If the current module is built
dnl statically, prereq_module must be built statically, too. If these
dnl conditions are not fulfilled, configure will abort if the current module
dnl has been enabled explicitly. Otherwise, configure will disable the
dnl prereq_module's APACHE_MODULE() statement must have been processed
dnl before the current APACHE_MODULE() statement.
AC_MSG_CHECKING(whether to enable mod_$1)
define([optname],[--]ifelse($5,yes,disable,enable)[-]translit($1,_,-))dnl
AC_ARG_ENABLE(translit($1,_,-),APACHE_HELP_STRING(optname(),$2),force_$1=$enableval,enable_$1=ifelse($5,,maybe-all,$5))
dnl When --enable-modules=most or --enable-modules=(really)all is set and the
dnl module was not explicitly requested, allow a module to disable itself if
case "$module_selection" in
if test "$enable_$1" = "static"; then
elif test "$enable_$1" = "yes"; then
enable_$1=$module_default
elif test "$enable_$1" = "most"; then
if test "$module_selection" = "most" -o "$module_selection" = "all" -o \
"$module_selection" = "reallyall"
enable_$1=$module_default
elif test "$module_selection" = "few" -o "$module_selection" = "none"; then
_apmod_extra_msg=" ($module_selection)"
elif test "$enable_$1" = "maybe-all"; then
if test "$module_selection" = "all" -o "$module_selection" = "reallyall"
enable_$1=$module_default
_apmod_extra_msg=" ($module_selection)"
elif test "$enable_$1" = "no" -a "$module_selection" = "reallyall" -a \
"$force_$1" != "no" ; then
enable_$1=$module_default
_apmod_extra_msg=" ($module_selection)"
if test "$enable_$1" != "no"; then
dnl If we plan to enable it, allow the module to run some autoconf magic
dnl that may disable it because of missing dependencies.
[AC_MSG_RESULT([checking dependencies])
ifelse([$7],,:,[if test "$enable_$7" = "no" ; then
AC_MSG_WARN("mod_$7 is disabled but required for mod_$1")
elif test "$enable_$1" = "static" && test "$enable_$7" != "static" ; then
AC_MSG_WARN("cannot build mod_$1 statically if mod_$7 is built shared")
AC_MSG_CHECKING(whether to enable mod_$1)
if test "$enable_$1" = "no"; then
if test "$_apmod_required" = "no"; then
_apmod_extra_msg=" (disabled)"
AC_MSG_ERROR([mod_$1 has been requested but can not be built due to prerequisite failures])
AC_MSG_RESULT($enable_$1$_apmod_extra_msg)
if test "$enable_$1" != "no"; then
MODLIST="$MODLIST ifelse($4,,$1,$4)"
if test "$1" = "so"; then
enable_$1=`echo $enable_$1|sed '
s/shared,*//'`
DSO_MODULES="$DSO_MODULES $1"
if test "$5" = "yes" ; then
ENABLED_DSO_MODULES="${ENABLED_DSO_MODULES},$1"
define([modprefix], [MOD_]translit($1, [a-z-], [A-Z_]))
APACHE_MODPATH_ADD($1, $shared, $3,, [\$(]modprefix[_LDADD)])
APACHE_SUBST(modprefix[_LDADD])
dnl APACHE_ENABLE_MODULES
AC_DEFUN(APACHE_ENABLE_MODULES,[
dnl Check whether we have DSO support.
dnl If "yes", we build shared modules by default.
APR_CHECK_APR_DEFINE(APR_HAS_DSO)
if test $ac_cv_define_APR_HAS_DSO = "no"; then
AC_MSG_WARN([Missing DSO support - building static modules by default.])
APACHE_HELP_STRING(--enable-modules=MODULE-LIST,Space-separated list of modules to enable | "all" | "most" | "few" | "none" | "reallyall"),[
if test "$enableval" = "none"; then
if test "$i" = "all" -o "$i" = "most" -o "$i" = "few" -o "$i" = "reallyall"
i=`echo $i | sed 's/-/_/g'`
AC_ARG_ENABLE(mods-shared,
APACHE_HELP_STRING(--enable-mods-shared=MODULE-LIST,Space-separated list of shared modules to enable | "all" | "most" | "few" | "reallyall"),[
if test "$i" = "all" -o "$i" = "most" -o "$i" = "few" -o "$i" = "reallyall"
i=`echo $i | sed 's/-/_/g'`
AC_ARG_ENABLE(mods-static,
APACHE_HELP_STRING(--enable-mods-static=MODULE-LIST,Space-separated list of static modules to enable | "all" | "most" | "few" | "reallyall"),[
if test "$i" = "all" -o "$i" = "most" -o "$i" = "few" -o "$i" = "reallyall"; then
i=`echo $i | sed 's/-/_/g'`
AC_DEFUN(APACHE_REQUIRE_CXX,[
if test -z "$apache_cxx_done"; then
dnl Configure for OpenSSL, giving preference to
dnl "--with-ssl=<path>" if it was specified.
AC_DEFUN(APACHE_CHECK_OPENSSL,[
AC_CACHE_CHECK([for OpenSSL], [ac_cv_openssl], [
dnl initialise the variables we use
dnl Determine the OpenSSL base directory, if any
AC_MSG_CHECKING([for user-provided OpenSSL base directory])
AC_ARG_WITH(ssl, APACHE_HELP_STRING(--with-ssl=DIR,OpenSSL base directory), [
dnl If --with-ssl specifies a directory, we use that directory
if test "x$withval" != "xyes" -a "x$withval" != "x"; then
dnl This ensures $withval is actually a directory and that it is absolute
ap_openssl_base="`cd $withval ; pwd`"
if test "x$ap_openssl_base" = "x"; then
AC_MSG_RESULT($ap_openssl_base)
dnl Run header and version checks
saved_CPPFLAGS="$CPPFLAGS"
dnl Before doing anything else, load in pkg-config variables
if test -n "$PKGCONFIG"; then
saved_PKG_CONFIG_PATH="$PKG_CONFIG_PATH"
if test "x$ap_openssl_base" != "x" -a \
dnl Ensure that the given path is used by pkg-config too, otherwise
dnl the system
openssl.pc might be picked up instead.
PKG_CONFIG_PATH="${ap_openssl_base}
/lib/pkgconfig${PKG_CONFIG_PATH+:}${PKG_CONFIG_PATH}"
ap_openssl_libs="`$PKGCONFIG --libs-only-l openssl 2>&1`"
pkglookup="`$PKGCONFIG --cflags-only-I openssl`"
APR_ADDTO(CPPFLAGS, [$pkglookup])
APR_ADDTO(INCLUDES, [$pkglookup])
pkglookup="`$PKGCONFIG --libs-only-L --libs-only-other openssl`"
APR_ADDTO(LDFLAGS, [$pkglookup])
APR_ADDTO(SSL_LIBS, [$pkglookup])
PKG_CONFIG_PATH="$saved_PKG_CONFIG_PATH"
dnl fall back to the user-supplied directory if not found via pkg-config
if test "x$ap_openssl_base" != "x" -a "x$ap_openssl_found" = "x"; then
if test "x$ap_platform_runtime_link_flag" != "x"; then
AC_MSG_CHECKING([for OpenSSL version >= 0.9.7])
#if !defined(OPENSSL_VERSION_NUMBER)
#error "Missing OpenSSL version"
#if OPENSSL_VERSION_NUMBER < 0x0090700f
#error "Unsupported OpenSSL version " OPENSSL_VERSION_TEXT
if test "x$ac_cv_openssl" = "xyes"; then
ap_openssl_libs="-lssl -lcrypto `$apr_config --libs`"
APR_ADDTO(SSL_LIBS, [$ap_openssl_libs])
APR_ADDTO(LIBS, [$ap_openssl_libs])
dnl Run library and function checks
AC_CHECK_FUNCS([SSLeay_version SSL_CTX_new], [], [liberrors="yes"])
AC_CHECK_FUNCS([ENGINE_init ENGINE_load_builtin_engines])
if test "x$liberrors" != "x"; then
AC_MSG_WARN([OpenSSL libraries are unusable])
AC_MSG_WARN([OpenSSL version is too old])
CPPFLAGS="$saved_CPPFLAGS"
if test "x$ac_cv_openssl" = "xyes"; then
AC_DEFINE(HAVE_OPENSSL, 1, [Define if OpenSSL is available])
dnl Configure for the detected libserf, giving preference to
dnl "--with-serf=<path>" if it was specified.
AC_DEFUN([APACHE_CHECK_SERF], [
AC_CACHE_CHECK([for libserf], [ac_cv_serf], [
AC_ARG_WITH(serf, APACHE_HELP_STRING([--with-serf=PREFIX],
if test "$withval" = "yes" ; then
if test "$serf_prefix" != "no" ; then
save_cppflags="$CPPFLAGS"
AC_CHECK_LIB(serf-0, serf_context_create,[ac_cv_serf="yes"])
LDFLAGS="$save_ldflags"])
CPPFLAGS="$save_cppflags"
if test "$ac_cv_serf" = "yes"; then
AC_DEFINE(HAVE_SERF, 1, [Define if libserf is available])
dnl APACHE_EXPORT_ARGUMENTS
dnl Export (via APACHE_SUBST) the various path-related variables that
dnl apache will use while generating scripts like autoconf and apxs and
dnl the default config file.
AC_DEFUN(APACHE_SUBST_EXPANDED_ARG,[
APR_EXPAND_VAR(exp_$1, [$]$1)
APR_PATH_RELATIVE(rel_$1, [$]exp_$1, ${prefix})
AC_DEFUN(APACHE_EXPORT_ARGUMENTS,[
APACHE_SUBST_EXPANDED_ARG(exec_prefix)
APACHE_SUBST_EXPANDED_ARG(bindir)
APACHE_SUBST_EXPANDED_ARG(sbindir)
APACHE_SUBST_EXPANDED_ARG(libdir)
APACHE_SUBST_EXPANDED_ARG(libexecdir)
APACHE_SUBST_EXPANDED_ARG(mandir)
APACHE_SUBST_EXPANDED_ARG(sysconfdir)
APACHE_SUBST_EXPANDED_ARG(datadir)
APACHE_SUBST_EXPANDED_ARG(installbuilddir)
APACHE_SUBST_EXPANDED_ARG(errordir)
APACHE_SUBST_EXPANDED_ARG(iconsdir)
APACHE_SUBST_EXPANDED_ARG(htdocsdir)
APACHE_SUBST_EXPANDED_ARG(manualdir)
APACHE_SUBST_EXPANDED_ARG(cgidir)
APACHE_SUBST_EXPANDED_ARG(includedir)
APACHE_SUBST_EXPANDED_ARG(localstatedir)
APACHE_SUBST_EXPANDED_ARG(runtimedir)
APACHE_SUBST_EXPANDED_ARG(logfiledir)
APACHE_SUBST_EXPANDED_ARG(proxycachedir)
dnl APACHE_CHECK_APxVER({apr|apu}, major, minor,
dnl [actions-if-ok], [actions-if-not-ok])
dnl Checks for APR or APR-util of given
major/minor version or later;
dnl if so, runs actions-if-ok; otherwise runs actions-if-not-ok if given.
dnl If the version is not satisfactory and actions-if-not-ok is not
dnl given, then an error is printed and the configure script is aborted.
dnl The first argument must be [apr] or [apu].
AC_DEFUN([APACHE_CHECK_APxVER], [
define(ap_ckver_major, translit($1, [apru], [APRU])[_MAJOR_VERSION])
define(ap_ckver_minor, translit($1, [apru], [APRU])[_MINOR_VERSION])
define(ap_ckver_cvar, [ap_cv_$1ver$2$3])
define(ap_ckver_name, ifelse([$1],[apr],[APR],[APR-util]))
ap_ckver_CPPFLAGS="$CPPFLAGS"
CPPFLAGS="$CPPFLAGS `$[$1]_config --includes`"
AC_CACHE_CHECK([for ap_ckver_name version $2.$3.0 or later], ap_ckver_cvar, [
#if ]ap_ckver_major[ > $2 || (]ap_ckver_major[ == $2 && ]ap_ckver_minor[ >= $3)
], [ap_ckver_cvar=yes], [ap_ckver_cvar=no])])
if test "$ap_ckver_cvar" = "yes"; then
ifelse([$5],[],[AC_MSG_ERROR([ap_ckver_name version $2.$3.0 or later is required])], [$5])
CPPFLAGS="$ap_ckver_CPPFLAGS"
undefine([ap_ckver_major])
undefine([ap_ckver_minor])
undefine([ap_ckver_cvar])
undefine([ap_ckver_name])
dnl APACHE_CHECK_VOID_PTR_LEN
dnl Checks if the size of a void pointer is at least as big as a "long"
AC_DEFUN([APACHE_CHECK_VOID_PTR_LEN], [
AC_CACHE_CHECK([for void pointer length], [ap_cv_void_ptr_lt_long],
return sizeof(void *) < sizeof(long);
}], [ap_cv_void_ptr_lt_long=no], [ap_cv_void_ptr_lt_long=yes],
[ap_cv_void_ptr_lt_long="cross compile - not checked"])])
if test "$ap_cv_void_ptr_lt_long" = "yes"; then
AC_MSG_ERROR([Size of "void *" is less than size of "long"])
dnl APACHE_CHECK_APR_HAS_LDAP
dnl Check if APR_HAS_LDAP is 1
dnl Unfortunately, we can't use APR_CHECK_APR_DEFINE (because it only includes
apr.h)
dnl or APR_CHECK_DEFINE (because it only checks for defined'ness and not for 0/1).
AC_DEFUN([APACHE_CHECK_APR_HAS_LDAP], [
AC_CACHE_CHECK([for ldap support in
apr/apr-util],ac_cv_APR_HAS_LDAP,[
apache_old_cppflags="$CPPFLAGS"
CPPFLAGS="$CPPFLAGS $INCLUDES"
AC_EGREP_CPP(YES_IS_DEFINED, [
], ac_cv_APR_HAS_LDAP=yes, ac_cv_APR_HAS_LDAP=no)
CPPFLAGS="$apache_old_cppflags"
dnl APACHE_ADD_GCC_CFLAGS
dnl Check if compiler is gcc and supports flag. If yes, add to CFLAGS.
AC_DEFUN([APACHE_ADD_GCC_CFLAG], [
define([ap_gcc_ckvar], [ac_cv_gcc_]translit($1, [-:.=], [____]))
if test "$GCC" = "yes"; then
AC_CACHE_CHECK([whether gcc accepts $1], ap_gcc_ckvar, [
AC_COMPILE_IFELSE([AC_LANG_SOURCE([int foo() { return 0; }])],
[ap_gcc_ckvar=yes], [ap_gcc_ckvar=no])
if test "$]ap_gcc_ckvar[" = "yes" ; then