| 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 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 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) |
| test "$prefix" = "NONE" && prefix='/usr/local/apache2' |
| test "$exec_prefix" = "NONE" && exec_prefix='${prefix}' |
| |
| 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 |
| |
| case $host in |
| *-ibm-aix*) |
| disable_shared="--disable-shared" |
| ;; |
| *) |
| disable_shared="" |
| esac |
| |
| orig_prefix="$prefix" |
| |
| echo $ac_n "${nl}Configuring Apache Portable Runtime library ...${nl}" |
| |
| APR_SUBDIR_CONFIG(srclib/apr, "$apache_apr_flags --prefix=$prefix $disable_shared") |
| |
| echo $ac_n "${nl}Configuring Apache Portable Runtime Utility library...${nl}" |
| |
| APR_SUBDIR_CONFIG(srclib/apr-util, "--with-apr=../apr --prefix=$prefix $disable_shared") |
| |
| echo $ac_n "${nl}Configuring PCRE regular expression library ...${nl}" |
| |
| APR_SUBDIR_CONFIG(srclib/pcre, "--prefix=$prefix") |
| |
| 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" |
| 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" |
| ;; |
| *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 \ |
| ) |
| |
| 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 |
| |
| APACHE_ENABLE_LAYOUT |
| 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) |
| |
| PRE_SHARED_CMDS='echo ""' |
| POST_SHARED_CMDS='echo ""' |
| |
| 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 |
| case $host in |
| *-ibm-aix*) |
| HTTPD_LDFLAGS="$HTTPD_LDFLAGS -Wl,-bE:$abs_builddir/server/httpd.exp" |
| SH_LDFLAGS="$SH_LDFLAGS -Wl,-bI:$abs_builddir/server/httpd.exp" |
| ;; |
| *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 |
| shared_build="shared-build" |
| 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-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_LIB_DIRS specifies the additional libs from srclib/ that we need |
| 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_LIB_DIRS) |
| 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) |
| for i in $AP_LIB_DIRS; do |
| APACHE_FAST_OUTPUT(srclib/$i/Makefile) |
| done |
| |
| 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) |
| 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 |
| |
| AC_DEFINE_UNQUOTED(HTTPD_ROOT, "$prefix", |
| [Root directory of the Apache install area]) |
| AC_DEFINE_UNQUOTED(SERVER_CONFIG_FILE, "conf/$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 support/apxs support/apachectl support/dbmmanage support/log_server_status support/logresolve.pl support/phf_abuse_log.cgi support/split-logfile build/rules.mk,,[ |
| APACHE_GEN_MAKEFILES |
| ]) |
| |