mirror of
https://github.com/apache/httpd.git
synced 2025-08-15 23:27:39 +00:00

variables CPPFLAGS, CFLAGS, CXXFLAGS, LDFLAGS and LIBS by moving the configure additions to EXTRA_* variables. Also, allow the user to specify NOTEST_* values for all of the above, which eliminates the need for THREAD_CPPFLAGS, THREAD_CFLAGS, and OPTIM. Fix the setting of INCLUDES and EXTRA_INCLUDES. Check flags as they are added to avoid pointless duplications. Fix the order in which flags are given on the compile and link lines. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@88960 13f79535-47bb-0310-9956-ffa450edef68
369 lines
11 KiB
Plaintext
369 lines
11 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(srclib/apr/build/apr_hints.m4)
|
|
sinclude(srclib/apr/build/libtool.m4)
|
|
sinclude(hints.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 ## Run configure for packages Apache uses
|
|
|
|
echo $ac_n "${nl}Configuring Apache Portable Runtime library ...${nl}"
|
|
|
|
APR_SUBDIR_CONFIG(srclib/apr, "$apache_apr_flags --disable-shared")
|
|
|
|
echo $ac_n "${nl}Configuring Apache Portable Runtime Utility library...${nl}"
|
|
|
|
APR_SUBDIR_CONFIG(srclib/apr-util, "--with-apr=../apr --disable-shared")
|
|
|
|
echo $ac_n "${nl}Configuring PCRE regular expression library ...${nl}"
|
|
|
|
APR_SUBDIR_CONFIG(srclib/pcre)
|
|
|
|
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 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 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
|
|
|
|
AC_CANONICAL_SYSTEM
|
|
|
|
case "$host_alias" 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"
|
|
;;
|
|
*)
|
|
SH_LIBTOOL='$(SHELL) $(top_builddir)/shlibtool --silent'
|
|
;;
|
|
esac
|
|
|
|
dnl
|
|
dnl ## Preload our OS configuration
|
|
APR_PRELOAD
|
|
APACHE_PRELOAD
|
|
|
|
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
|
|
)
|
|
AC_HEADER_SYS_WAIT
|
|
|
|
dnl ## Check for typedefs, structures, and compiler characteristics.
|
|
|
|
AC_C_CONST
|
|
|
|
dnl ## Check for library functions
|
|
|
|
dnl See Comment #Spoon
|
|
|
|
AC_CHECK_FUNCS( \
|
|
initgroups \
|
|
)
|
|
|
|
AC_CHECK_LIB(nsl, gethostbyname)
|
|
AC_CHECK_LIB(nsl, gethostname)
|
|
AC_CHECK_LIB(socket, socket)
|
|
|
|
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(debug,[ --enable-debug Turn on debugging and compile time warnings],
|
|
[APR_ADDTO(CFLAGS,-g)
|
|
if test "$GCC" = "yes"; then
|
|
APR_ADDTO(CFLAGS,-Wall)
|
|
fi
|
|
])dnl
|
|
|
|
AC_ARG_ENABLE(maintainer-mode,[ --enable-maintainer-mode Turn on debugging and compile time warnings],
|
|
[APR_ADDTO(CFLAGS,-g)
|
|
if test "$GCC" = "yes"; then
|
|
APR_ADDTO(CFLAGS,[-Wall -Wmissing-prototypes -Wstrict-prototypes -Wmissing-declarations -DAP_DEBUG])
|
|
fi
|
|
])dnl
|
|
|
|
APACHE_ENABLE_LAYOUT
|
|
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)
|
|
|
|
AM_DISABLE_SHARED
|
|
if test -z "$LIBTOOL"; then
|
|
AM_PROG_LIBTOOL
|
|
APACHE_LIBTOOL_SILENT
|
|
fi
|
|
|
|
PRE_SHARED_CMDS='echo ""'
|
|
POST_SHARED_CMDS='echo ""'
|
|
|
|
if test "$apache_need_shared" = "yes"; then
|
|
$SHELL $ac_aux_dir/ltconfig --output=shlibtool --disable-static --srcdir=$ac_aux_dir --cache-file=./config.cache $ac_aux_dir/ltmain.sh
|
|
case $PLATFORM in
|
|
*-ibm-aix*)
|
|
HTTPD_LDFLAGS="$HTTPD_LDFLAGS -Wl,-bE:$abs_srcdir/support/httpd.exp"
|
|
SH_LDFLAGS="$SH_LDFLAGS -Wl,-bI:$abs_srcdir/support/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)
|
|
APR_ADDTO(CFLAGS, [-Wc,DLL,EXPORTALL])
|
|
;;
|
|
esac
|
|
shared_build="shared-modules"
|
|
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="srclib/pcre/libpcre.la 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 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
|
|
|
|
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_alias" 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,,[
|
|
APACHE_GEN_MAKEFILES
|
|
])
|
|
|