Files
apache-http-server/configure.in
Justin Erenkrantz a8a56e00c5 Switch back to SIGUSR1 for graceful restarts on all platforms that
support it.  This defines a symbol called AP_SIG_GRACEFUL in
ap_config_auto.h which will have the appropriate signal value.  All
direct references to SIGWINCH have been replaced with AP_SIG_GRACEFUL.

On Linux 2.0, use SIGWINCH instead since SIGUSR1 is used by glibc
2.0's user-space threading library to control threads.  All later
versions of Linux/glibc don't have this problem.  (Not to mention the
security holes in older Linux versions which make it unsuitable for
use as a web server.)  If your platform doesn't have SIGUSR1, use the
appropriate mojo in configure to define what your graceful restart
signal should be.

In theory, a configure switch could be added to allow the admin to
specify the appropriate signal that should be used.  This is left
as an exercise to the reader for now.

The docs need to be updated.  Since the signal is now configurable,
just saying SIGUSR1 for graceful restart isn't completely true.  Also,
the apachectl functionality needs to be moved into httpd - this is
what Win32 does and it makes us consistent across platforms.

Roy issued a veto against use of SIGWINCH by default, so this should
resolve that veto.


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@91076 13f79535-47bb-0310-9956-ffa450edef68
2001-09-18 22:13:59 +00:00

434 lines
13 KiB
Plaintext

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_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)/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=SIGUSR1
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=SIGWINCH
;;
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,[ --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,[ --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_srcdir/server/httpd.exp"
SH_LDFLAGS="$SH_LDFLAGS -Wl,-bI:$abs_srcdir/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,
[ --with-program-name alternate executable name],[
progname="$withval" ], [
progname="httpd"] )
# SuExec parameters
AC_ARG_WITH(suexec-caller,
[ --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,
[ --with-suexec-userdir User subdirectory],[
AC_DEFINE_UNQUOTED(AP_USERDIR_SUFFIX, "$withval", [User subdirectory] ) ] )
AC_ARG_WITH(suexec-docroot,
[ --with-suexec-docroot SuExec root directory],[
AC_DEFINE_UNQUOTED(AP_DOC_ROOT, "$withval", [SuExec root directory] ) ] )
AC_ARG_WITH(suexec-uidmin,
[ --with-suexec-uidmin Minimal allowed UID],[
AC_DEFINE_UNQUOTED(AP_UID_MIN, $withval, [Minimum allowed UID] ) ] )
AC_ARG_WITH(suexec-gidmin,
[ --with-suexec-gidmin Minimal allowed GID],[
AC_DEFINE_UNQUOTED(AP_GID_MIN, $withval, [Minimum allowed GID] ) ] )
AC_ARG_WITH(suexec-logfile,
[ --with-suexec-logfile Set the logfile],[
AC_DEFINE_UNQUOTED(AP_LOG_EXEC, "$withval", [SuExec log file] ) ] )
AC_ARG_WITH(suexec-safepath,
[ --with-suexec-safepath Set the safepath],[
AC_DEFINE_UNQUOTED(AP_SAFE_PATH, "$withval", [safe shell path for SuExec] ) ] )
AC_ARG_WITH(suexec-umask,
[ --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, $AP_SIG_GRACEFUL, [Signal used to gracefully restart])
AC_DEFINE_UNQUOTED(AP_SIG_GRACEFUL_STRING, "$AP_SIG_GRACEFUL", [Signal used to gracefully restart (as a quoted string)])
AC_SUBST(AP_SIG_GRACEFUL)
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
])