AC_CONFIG_HEADER(include/ap_config_auto.h)
AC_CONFIG_AUX_DIR(build)
+dnl Absolute source/build directory
+abs_srcdir=`(cd $srcdir && pwd)`
+abs_builddir=`pwd`
+
+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`
+HTTPD_MMN=`$abs_srcdir/build/get-version.sh mmn $abs_srcdir/include/ap_mmn.h MODULE_MAGIC_NUMBER`
+
dnl #
dnl # Include our own M4 macros along with those for APR and libtool
dnl #
dnl Check that mkdir -p works
APR_MKDIR_P_CHECK($top_srcdir/build/mkdir.sh)
+dnl get an EGREP to use in the Makefiles
+AC_PROG_EGREP
+APACHE_SUBST(EGREP)
+
dnl ## Run configure for packages Apache uses
dnl shared library support for these packages doesn't currently
orig_prefix="$prefix"
-echo $ac_n "${nl}Configuring Apache Portable Runtime library ...${nl}"
+AC_MSG_NOTICE([])
+AC_MSG_NOTICE([Configuring Apache Portable Runtime library...])
+AC_MSG_NOTICE([])
AC_ARG_WITH(included-apr,
APACHE_HELP_STRING(--with-included-apr,Use bundled copies of APR/APR-Util))
if test "x$with_included_apr" = "xyes"; then
- apr_found=reconfig
+ apr_found=reconfig
+ if test ! -d srclib/apr && test ! -d $srcdir/srclib/apr; then
+ AC_MSG_ERROR([Bundled APR requested but not found at ./srclib/. Download and unpack the corresponding apr and apr-util packages to ./srclib/.])
+ fi
else
- APR_FIND_APR("$srcdir/srclib/apr", "./srclib/apr", 1, 1 2)
+ APR_FIND_APR("$srcdir/srclib/apr", "./srclib/apr", 1, 1 2, [
+ version=`$apr_config --version`
+ case x${version} in
+ x1.[[0-3]].*)
+ AC_MSG_WARN([APR version 1.4.0 or later is required, found $version])
+ apr_acceptable=no
+ ;;
+ esac
+ unset version
+ ])
fi
if test "$apr_found" = "no"; then
dnl We have to find apr-N-config when we reconfigure APR.
for majorver in 1 2; do
- test_apr_config="$srcdir/srclib/apr/apr-${majorver}-config"
- if test -f $test_apr_config; then
- apr_config=$test_apr_config
+ test_apr_config="./srclib/apr/apr-${majorver}-config"
+ if test -f "$test_apr_config"; then
+ apr_config="$test_apr_config"
fi
done
fi
APR_SETIFNULL(CPP, `$apr_config --cpp`)
APR_ADDTO(CFLAGS, `$apr_config --cflags`)
APR_ADDTO(CPPFLAGS, `$apr_config --cppflags`)
+dnl internal-only CPPFLAGS (shouldn't affect third-party module builds)
+INTERNAL_CPPFLAGS=""
APR_ADDTO(LDFLAGS, `$apr_config --ldflags`)
SHLIBPATH_VAR=`$apr_config --shlib-path-var`
APR_BINDIR=`$apr_config --bindir`
apr_major_version=`echo ${APR_VERSION} | sed 's,\..*,,'`
APR_CONFIG="$APR_BINDIR/apr-${apr_major_version}-config"
-echo $ac_n "${nl}Configuring Apache Portable Runtime Utility library...${nl}"
+AC_MSG_NOTICE([])
+AC_MSG_NOTICE([Configuring Apache Portable Runtime Utility library...])
+AC_MSG_NOTICE([])
if test "x${apr_major_version}" = "x2"; then
- apu_found=obsolete
+ apu_found=obsolete
elif test "x$with_included_apr" = "xyes"; then
- apu_found=reconfig
+ apu_found=reconfig
+ if test ! -d srclib/apr-util && test ! -d $srcdir/srclib/apr-util; then
+ AC_MSG_ERROR([Bundled APR-Util requested but not found at ./srclib/. Download and unpack the corresponding apr and apr-util packages to ./srclib/.])
+ fi
else
dnl If httpd is buildconf'ed against an apr 2.x tree, then 1.x
dnl isn't supported.
AP_BUILD_SRCLIB_DIRS="$AP_BUILD_SRCLIB_DIRS apr-util"
AP_CLEAN_SRCLIB_DIRS="apr-util $AP_CLEAN_SRCLIB_DIRS"
dnl APR and APR-Util major versions must match
- apu_config="${srcdir}/srclib/apr-util/apu-${apr_major_version}-config"
+ apu_config="./srclib/apr-util/apu-${apr_major_version}-config"
fi
if test "$apu_found" = "obsolete"; then
AC_PROG_CC
AC_PROG_CPP
+dnl Try to get c99 support for variadic macros
+ifdef([AC_PROG_CC_C99], [AC_PROG_CC_C99])
+
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))
if $PCRE_CONFIG --version >/dev/null 2>&1; then :; else
AC_MSG_ERROR([Did not find pcre-config script at $PCRE_CONFIG])
fi
+ case `$PCRE_CONFIG --version` in
+ [[1-5].*])
+ AC_MSG_ERROR([Need at least pcre version 6.0])
+ ;;
+ esac
AC_MSG_NOTICE([Using external PCRE library from $PCRE_CONFIG])
APR_ADDTO(PCRE_INCLUDES, [`$PCRE_CONFIG --cflags`])
APR_ADDTO(PCRE_LIBS, [`$PCRE_CONFIG --libs`])
fi
APACHE_SUBST(PCRE_LIBS)
-dnl Add PCRE_LIBS to HTTPD_LDFLAGS
-APR_ADDTO(HTTPD_LDFLAGS, [\$(PCRE_LIBS)])
-
-echo $ac_n "${nl}Configuring Apache httpd ...${nl}"
+AC_MSG_NOTICE([])
+AC_MSG_NOTICE([Configuring Apache httpd...])
+AC_MSG_NOTICE([])
dnl If the source dir is not equal to the build dir,
dnl then we are running in VPATH mode.
dnl Add in path to PCRE includes
APR_ADDTO(INCLUDES, $PCRE_INCLUDES)
-echo $ac_n "${nl}Applying OS-specific hints for httpd ...${nl}"
+AC_MSG_NOTICE([])
+AC_MSG_NOTICE([Applying OS-specific hints for httpd...])
+AC_MSG_NOTICE([])
case $host in
*os2*)
;;
*-linux-*)
case `uname -r` in
- 2.[[2-9]]* )
- APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1])
+ # Unserialized accept() was not recommended until Linux 2.2.
+ [[01]].* | 2.[[01]]* )
;;
* )
+ APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1])
;;
esac
;;
dnl solaris 8 and above don't have a thundering herd
dnl not sure about rev's before this one.
case `uname -r` in
- 5.[567]*)
+ 5.[[567]]*)
;;
* )
APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1])
APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1])
;;
*mingw32*)
- APR_ADDTO(CPPFLAGS, [-DAP_DECLARE_EXPORT])
+ APR_ADDTO(INTERNAL_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])
if test "${apu_found}" = "yes"; then
# Require at least APR-util 1.3.x otherwise fail
- APACHE_CHECK_APxVER([apu], 1, 3)
+ if test "${apr_found}" = "yes"; then
+ # we need to add the APR includes to CPPFLAGS
+ apu_ckver_CPPFLAGS="$CPPFLAGS"
+ CPPFLAGS="$CPPFLAGS `$apr_config --includes`"
+ APACHE_CHECK_APxVER([apu], 1, 3)
+ CPPFLAGS="$apu_ckver_CPPFLAGS"
+ else
+ APACHE_CHECK_APxVER([apu], 1, 3)
+ fi
fi
dnl Check for what we can generate dependency files with
sys/prctl.h \
sys/processor.h \
sys/sem.h \
-sys/sdt.h
+sys/sdt.h \
+sys/loadavg.h
)
AC_HEADER_SYS_WAIT
APACHE_SUBST(MATH_LIBS)
LIBS="$saved_LIBS"
+saved_LIBS="$LIBS"
+LIBS=""
+AC_SEARCH_LIBS(crypt, crypt)
+CRYPT_LIBS="$LIBS"
+APACHE_SUBST(CRYPT_LIBS)
+LIBS="$saved_LIBS"
+
dnl See Comment #Spoon
AC_CHECK_FUNCS( \
bindprocessor \
prctl \
timegm \
-getpgid
+getpgid \
+fopen64 \
+getloadavg
)
dnl confirm that a void pointer is large enough to store a long integer
APACHE_CHECK_VOID_PTR_LEN
+AC_CACHE_CHECK([for gettid()], ac_cv_gettid,
+[AC_TRY_RUN(#define _GNU_SOURCE
+#include <unistd.h>
+#include <sys/syscall.h>
+#include <sys/types.h>
+int main(int argc, char **argv) {
+pid_t t = syscall(SYS_gettid); return t == -1 ? 1 : 0; },
+[ac_cv_gettid=yes], [ac_cv_gettid=no], [ac_cv_gettid=no])])
+if test "$ac_cv_gettid" = "yes"; then
+ AC_DEFINE(HAVE_GETTID, 1, [Define if you have gettid()])
+fi
+
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>
AC_ARG_ENABLE(dtrace,APACHE_HELP_STRING(--enable-dtrace,Enable DTrace probes),
[
enable_dtrace=$enableval
- APR_ADDTO(CPPFLAGS, -DAPR_DTRACE_PROVIDER)
- AC_MSG_ERROR('DTrace Support in the build system is not complete. Patches Welcome!')
+ if test "$enableval" = "yes"; then
+ APR_ADDTO(CPPFLAGS, -DAPR_DTRACE_PROVIDER)
+ AC_MSG_ERROR('DTrace Support in the build system is not complete. Patches Welcome!')
+ fi
],
[
enable_dtrace=no
APACHE_SUBST(DTRACE)
-APR_CHECK_APR_DEFINE(APR_HAVE_IPV6)
+AC_ARG_ENABLE(hook-probes,APACHE_HELP_STRING(--enable-hook-probes,Enable APR hook probes),
+[
+ if test "$enableval" = "yes"; then
+ AC_DEFINE(AP_HOOK_PROBES_ENABLED, 1,
+ [Enable the APR hook probes capability, reading from ap_hook_probes.h])
+ APR_ADDTO(INTERNAL_CPPFLAGS, -DAP_HOOK_PROBES_ENABLED)
+ fi
+])dnl
-AC_ARG_ENABLE(v4-mapped,APACHE_HELP_STRING(--enable-v4-mapped,Allow IPv6 sockets to handle IPv4 connections),
-[
- v4mapped=$enableval
+AC_ARG_ENABLE(exception-hook,APACHE_HELP_STRING(--enable-exception-hook,Enable fatal exception hook),
+[
+ if test "$enableval" = "yes"; then
+ AC_DEFINE(AP_ENABLE_EXCEPTION_HOOK, 1,
+ [Allow modules to run hook after a fatal exception])
+ fi
+])dnl
+
+AC_ARG_ENABLE(load-all-modules,APACHE_HELP_STRING(--enable-load-all-modules,Load all modules),
+[
+ LOAD_ALL_MODULES=$enableval
+ AC_MSG_NOTICE([Setting "LOAD_ALL_MODULES" to $LOAD_ALL_MODULES])
],
[
- case $host in
- *freebsd5*|*netbsd*|*openbsd*)
- v4mapped=no
- ;;
- *)
- v4mapped=yes
- ;;
-esac
+ LOAD_ALL_MODULES="no"
])
-if test $v4mapped = "yes" -a $ac_cv_define_APR_HAVE_IPV6 = "yes"; then
- AC_DEFINE(AP_ENABLE_V4_MAPPED, 1,
- [Allow IPv4 connections on IPv6 listening sockets])
-fi
-
-AC_ARG_ENABLE(exception-hook,APACHE_HELP_STRING(--enable-exception-hook,Enable fatal exception hook),
+AC_ARG_ENABLE(maintainer-mode,APACHE_HELP_STRING(--enable-maintainer-mode,Turn on debugging and compile time warnings and load all compiled modules),
[
- AC_DEFINE(AP_ENABLE_EXCEPTION_HOOK, 1,
- [Allow modules to run hook after a fatal exception])
+ if test "$enableval" = "yes"; then
+ APR_ADDTO(CPPFLAGS, -DAP_DEBUG)
+ if test "$GCC" = "yes"; then
+ APR_ADDTO(CFLAGS,[-Wall -Wmissing-prototypes -Wstrict-prototypes -Wmissing-declarations -Wpointer-arith])
+ APACHE_ADD_GCC_CFLAG([-Wdeclaration-after-statement])
+ APACHE_ADD_GCC_CFLAG([-Werror=declaration-after-statement])
+ APACHE_ADD_GCC_CFLAG([-Wformat])
+ APACHE_ADD_GCC_CFLAG([-Wformat-security])
+ APACHE_ADD_GCC_CFLAG([-Werror=format-security])
+ elif test "$AIX_XLC" = "yes"; then
+ APR_ADDTO(CFLAGS,-qfullpath -qinitauto=FE -qcheck=all -qinfo=pro)
+ fi
+ if test "x$enable_load_all_modules" = "x"; then
+ LOAD_ALL_MODULES=yes
+ AC_MSG_NOTICE([Maintainer mode setting "LOAD_ALL_MODULES" to $LOAD_ALL_MODULES])
+ fi
+ if test "x$enable_bucketeer" = "x"; then
+ enable_bucketeer=yes
+ AC_MSG_NOTICE([Maintainer mode setting "enable_bucketeer" to yes])
+ fi
+ fi
])dnl
-AC_ARG_ENABLE(maintainer-mode,APACHE_HELP_STRING(--enable-maintainer-mode,Turn on debugging and compile time warnings),
+AC_ARG_ENABLE(debugger-mode,APACHE_HELP_STRING(--enable-debugger-mode,Turn on debugging and compile time warnings and turn off optimization),
[
- APR_ADDTO(CPPFLAGS, -DAP_DEBUG)
- if test "$GCC" = "yes"; then
- APR_ADDTO(CFLAGS,[-Wall -Wmissing-prototypes -Wstrict-prototypes -Wmissing-declarations])
- elif test "$AIX_XLC" = "yes"; then
- APR_ADDTO(CFLAGS,-qfullpath -qinitauto=FE -qcheck=all -qinfo=pro)
+ if test "$enableval" = "yes"; then
+ APR_ADDTO(CPPFLAGS, -DAP_DEBUG)
+ if test "$GCC" = "yes"; then
+ APR_ADDTO(CFLAGS,[-Wall -Wmissing-prototypes -Wstrict-prototypes -Wmissing-declarations -Wpointer-arith -O0])
+ APACHE_ADD_GCC_CFLAG([-Wdeclaration-after-statement])
+ APACHE_ADD_GCC_CFLAG([-Werror=declaration-after-statement])
+ APACHE_ADD_GCC_CFLAG([-Wformat])
+ APACHE_ADD_GCC_CFLAG([-Wformat-security])
+ APACHE_ADD_GCC_CFLAG([-Werror=format-security])
+ elif test "$AIX_XLC" = "yes"; then
+ APR_ADDTO(CFLAGS,-qfullpath -qinitauto=FE -qcheck=all -qinfo=pro)
+ fi
fi
])dnl
AC_ERROR([--enable-pie requested but $CC failed using PIE flags])
fi
fi
-AC_SUBST(PICFLAGS)
-AC_SUBST(PILDFLAGS)
+APACHE_SUBST(PICFLAGS)
+APACHE_SUBST(PILDFLAGS)
prefix="$orig_prefix"
APACHE_ENABLE_MODULES
dnl enable_so tells us if *any* modules can be built as DSOs
-if test "$enable_so" = "yes"; then
+if test "$enable_so" = "yes" -o "$enable_so" = "static"; then
case $host in
*-ibm-aix*)
APR_ADDTO(HTTPD_LDFLAGS, [-Wl,-uXML_Parse -Wl,-bE:$abs_builddir/server/httpd.exp])
[Listening sockets are non-blocking when there are more than 1])
fi
+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),
+[
+ v4mapped=$enableval
+],
+[
+ case $host in
+ *freebsd[[1234]].*)
+ v4mapped=yes
+ ;;
+ *freebsd*|*netbsd*|*openbsd*)
+ v4mapped=no
+ ;;
+ *)
+ v4mapped=yes
+ ;;
+ esac
+ if ap_mpm_is_enabled winnt; then
+ dnl WinNT MPM doesn't support this.
+ v4mapped=no
+ fi
+])
+
+if test $v4mapped = "yes" -a $ac_cv_define_APR_HAVE_IPV6 = "yes"; then
+ AC_DEFINE(AP_ENABLE_V4_MAPPED, 1,
+ [Allow IPv4 connections on IPv6 listening sockets])
+fi
APACHE_FAST_OUTPUT(Makefile modules/Makefile srclib/Makefile)
APACHE_FAST_OUTPUT(os/Makefile server/Makefile)
fi
dnl ## Finalize the variables
-echo $ac_n "${nl}Restore user-defined environment settings...${nl}"
+AC_MSG_NOTICE([])
+AC_MSG_NOTICE([Restore user-defined environment settings...])
+AC_MSG_NOTICE([])
APR_RESTORE_THE_ENVIRONMENT(CPPFLAGS, EXTRA_)
APR_RESTORE_THE_ENVIRONMENT(CFLAGS, EXTRA_)
APR_RESTORE_THE_ENVIRONMENT(LIBS, EXTRA_)
APR_RESTORE_THE_ENVIRONMENT(INCLUDES, EXTRA_)
-echo $ac_n "${nl}Construct makefiles and header files...${nl}"
+AC_MSG_NOTICE([])
+AC_MSG_NOTICE([Construct makefiles and header files...])
+AC_MSG_NOTICE([])
APACHE_GEN_CONFIG_VARS
dnl Ensure that docs/conf is created.
test -d docs/conf||$mkdir_p docs/conf
-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],[
+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 docs/conf/extra/proxy-html.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
])