dnl Use ./buildconf to produce a configure script
dnl
-AC_PREREQ(2.13)
+AC_PREREQ(2.50)
AC_INIT(ABOUT_APACHE)
AC_CONFIG_HEADER(include/ap_config_auto.h)
echo $ac_n "${nl}Configuring Apache Portable Runtime library ...${nl}"
-APR_FIND_APR("$srcdir/srclib/apr", "./srclib/apr", 1)
+AC_ARG_WITH(included-apr,
+APACHE_HELP_STRING(--with-included-apr,Use bundled copies of APR/APR-Util))
+
+# Only APR 1.x is supported.
+apr_version=1
+
+if test "x$with_included_apr" = "xyes"; then
+ apr_found=reconfig
+ apr_config="$srcdir/srclib/apr/apr-${apr_version}-config"
+else
+ APR_FIND_APR("$srcdir/srclib/apr", "./srclib/apr", 1, ${apr_version})
+fi
if test "$apr_found" = "no"; then
AC_MSG_ERROR([APR not found. Please read the documentation.])
APR_ADDTO(CFLAGS, `$apr_config --cflags`)
APR_ADDTO(CPPFLAGS, `$apr_config --cppflags`)
APR_ADDTO(LDFLAGS, `$apr_config --ldflags`)
-APR_ADDTO(INCLUDES, `$apr_config --includes`)
SHLIBPATH_VAR=`$apr_config --shlib-path-var`
APR_BINDIR=`$apr_config --bindir`
APR_INCLUDEDIR=`$apr_config --includedir`
+APR_INCLUDES=`$apr_config --includes`
+APR_VERSION=`$apr_config --version`
+APR_CONFIG="$APR_BINDIR/apr-`echo ${APR_VERSION} | sed 's,\..*,,'`-config"
echo $ac_n "${nl}Configuring Apache Portable Runtime Utility library...${nl}"
-APR_FIND_APU("$srcdir/srclib/apr-util", "./srclib/apr-util", 1)
+# Only APR-util 1.x is supported.
+apu_version=1
+
+if test "x$with_included_apr" = "xyes"; then
+ apu_found=reconfig
+ apu_config="${srcdir}/srclib/apr-util/apu-${apu_version}-config"
+else
+ APR_FIND_APU("$srcdir/srclib/apr-util", "./srclib/apr-util", 1, ${apu_version})
+fi
if test "$apu_found" = "no"; then
AC_MSG_ERROR([APR-util not found. Please read the documentation.])
fi
+# Catch some misconfigurations:
+case ${apr_found}.${apu_found} in
+reconfig.yes)
+ AC_MSG_ERROR([Cannot use an external APR-util with the bundled APR])
+ ;;
+yes.reconfig)
+ AC_MSG_ERROR([Cannot use an external APR with the bundled APR-util])
+ ;;
+esac
+
if test "$apu_found" = "reconfig"; then
APR_SUBDIR_CONFIG(srclib/apr-util,
[--with-apr=../apr --prefix=$prefix --exec-prefix=$exec_prefix --libdir=$libdir --includedir=$includedir --bindir=$bindir],
fi
APR_ADDTO(LDFLAGS, `$apu_config --ldflags`)
-APR_ADDTO(INCLUDES, `$apu_config --includes`)
APU_BINDIR=`$apu_config --bindir`
APU_INCLUDEDIR=`$apu_config --includedir`
+APU_INCLUDES=`$apu_config --includes`
+APU_VERSION=`$apu_config --version`
+APU_CONFIG="$APU_BINDIR/apu-`echo ${APU_VERSION} | sed 's,\..*,,'`-config"
dnl In case we picked up CC and CPP from APR, get that info into the
dnl config cache so that PCRE uses it. Otherwise, CC and CPP used for
AC_PROG_CC
AC_PROG_CPP
-echo $ac_n "${nl}Configuring PCRE regular expression library ...${nl}"
-
-APR_SUBDIR_CONFIG(srclib/pcre,
- [--prefix=$prefix --exec-prefix=$exec_prefix --libdir=$libdir --includedir=$includedir --bindir=$bindir])
-
-echo $ac_n "${nl}Configuring Apache httpd ...${nl}"
+if test "x${cache_file}" = "x/dev/null"; then
+ # Likewise, ensure that CC and CPP are passed through to the pcre
+ # configure script iff caching is disabled (the autoconf 2.5x default).
+ export CC; export CPP
+fi
dnl Absolute source/build directory
abs_srcdir=`(cd $srcdir && pwd)`
abs_builddir=`pwd`
+AC_ARG_WITH(pcre,
+APACHE_HELP_STRING(--with-pcre=PATH,Use external PCRE library))
+
+case $with_pcre in
+yes) AC_PATH_PROG(PCRE_CONFIG, pcre-config, false) ;;
+ /*) if test -d "$with_pcre" && test -x "$with_pcre/bin/pcre-config"; then
+ PCRE_CONFIG=$with_pcre/bin/pcre-config
+ elif test -x "$with_pcre"; then
+ PCRE_CONFIG=$with_pcre
+ fi
+
+ if $PCRE_CONFIG --version >/dev/null 2>&1; then :; else
+ AC_MSG_ERROR([Did not find pcre-config script at $PCRE_CONFIG])
+ fi
+ ;;
+*) PCRE_CONFIG=false ;;
+esac
+
+if test "$PCRE_CONFIG" != "false"; then
+ AC_MSG_NOTICE([Using external PCRE library from $PCRE_CONFIG])
+ APR_ADDTO(CFLAGS, [`$PCRE_CONFIG --cflags`])
+ APR_ADDTO(LIBS, [`$PCRE_CONFIG --libs`])
+else
+ # Build the bundled PCRE
+ AC_MSG_NOTICE([Configuring PCRE regular expression library])
+
+ APR_SUBDIR_CONFIG(srclib/pcre,
+ [--prefix=$prefix --exec-prefix=$exec_prefix --libdir=$libdir --includedir=$includedir --bindir=$bindir])
+
+ APR_ADDTO(AP_LIBS, [$abs_builddir/srclib/pcre/libpcre.la])
+ APR_ADDTO(INCLUDES, [-I\$(top_builddir)/srclib/pcre])
+
+ AP_BUILD_SRCLIB_DIRS="$AP_BUILD_SRCLIB_DIRS pcre"
+ AP_CLEAN_SRCLIB_DIRS="$AP_CLEAN_SRCLIB_DIRS pcre"
+fi
+
+echo $ac_n "${nl}Configuring Apache httpd ...${nl}"
+
dnl If the source dir is not equal to the build dir,
dnl then we are running in VPATH mode.
APR_ADDTO(INCLUDES, [-I.])
if test "$abs_builddir" != "$abs_srcdir"; then
- USE_VPATH=1
- APR_ADDTO(INCLUDES, [-I\$(srcdir) -I\$(top_builddir)/server/mpm/\$(MPM_SUBDIR_NAME) -I\$(top_builddir)/include])
+ APR_ADDTO(INCLUDES, [-I\$(top_builddir)/include])
fi
-APR_ADDTO(INCLUDES, [-I\$(top_srcdir)/os/\$(OS_DIR) -I\$(top_srcdir)/server/mpm/\$(MPM_SUBDIR_NAME) -I\$(top_srcdir)/modules/http -I\$(top_srcdir)/modules/filters -I\$(top_srcdir)/modules/proxy -I\$(top_srcdir)/include -I\$(top_srcdir)/modules/generators])
+APR_ADDTO(INCLUDES, [-I\$(top_srcdir)/os/\$(OS_DIR) -I\$(top_srcdir)/server/mpm/\$(MPM_SUBDIR_NAME) -I\$(top_srcdir)/modules/http -I\$(top_srcdir)/modules/filters -I\$(top_srcdir)/modules/proxy -I\$(top_srcdir)/include -I\$(top_srcdir)/modules/generators -I\$(top_srcdir)/modules/mappers -I\$(top_srcdir)/modules/database])
+
+# apr/apr-util --includes may pick up system paths for dependent
+# libraries, so ensure these are later in INCLUDES than local source
+# directories.
+APR_ADDTO(INCLUDES, `$apr_config --includes`)
+APR_ADDTO(INCLUDES, `$apu_config --includes`)
echo $ac_n "${nl}Applying OS-specific hints for httpd ...${nl}"
APACHE_SUBST(SHLTCFLAGS)
APACHE_SUBST(LTCFLAGS)
-AP_SIG_GRACEFUL=USR1
-
case $host in
*-apple-aux3*)
APR_SETVAR(APACHE_MPM, [prefork])
APR_SETVAR(APACHE_MPM, [beos])
APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1])
;;
- *os2_emx*)
+ *os2-emx*)
APR_SETVAR(APACHE_MPM, [mpmt_os2])
APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1])
;;
*-linux-*)
case `uname -r` in
- 2.0* )
- AP_SIG_GRACEFUL=WINCH
- ;;
2.[[2-9]]* )
APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1])
;;
APR_SETVAR(APACHE_MPM, [prefork])
APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1])
;;
+ *mingw32*)
+ APR_SETVAR(APACHE_MPM, [winnt])
+ APR_ADDTO(CPPFLAGS, [-DAP_DECLARE_EXPORT])
+ APR_SETIFNULL(ac_cv_func_times, [no])
+ APR_SETIFNULL(ac_cv_func_getpwnam, [no])
+ APR_SETIFNULL(ac_cv_func_getgrnam, [no])
+ ;;
*aix*)
aixver=`echo $host | sed 's/^[[^0-9]]*//' | sed 's/\.//g'`
if test $aixver -ge 4320; then
;;
esac
+APR_SETVAR(AP_NONBLOCK_WHEN_MULTI_LISTEN, [1])
+
dnl
dnl Process command line arguments. This is done early in the process so the
dnl user can get feedback quickly in case of an error.
dnl ## Check for programs
AC_PATH_PROG(RM, rm)
+AC_PATH_PROG(PKGCONFIG, pkg-config)
+AC_PATH_PROG(RSYNC, rsync)
AC_PROG_AWK
-AC_PROG_INSTALL
AC_PROG_LN_S
AC_CHECK_TOOL(RANLIB, ranlib, true)
dnl AC_PATH_PROG(PERL_PATH, perl)
AC_CHECK_PROGS(LYNX_PATH,[lynx links elinks], [lynx])
+# Hard-coded install programs
+MKINSTALLDIRS="\$(abs_srcdir)/build/mkdir.sh"
+INSTALL="\$(LIBTOOL) --mode=install \$(abs_srcdir)/build/install.sh -c"
+APACHE_SUBST(MKINSTALLDIRS)
+APACHE_SUBST(INSTALL)
+
dnl various OS checks that apparently set required flags
AC_AIX
AC_ISC_POSIX
AC_MINIX
+# Ensure that satisfactory versions of apr and apr-util are
+# found if external copies are configured.
+if test "${apr_found}" = "yes"; then
+ # Require APR 1.3.x otherwise fail
+ APACHE_CHECK_APxVER([apr], 1, 3)
+fi
+
+if test "${apu_found}" = "yes"; then
+ # Require APR-util 1.2.x otherwise fail
+ APACHE_CHECK_APxVER([apu], 1, 2)
+fi
+
dnl Check for what we can generate dependency files with
APR_CHECK_DEPEND
dnl ## Check for typedefs, structures, and compiler characteristics.
AC_C_CONST
-if test "$ac_cv_prog_gcc" = "yes"; then
- APR_ADDTO(NOTEST_CPPFLAGS,-DAP_HAVE_DESIGNATED_INITIALIZER)
-fi
dnl ## Check for library functions
+AC_SEARCH_LIBS(sqrt, m)
dnl See Comment #Spoon
bindprocessor \
prctl \
timegm \
+getpgid
)
+dnl confirm that a void pointer is large enough to store a long integer
+APACHE_CHECK_VOID_PTR_LEN
+
dnl ## Check for the tm_gmtoff field in struct tm to get the timezone diffs
AC_CACHE_CHECK([for tm_gmtoff in struct tm], ac_cv_struct_tm_gmtoff,
[AC_TRY_COMPILE([#include <sys/types.h>
[if test "$withval" = "yes"; then AC_MSG_ERROR('option --with-port requires a value (the TCP port number)'); else PORT="$withval"; fi],
[PORT=80])
+AC_ARG_WITH(sslport,APACHE_HELP_STRING(--with-sslport=SSLPORT,Port on which to securelisten (default is 443)),
+ [if test "$withval" = "yes"; then AC_MSG_ERROR('option --with-sslport requires a value (the SSL TCP port number)'); else SSLPORT="$withval"; fi],
+ [SSLPORT=443])
+
APR_CHECK_APR_DEFINE(APR_HAVE_IPV6)
AC_ARG_ENABLE(v4-mapped,APACHE_HELP_STRING(--enable-v4-mapped,Allow IPv6 sockets to handle IPv4 connections),
[Allow IPv4 connections on IPv6 listening sockets])
fi
+AC_ARG_ENABLE(exception-hook,APACHE_HELP_STRING(--enable-exception-hook,Enable fatal exception hook),
+[
+ AC_DEFINE(AP_ENABLE_EXCEPTION_HOOK, 1,
+ [Allow modules to run hook after a fatal exception])
+])dnl
+
AC_ARG_ENABLE(maintainer-mode,APACHE_HELP_STRING(--enable-maintainer-mode,Turn on debugging and compile time warnings),
[
APR_ADDTO(CPPFLAGS, -DAP_DEBUG)
])dnl
+dnl Conditionally enable PIE support for GNU toolchains.
+AC_ARG_ENABLE(pie,APACHE_HELP_STRING(--enable-pie,Build httpd as a Position Independent Executable))
+if test "$enable_pie" = "yes"; then
+ AC_CACHE_CHECK([whether $CC accepts PIE flags], [ap_cv_cc_pie], [
+ save_CFLAGS=$CFLAGS
+ save_LDFLAGS=$LDFLAGS
+ CFLAGS="$CFLAGS -fPIE"
+ LDFLAGS="$LDFLAGS -pie"
+ AC_TRY_RUN([static int foo[30000]; int main () { return 0; }],
+ [ap_cv_cc_pie=yes], [ap_cv_cc_pie=no], [ap_cv_cc_pie=yes])
+ CFLAGS=$save_CFLAGS
+ LDFLAGS=$save_LDFLAGS
+ ])
+ if test "$ap_cv_cc_pie" = "yes"; then
+ PICFLAGS="-fPIE"
+ PILDFLAGS="-pie"
+ else
+ AC_ERROR([--enable-pie requested but $CC failed using PIE flags])
+ fi
+fi
+AC_SUBST(PICFLAGS)
+AC_SUBST(PILDFLAGS)
+
prefix="$orig_prefix"
APACHE_ENABLE_MODULES
HTTPD_LDFLAGS="$HTTPD_LDFLAGS --main=$abs_srcdir/server/main.o --core-dll=$abs_srcdir/apachecore.dll"
SH_LDFLAGS="$SH_LDFLAGS --core-dll=$abs_srcdir/apachecore.dll"
esac
+ MOD_SO_ENABLED=yes
fi
+AC_SUBST(MOD_SO_ENABLED)
APACHE_SUBST(PRE_SHARED_CMDS)
APACHE_SUBST(POST_SHARED_CMDS)
APACHE_HELP_STRING(--with-suexec-umask,umask for suexec'd process),[
AC_DEFINE_UNQUOTED(AP_SUEXEC_UMASK, 0$withval, [umask for suexec'd process] ) ] )
-dnl AP_LIBS specifies the actual libraries. note we have some required libs.
-AP_LIBS="$abs_builddir/srclib/pcre/libpcre.la $AP_LIBS"
-
dnl APR should go after the other libs, so the right symbols can be picked up
AP_LIBS="$AP_LIBS `$apu_config --link-libtool --libs` `$apr_config --link-libtool --libs`"
APACHE_SUBST(AP_LIBS)
[This platform doesn't suffer from the thundering herd problem])
fi
-AC_DEFINE_UNQUOTED(AP_SIG_GRACEFUL, SIG$AP_SIG_GRACEFUL, [Signal used to gracefully restart])
-AC_DEFINE_UNQUOTED(AP_SIG_GRACEFUL_STRING, "SIG$AP_SIG_GRACEFUL", [Signal used to gracefully restart (as a quoted string)])
-AC_DEFINE_UNQUOTED(AP_SIG_GRACEFUL_SHORT, $AP_SIG_GRACEFUL, [Signal used to gracefully restart (without SIG prefix)])
-AP_SIG_GRACEFUL_SHORT=$AP_SIG_GRACEFUL
-AP_SIG_GRACEFUL=SIG$AP_SIG_GRACEFUL_SHORT
-AC_SUBST(AP_SIG_GRACEFUL)
-AC_SUBST(AP_SIG_GRACEFUL_STRING)
-AC_SUBST(AP_SIG_GRACEFUL_SHORT)
-
-dnl check for endianness
-if test "$cross_compiling" = "no"; then
- AC_C_BIGENDIAN
-else
- AC_DEFINE(AP_UNKNOWN_BYTE_ORDER,1,
- [byte order is unknown due to cross-compilation])
+if test "$AP_NONBLOCK_WHEN_MULTI_LISTEN" = "1"; then
+ AC_DEFINE(AP_NONBLOCK_WHEN_MULTI_LISTEN, 1,
+ [Listening sockets are non-blocking when there are more than 1])
fi
+
APACHE_FAST_OUTPUT(Makefile modules/Makefile srclib/Makefile)
APACHE_FAST_OUTPUT(os/Makefile server/Makefile)
APACHE_FAST_OUTPUT(support/Makefile srclib/pcre/Makefile)
dnl Ensure that docs/conf is created.
test -d docs/conf||$mkdir_p docs/conf
-AC_OUTPUT($APACHE_OUTPUT_FILES docs/conf/httpd-std.conf docs/conf/ssl-std.conf include/ap_config_layout.h support/apxs support/apachectl support/dbmmanage support/envvars-std support/log_server_status support/logresolve.pl support/phf_abuse_log.cgi support/split-logfile build/rules.mk,[true],[
+dnl Ensure that the httpd version is included
+HTTPD_VERSION=`$abs_srcdir/build/get-version.sh all $abs_srcdir/include/ap_release.h AP_SERVER`
+AC_SUBST(HTTPD_VERSION)
+
+AC_OUTPUT($APACHE_OUTPUT_FILES docs/conf/httpd.conf docs/conf/extra/httpd-autoindex.conf docs/conf/extra/httpd-dav.conf docs/conf/extra/httpd-default.conf docs/conf/extra/httpd-info.conf docs/conf/extra/httpd-languages.conf docs/conf/extra/httpd-manual.conf docs/conf/extra/httpd-mpm.conf docs/conf/extra/httpd-multilang-errordoc.conf docs/conf/extra/httpd-ssl.conf docs/conf/extra/httpd-userdir.conf docs/conf/extra/httpd-vhosts.conf include/ap_config_layout.h support/apxs support/apachectl support/dbmmanage support/envvars-std support/log_server_status support/logresolve.pl support/phf_abuse_log.cgi support/split-logfile build/rules.mk build/pkg/pkginfo build/config_vars.sh,[true],[
APACHE_GEN_MAKEFILES
])
+case $MPM_SUBDIR_NAME in
+*experimental*)
+ echo ""
+ echo ""
+ echo "============================================================"
+ echo " WARNING: THE '${APACHE_MPM}' MPM IS EXPERIMENTAL"
+ echo "============================================================"
+ echo " The selected MPM might not be fully functional!"
+ echo ""
+ echo " Development of this MPM is not complete. Do not use this"
+ echo " MPM unless you are a programmer willing to help fix it."
+ echo ""
+ echo " If you are looking for a stable server, you should not use"
+ echo " the '${APACHE_MPM}' MPM until it is moved out of experimental."
+ echo "============================================================"
+ echo ""
+ echo ""
+ ;;
+esac