148N/Adnl APACHE_HELP_STRING(LHS, RHS)
148N/Adnl Autoconf 2.50 can not handle substr correctly. It does have
148N/Adnl AC_HELP_STRING, so let's try to call it if we can.
148N/Adnl Note: this define must be on one line so that it can be properly returned
148N/AAC_DEFUN(APACHE_HELP_STRING,[ifelse(regexp(AC_ACVERSION, 2\.1), -1, AC_HELP_STRING($1,$2),[ ]$1 substr([ ],len($1))$2)])dnl
148N/Adnl APACHE_SUBST(VARIABLE)
148N/Adnl Makes VARIABLE available in generated files
148N/Adnl (do not use @variable@ in Makefiles, but $(variable))
148N/A APACHE_VAR_SUBST="$APACHE_VAR_SUBST $1"
148N/Adnl APACHE_FAST_OUTPUT(FILENAME)
148N/Adnl Perform substitutions on FILENAME (Makefiles only)
148N/AAC_DEFUN(APACHE_FAST_OUTPUT,[
148N/A APACHE_FAST_OUTPUT_FILES="$APACHE_FAST_OUTPUT_FILES $1"
148N/Adnl APACHE_GEN_CONFIG_VARS
148N/AAC_DEFUN(APACHE_GEN_CONFIG_VARS,[
148N/A APACHE_SUBST(abs_srcdir)
148N/A APACHE_SUBST(logfiledir)
148N/A APACHE_SUBST(exec_prefix)
148N/A APACHE_SUBST(localstatedir)
148N/A APACHE_SUBST(libexecdir)
148N/A APACHE_SUBST(htdocsdir)
148N/A APACHE_SUBST(manualdir)
148N/A APACHE_SUBST(includedir)
148N/A APACHE_SUBST(sysconfdir)
148N/A APACHE_SUBST(installbuilddir)
148N/A APACHE_SUBST(runtimedir)
148N/A APACHE_SUBST(proxycachedir)
148N/A APACHE_SUBST(other_targets)
148N/A APACHE_SUBST(LT_LDFLAGS)
148N/A APACHE_SUBST(SH_LDFLAGS)
148N/A APACHE_SUBST(HTTPD_LDFLAGS)
148N/A APACHE_SUBST(UTIL_LDFLAGS)
148N/A APACHE_SUBST(NOTEST_CPPFLAGS)
148N/A APACHE_SUBST(NOTEST_CFLAGS)
148N/A APACHE_SUBST(NOTEST_CXXFLAGS)
148N/A APACHE_SUBST(NOTEST_LDFLAGS)
148N/A APACHE_SUBST(NOTEST_LIBS)
148N/A APACHE_SUBST(EXTRA_CPPFLAGS)
148N/A APACHE_SUBST(EXTRA_CFLAGS)
148N/A APACHE_SUBST(EXTRA_CXXFLAGS)
148N/A APACHE_SUBST(EXTRA_LDFLAGS)
148N/A APACHE_SUBST(EXTRA_LIBS)
148N/A APACHE_SUBST(EXTRA_INCLUDES)
148N/A APACHE_SUBST(MODULE_DIRS)
148N/A APACHE_SUBST(MODULE_CLEANDIRS)
148N/A APACHE_SUBST(nonssl_listen_stmt_1)
148N/A APACHE_SUBST(nonssl_listen_stmt_2)
148N/A APACHE_SUBST(CORE_IMPLIB_FILE)
148N/A APACHE_SUBST(CORE_IMPLIB)
148N/A APACHE_SUBST(SH_LIBTOOL)
148N/A APACHE_SUBST(MK_IMPLIB)
148N/A APACHE_SUBST(INSTALL_PROG_FLAGS)
148N/A APACHE_SUBST(DSO_MODULES)
148N/A APACHE_SUBST(APR_BINDIR)
148N/A APACHE_SUBST(APR_INCLUDEDIR)
148N/A APACHE_SUBST(APR_VERSION)
APACHE_SUBST(APU_INCLUDEDIR)
APACHE_SUBST(APU_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_MODULE(name, helptext[, objects[, structname[, default[, config]]]])
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 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.
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),,enable_$1=ifelse($5,,maybe-all,$5))
dnl When --enable-modules=most is set and the module was not explicitly
dnl requested, allow a module to disable itself if its pre-reqs fail.
if test "$module_selection" = "most" -a "$enable_$1" = "most"; then
if test "$enable_$1" = "static"; then
elif test "$enable_$1" = "yes"; then
enable_$1=$module_default
_apmod_extra_msg=" ($module_selection)"
elif test "$enable_$1" = "most"; then
if test "$module_selection" = "most" -o "$module_selection" = "all"; then
enable_$1=$module_default
_apmod_extra_msg=" ($module_selection)"
elif test "$enable_$1" != "yes"; then
elif test "$enable_$1" = "maybe-all"; then
if test "$module_selection" = "all"; then
enable_$1=$module_default
_apmod_extra_msg=" (all)"
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.
ifelse([$6],,:,[AC_MSG_RESULT([checking dependencies])
AC_MSG_CHECKING(whether to enable mod_$1)
if test "$enable_$1" = "no"; then
if test "$_apmod_error_fatal" = "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
enable_$1=`echo $enable_$1|sed '
s/shared,*//'`
DSO_MODULES="$DSO_MODULES $1"
MODLIST="$MODLIST ifelse($4,,$1,$4)"
if test "$1" = "so"; then
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,[
APACHE_HELP_STRING(--enable-modules=MODULE-LIST,Space-separated list of modules to enable | "all" | "most"),[
if test "$i" = "all" -o "$i" = "most"; then
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"),[
if test "$i" = "all" -o "$i" = "most"; then
i=`echo $i | sed 's/-/_/g'`
AC_DEFUN(APACHE_REQUIRE_CXX,[
if test -z "$apache_cxx_done"; then
dnl APACHE_CHECK_SSL_TOOLKIT
dnl Configure for the detected
openssl/ssl-c toolkit installation, giving
dnl preference to "--with-ssl=<path>" if it was specified.
AC_DEFUN(APACHE_CHECK_SSL_TOOLKIT,[
if test "x$ap_ssltk_configured" = "x"; then
dnl initialise the variables we use
dnl Determine the
SSL/TLS toolkit's base directory, if any
AC_MSG_CHECKING(for
SSL/TLS toolkit base)
AC_ARG_WITH(sslc, APACHE_HELP_STRING(--with-sslc=DIR,RSA SSL-C
SSL/TLS toolkit), [
dnl If --with-sslc specifies a directory, we use that directory or fail
if test "x$withval" != "xyes" -a "x$withval" != "x"; then
dnl This ensures $withval is actually a directory and that it is absolute
ap_ssltk_base="`cd $withval ; pwd`"
AC_ARG_WITH(ssl, APACHE_HELP_STRING(--with-ssl=DIR,OpenSSL
SSL/TLS toolkit), [
dnl If --with-ssl specifies a directory, we use that directory or fail
if test "x$withval" != "xyes" -a "x$withval" != "x"; then
dnl This ensures $withval is actually a directory and that it is absolute
ap_ssltk_base="`cd $withval ; pwd`"
if test "x$ap_ssltk_base" = "x"; then
AC_MSG_RESULT($ap_ssltk_base)
dnl Run header and version checks
if test "x$ap_ssltk_base" != "x"; then
CPPFLAGS="$CPPFLAGS $ap_ssltk_inc"
if test "x$ap_ssltk_type" = "x"; then
AC_MSG_CHECKING(for OpenSSL version)
dnl First check for manditory headers
if test "$ap_ssltk_type" = "openssl"; then
dnl so it's OpenSSL - test for a good version
#if !defined(OPENSSL_VERSION_NUMBER)
#error "Missing openssl version"
#if (OPENSSL_VERSION_NUMBER < 0x009060af) \
|| ((OPENSSL_VERSION_NUMBER > 0x00907000) && (OPENSSL_VERSION_NUMBER < 0x0090702f))
#error "Insecure openssl version " OPENSSL_VERSION_TEXT
[dnl Replace this with OPENSSL_VERSION_TEXT from
opensslv.h?
AC_MSG_RESULT([not encouraging])
echo "WARNING: OpenSSL version may contain security vulnerabilities!"
echo " Ensure the latest security patches have been applied!"
dnl Look for additional, possibly missing headers
if test -n "$PKGCONFIG"; then
ap_ssltk_inc="$ap_ssltk_inc `$PKGCONFIG --cflags-only-I openssl`"
CPPFLAGS="$CPPFLAGS $ap_ssltk_inc"
AC_MSG_RESULT([no OpenSSL headers found])
if test "$ap_ssltk_type" != "openssl"; then
dnl Might be SSL-C - report, then test anything relevant
AC_MSG_CHECKING(for SSL-C version)
AC_CHECK_HEADERS([
sslc.h], [ap_ssltk_type="sslc"], [ap_ssltk_type=""])
if test "$ap_ssltk_type" = "sslc"; then
AC_MSG_CHECKING(for SSL-C version)
AC_TRY_COMPILE([#include <
sslc.h>],[
#if !defined(SSLC_VERSION_NUMBER)
#error "Missing SSL-C version"
#if SSLC_VERSION_NUMBER < 0x2310
#define stringize_ver(x) #x
#error "Insecure SSL-C version " stringize_ver(SSLC_VERSION_NUMBER)
[dnl Replace this with SSLC_VERSION_NUMBER?
AC_MSG_RESULT([not encouraging])
echo "WARNING: SSL-C version may contain security vulnerabilities!"
echo " Ensure the latest security patches have been applied!"
AC_MSG_RESULT([no SSL-C headers found])
if test "x$ap_ssltk_type" = "x"; then
dnl Run library and function checks
if test "x$ap_ssltk_base" != "x"; then
ap_ssltk_lib="$ap_ssltk_base"
LDFLAGS="$LDFLAGS -L$ap_ssltk_lib"
dnl make sure "other" flags are available so libcrypto and libssl can link
LIBS="$LIBS `$apr_config --libs`"
if test "$ap_ssltk_type" = "openssl"; then
AC_CHECK_LIB(crypto, SSLeay_version, [], [liberrors="yes"])
AC_CHECK_LIB(ssl, SSL_CTX_new, [], [liberrors="yes"])
AC_CHECK_FUNCS(ENGINE_init)
AC_CHECK_FUNCS(ENGINE_load_builtin_engines)
AC_CHECK_LIB(sslc, SSLC_library_version, [], [liberrors="yes"])
AC_CHECK_LIB(sslc, SSL_CTX_new, [], [liberrors="yes"])
AC_CHECK_FUNCS(SSL_set_state)
AC_CHECK_FUNCS(SSL_set_cert_store)
if test "x$liberrors" != "x"; then
AC_MSG_ERROR([... Error,
SSL/TLS libraries were missing or unusable])
dnl Adjust apache's configuration based on what we found above.
dnl (a) define preprocessor symbols
if test "$ap_ssltk_type" = "openssl"; then
AC_DEFINE(HAVE_OPENSSL, 1, [Define if SSL is supported using OpenSSL])
AC_DEFINE(HAVE_SSLC, 1, [Define if SSL is supported using SSL-C])
dnl (b) hook up include paths
if test "x$ap_ssltk_inc" != "x"; then
APR_ADDTO(INCLUDES, [$ap_ssltk_inc])
dnl (c) hook up linker paths
if test "x$ap_ssltk_lib" != "x"; then
APR_ADDTO(LDFLAGS, ["-L$ap_ssltk_lib"])
if test "x$ap_platform_runtime_link_flag" != "x"; then
APR_ADDTO(LDFLAGS, ["$ap_platform_runtime_link_flag$ap_ssltk_lib"])
# Put SSL libraries in SSL_LIBS.
if test "$ap_ssltk_type" = "openssl"; then
APR_SETVAR(SSL_LIBS, [-lssl -lcrypto])
if test -n "$PKGCONFIG"; then
ap_ssltk_libdep=`$PKGCONFIG --libs openssl`
APR_ADDTO(SSL_LIBS, $ap_ssltk_libdep)
APR_SETVAR(SSL_LIBS, [-lsslc])
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)