mirror of
https://github.com/apache/httpd.git
synced 2025-08-20 16:09:55 +00:00

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
434 lines
13 KiB
Plaintext
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
|
|
])
|
|
|