dnl dnl Autoconf configuration for Apache httpd dnl dnl Use ./buildconf to produce a configure script dnl AC_PREREQ(2.13) AC_INIT(ABOUT_APACHE) AC_CONFIG_HEADER(include/ap_config_auto.h) AC_CONFIG_AUX_DIR(srclib/apr/build) dnl # dnl # Include our own M4 macros along with those for APR and libtool dnl # sinclude(srclib/apr/build/apr_common.m4) sinclude(srclib/apr/build/apr_network.m4) sinclude(srclib/apr/build/apr_threads.m4) sinclude(acinclude.m4) dnl XXX we can't just use AC_PREFIX_DEFAULT because that isn't subbed in dnl by configure until it is too late. Is that how it should be or not? dnl Something seems broken here. AC_PREFIX_DEFAULT(/usr/local/apache2) dnl Get the layout here, so we can pass the required variables to apr APACHE_ENABLE_LAYOUT dnl reparse the configure arguments. APACHE_PARSE_ARGUMENTS dnl export expanded and relative configure argument variables APACHE_EXPORT_ARGUMENTS dnl Save user-defined environment settings for later restoration dnl APR_SAVE_THE_ENVIRONMENT(CPPFLAGS) APR_SAVE_THE_ENVIRONMENT(CFLAGS) APR_SAVE_THE_ENVIRONMENT(CXXFLAGS) APR_SAVE_THE_ENVIRONMENT(LDFLAGS) APR_SAVE_THE_ENVIRONMENT(LIBS) APR_SAVE_THE_ENVIRONMENT(INCLUDES) dnl Generate ./config.nice for reproducing runs of configure dnl APR_CONFIG_NICE(config.nice) nl=' ' dnl ## Run configure for packages Apache uses dnl shared library support for these packages doesn't currently dnl work on some platforms AC_CANONICAL_SYSTEM orig_prefix="$prefix" echo $ac_n "${nl}Configuring Apache Portable Runtime library ...${nl}" APR_SUBDIR_CONFIG(srclib/apr, "$apache_apr_flags --prefix=$prefix --exec-prefix=$exec_prefix --libdir=$libdir --bindir=$bindir --datadir=$datadir --with-installbuilddir=$installbuilddir") echo $ac_n "${nl}Configuring Apache Portable Runtime Utility library...${nl}" APR_SUBDIR_CONFIG(srclib/apr-util, "--with-apr=../apr --prefix=$prefix --exec-prefix=$exec_prefix --libdir=$libdir --bindir=$bindir") echo $ac_n "${nl}Configuring PCRE regular expression library ...${nl}" APR_SUBDIR_CONFIG(srclib/pcre, "--prefix=$prefix --exec-prefix=$exec_prefix --libdir=$libdir --bindir=$bindir") echo $ac_n "${nl}Configuring Apache httpd ...${nl}" echo $ac_n "obtaining flag settings from the sub-configures...${nl}" . ./srclib/apr/APRVARS dnl Now that we have APR's EXTRA_flags in our environment, move them over dnl to the normal variables to avoid duplications and use them for testing. dnl We ignore EXTRA_INCLUDES because our own includes will encompass them. dnl APR_ADDTO(CFLAGS, $EXTRA_CFLAGS) APR_ADDTO(CPPFLAGS, $EXTRA_CPPFLAGS) APR_ADDTO(LDFLAGS, $EXTRA_LDFLAGS) APR_ADDTO(LIBS, $EXTRA_LIBS) EXTRA_CFLAGS= EXTRA_CPPFLAGS= EXTRA_LDFLAGS= EXTRA_LIBS= EXTRA_INCLUDES= dnl Absolute source/build directory abs_srcdir=`(cd $srcdir && pwd)` abs_builddir=`pwd` dnl If the source dir is not equal to the build dir, dnl then we are running in VPATH mode. if test "$abs_builddir" != "$abs_srcdir"; then USE_VPATH=1 APR_ADDTO(INCLUDES, [-I. -I\$(srcdir) -I\$(top_builddir)/os/\$(OS_DIR) -I\$(top_srcdir)/os/\$(OS_DIR) -I\$(top_builddir)/server/mpm/\$(MPM_NAME) -I\$(top_srcdir)/server/mpm/\$(MPM_NAME) -I\$(top_builddir)/modules/http -I\$(top_srcdir)/modules/http -I\$(top_srcdir)/modules/proxy -I\$(top_builddir)/include -I\$(top_srcdir)/include -I\$(top_builddir)/srclib/apr/include -I\$(top_srcdir)/srclib/apr/include -I\$(top_builddir)/srclib/apr-util/include -I\$(top_srcdir)/srclib/apr-util/include]) else APR_ADDTO(INCLUDES, [-I. -I\$(top_srcdir)/os/\$(OS_DIR) -I\$(top_srcdir)/server/mpm/\$(MPM_NAME) -I\$(top_srcdir)/modules/http -I\$(top_srcdir)/modules/proxy -I\$(top_srcdir)/include -I\$(top_srcdir)/srclib/apr/include -I\$(top_srcdir)/srclib/apr-util/include]) fi echo $ac_n "${nl}Applying OS-specific hints for httpd ...${nl}" case $host in *os2*) # Use a custom made libtool replacement echo "using aplibtool" LIBTOOL="$abs_srcdir/srclib/apr/build/aplibtool" SH_LIBTOOL="$LIBTOOL --shared --export-all" SH_LIBS="\$(ALL_LIBS)" CORE_IMPLIB_FILE="ApacheCoreOS2.la" CORE_IMPLIB="$abs_srcdir/server/$CORE_IMPLIB_FILE" MK_IMPLIB="emximp" other_targets="$other_targets os2core" INSTALL_PROG_FLAGS="-e .exe" SHLTCFLAGS="" LTCFLAGS="" ;; *) if test "x$LTFLAGS" = "x"; then LTFLAGS='--silent' fi LIBTOOL='$(SHELL) $(top_builddir)/srclib/apr/libtool $(LTFLAGS)' libtoolversion=`$abs_builddir/srclib/apr/libtool --version` case $libtoolversion in *1.4*) SH_LIBTOOL='$(LIBTOOL)' SHLTCFLAGS="-prefer-pic" LTCFLAGS="-prefer-non-pic -static" ;; *) SH_LIBTOOL='$(SHELL) $(top_builddir)/shlibtool $(LTFLAGS)' SHLTCFLAGS="" LTCFLAGS="" ;; esac ;; esac APACHE_SUBST(SHLTCFLAGS) APACHE_SUBST(LTCFLAGS) AP_SIG_GRACEFUL=USR1 case $host in *-apple-aux3*) APR_SETVAR(APACHE_MPM, [prefork]) APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1]) ;; *-beos*) APR_SETVAR(APACHE_MPM, [beos]) APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1]) ;; *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]) ;; * ) ;; esac ;; *486-*-bsdi* | *-netbsd* | *-freebsd* | *-apple-darwin* | *-dec-osf* | *-qnx) APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1]) ;; *-solaris2*) dnl This is a hack -- we should be using AC_TRY_RUN instead ap_platform_runtime_link_flag="-R" 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]*) ;; * ) APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1]) ;; esac ;; *cygwin*) APR_SETVAR(APACHE_MPM, [prefork]) APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1]) ;; esac 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 dnl ### need to move some of the arguments "up here" dnl ## Check for programs AC_PATH_PROG(RM, rm) AC_PROG_AWK AC_PROG_CC AC_PROG_CPP AC_PROG_INSTALL AC_PROG_LN_S AC_CHECK_TOOL(RANLIB, ranlib, true) dnl AC_PATH_PROG(PERL_PATH, perl) dnl various OS checks that apparently set required flags AC_AIX AC_ISC_POSIX AC_MINIX dnl ## Check for libraries dnl ## Check for header files dnl I think these are just used all over the place, so just check for dnl them at the base of the tree. If some are specific to a single dnl directory, they should be moved (Comment #Spoon) dnl Regarding standard header files: AC_HEADER_STDC doesn't set symbols dnl HAVE_STRING_H, HAVE_STDLIB_H, etc., so those are checked for dnl explicitly so that the normal HAVE_xxx_H symbol is defined. AC_HEADER_STDC AC_CHECK_HEADERS( \ string.h \ limits.h \ unistd.h \ sys/socket.h \ pwd.h \ grp.h \ strings.h \ sys/processor.h \ sys/sem.h ) AC_HEADER_SYS_WAIT 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 dnl See Comment #Spoon AC_CHECK_FUNCS( \ getpwnam \ getgrnam \ initgroups \ bindprocessor \ timegm \ ) 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 #include ], [struct tm tm; tm.tm_gmtoff;], ac_cv_struct_tm_gmtoff=yes, ac_cv_struct_tm_gmtoff=no)]) if test "$ac_cv_struct_tm_gmtoff" = "yes"; then AC_DEFINE(HAVE_GMTOFF) fi dnl ## Set up any appropriate OS-specific environment variables for apachectl case $host in *aix*) # for 32-bit builds, increase MAXDATA to allow lots of threads if test x$OBJECT_MODE != x64; then OS_SPECIFIC_VARS="LDR_CNTRL=\"MAXDATA=0x80000000\" ; export LDR_CNTRL ;" fi OS_SPECIFIC_VARS="$OS_SPECIFIC_VARS AIXTHREAD_SCOPE=S ; export AIXTHREAD_SCOPE" ;; *os390*) OS_SPECIFIC_VARS="export _CEE_RUNOPTS=\"STACK(,,ANY)\" ; export _EDC_ADD_ERRNO2=1" ;; *) OS_SPECIFIC_VARS="" esac AC_ARG_WITH(port,APACHE_HELP_STRING(--with-port=PORT,Port on which to listen (default is 80)), [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_ENABLE(maintainer-mode,APACHE_HELP_STRING(--enable-maintainer-mode,Turn on debugging and compile time warnings), [ APR_ADDTO(CPPFLAGS, -DAP_DEBUG) ])dnl prefix="$orig_prefix" APACHE_ENABLE_MODULES dnl reading config stubs esyscmd(./build/config-stubs .) APACHE_SUBST(progname) APACHE_SUBST(MPM_LIB) APACHE_SUBST(OS) APACHE_SUBST(OS_DIR) APACHE_SUBST(BUILTIN_LIBS) APACHE_SUBST(SHLIBPATH_VAR) APACHE_SUBST(OS_SPECIFIC_VARS) PRE_SHARED_CMDS='echo ""' POST_SHARED_CMDS='echo ""' dnl apache_need_shared tells us if Apache modules are being built as DSOs if test "$apache_need_shared" = "yes"; then if test -f $ac_aux_dir/ltconfig; then $SHELL $ac_aux_dir/ltconfig --output=shlibtool --disable-static --srcdir=$ac_aux_dir --cache-file=./config.cache $ac_aux_dir/ltmain.sh fi shared_build="shared-build" fi dnl enable_so tells us if *any* modules can be built as DSOs if test "$enable_so" = "yes"; then case $host in *-ibm-aix*) HTTPD_LDFLAGS="$HTTPD_LDFLAGS -Wl,-uXML_Parse -Wl,-bE:$abs_builddir/server/httpd.exp" SH_LDFLAGS="$SH_LDFLAGS \$(EXTRA_LDFLAGS) \$(EXTRA_LIBS)" UTIL_LDFLAGS="$UTIL_LDFLAGS -Wl,-uXML_Parse" ;; *beos) SH_LDFLAGS='$(top_builddir)/_APP_' PRE_SHARED_CMDS='ln -s $(top_builddir)/httpd $(top_builddir)/_APP_' POST_SHARED_CMDS='rm $(top_builddir)/_APP_' ;; *os390) 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 fi APACHE_SUBST(PRE_SHARED_CMDS) APACHE_SUBST(POST_SHARED_CMDS) APACHE_SUBST(shared_build) AC_ARG_WITH(program-name, APACHE_HELP_STRING(--with-program-name,alternate executable name),[ progname="$withval" ], [ progname="httpd"] ) # SuExec parameters AC_ARG_WITH(suexec-bin, APACHE_HELP_STRING(--with-suexec-bin,Path to suexec binary),[ AC_DEFINE_UNQUOTED(SUEXEC_BIN, "$withval", [Path to suexec binary] ) ] ) AC_ARG_WITH(suexec-caller, APACHE_HELP_STRING(--with-suexec-caller,User allowed to call SuExec),[ AC_DEFINE_UNQUOTED(AP_HTTPD_USER, "$withval", [User allowed to call SuExec] ) ] ) AC_ARG_WITH(suexec-userdir, APACHE_HELP_STRING(--with-suexec-userdir,User subdirectory),[ AC_DEFINE_UNQUOTED(AP_USERDIR_SUFFIX, "$withval", [User subdirectory] ) ] ) AC_ARG_WITH(suexec-docroot, APACHE_HELP_STRING(--with-suexec-docroot,SuExec root directory),[ AC_DEFINE_UNQUOTED(AP_DOC_ROOT, "$withval", [SuExec root directory] ) ] ) AC_ARG_WITH(suexec-uidmin, APACHE_HELP_STRING(--with-suexec-uidmin,Minimal allowed UID),[ AC_DEFINE_UNQUOTED(AP_UID_MIN, $withval, [Minimum allowed UID] ) ] ) AC_ARG_WITH(suexec-gidmin, APACHE_HELP_STRING(--with-suexec-gidmin,Minimal allowed GID),[ AC_DEFINE_UNQUOTED(AP_GID_MIN, $withval, [Minimum allowed GID] ) ] ) AC_ARG_WITH(suexec-logfile, APACHE_HELP_STRING(--with-suexec-logfile,Set the logfile),[ AC_DEFINE_UNQUOTED(AP_LOG_EXEC, "$withval", [SuExec log file] ) ] ) AC_ARG_WITH(suexec-safepath, APACHE_HELP_STRING(--with-suexec-safepath,Set the safepath),[ AC_DEFINE_UNQUOTED(AP_SAFE_PATH, "$withval", [safe shell path for SuExec] ) ] ) AC_ARG_WITH(suexec-umask, 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 $abs_builddir/srclib/apr-util/libaprutil.la $AP_LIBS" dnl APR should go after the other libs, so the right symbols can be picked up AP_LIBS="$AP_LIBS $abs_builddir/srclib/apr/libapr.la" APACHE_SUBST(AP_LIBS) AC_DEFINE(AP_USING_AUTOCONF, 1, [Using autoconf to configure Apache]) if test "$SINGLE_LISTEN_UNSERIALIZED_ACCEPT" = "1"; then AC_DEFINE(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, 1, [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]) fi APACHE_FAST_OUTPUT(Makefile modules/Makefile srclib/Makefile) APACHE_FAST_OUTPUT(os/beos/Makefile os/os2/Makefile os/Makefile) APACHE_FAST_OUTPUT(os/unix/Makefile server/Makefile) APACHE_FAST_OUTPUT(support/Makefile srclib/pcre/Makefile) if test -d ./test; then APACHE_FAST_OUTPUT(test/Makefile) fi dnl get the exported vars from APRUTIL . ./srclib/apr-util/export_vars.sh APR_ADDTO(LIBS, $APRUTIL_EXPORT_LIBS) APR_ADDTO(INCLUDES, $APRUTIL_EXPORT_INCLUDES) APR_ADDTO(LDFLAGS, $APRUTIL_LDFLAGS) AP_LIBS="$AP_LIBS $LIBTOOL_LIBS" dnl ## Finalize the variables echo $ac_n "${nl}Restore user-defined environment settings...${nl}" APR_RESTORE_THE_ENVIRONMENT(CPPFLAGS, EXTRA_) APR_RESTORE_THE_ENVIRONMENT(CFLAGS, EXTRA_) APR_RESTORE_THE_ENVIRONMENT(CXXFLAGS, EXTRA_) APR_RESTORE_THE_ENVIRONMENT(LDFLAGS, EXTRA_) APR_RESTORE_THE_ENVIRONMENT(LIBS, EXTRA_) APR_RESTORE_THE_ENVIRONMENT(INCLUDES, EXTRA_) echo $ac_n "${nl}Construct makefiles and header files...${nl}" APACHE_GEN_CONFIG_VARS dnl ## Build modules.c rm -f modules.c echo $MODLIST | $AWK -f $srcdir/build/build-modules-c.awk > modules.c APR_EXPAND_VAR(ap_prefix, $prefix) AC_DEFINE_UNQUOTED(HTTPD_ROOT, "${ap_prefix}", [Root directory of the Apache install area]) AC_DEFINE_UNQUOTED(SERVER_CONFIG_FILE, "${rel_sysconfdir}/${progname}.conf", [Location of the config file, relative to the Apache root directory]) AC_DEFINE_UNQUOTED(APACHE_MPM_DIR, "$MPM_DIR", [Location of the source for the current MPM]) perlbin=`$ac_aux_dir/PrintPath perl` if test "x$perlbin" = "x"; then perlbin="/replace/with/path/to/perl/interpreter" fi AC_SUBST(perlbin) dnl If we are running on BSD/OS, we need to use the BSD .include syntax. BSD_MAKEFILE=no case $host in *bsdi*) # Check whether they've installed GNU make if make --version > /dev/null 2>&1; then true else BSD_MAKEFILE=yes fi ;; esac AC_OUTPUT($APACHE_OUTPUT_FILES docs/conf/httpd-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],[ APACHE_GEN_MAKEFILES ])