2 dnl Autoconf configuration for Apache httpd
4 dnl Use ./buildconf to produce a configure script
10 AC_CONFIG_HEADER(include/ap_config_auto.h)
11 AC_CONFIG_AUX_DIR(build)
14 dnl # Include our own M4 macros along with those for APR and libtool
16 sinclude(build/apr_common.m4)
17 sinclude(build/find_apr.m4)
18 sinclude(build/find_apu.m4)
19 sinclude(acinclude.m4)
21 dnl XXX we can't just use AC_PREFIX_DEFAULT because that isn't subbed in
22 dnl by configure until it is too late. Is that how it should be or not?
23 dnl Something seems broken here.
24 AC_PREFIX_DEFAULT(/usr/local/apache2)
26 dnl Get the layout here, so we can pass the required variables to apr
27 APR_ENABLE_LAYOUT(Apache, [errordir iconsdir htdocsdir cgidir])
29 dnl reparse the configure arguments.
32 dnl export expanded and relative configure argument variables
33 APACHE_EXPORT_ARGUMENTS
35 dnl Save user-defined environment settings for later restoration
37 APR_SAVE_THE_ENVIRONMENT(CPPFLAGS)
38 APR_SAVE_THE_ENVIRONMENT(CFLAGS)
39 APR_SAVE_THE_ENVIRONMENT(CXXFLAGS)
40 APR_SAVE_THE_ENVIRONMENT(LDFLAGS)
41 APR_SAVE_THE_ENVIRONMENT(LIBS)
42 APR_SAVE_THE_ENVIRONMENT(INCLUDES)
44 dnl Generate ./config.nice for reproducing runs of configure
46 APR_CONFIG_NICE(config.nice)
50 dnl Check that mkdir -p works
51 APR_MKDIR_P_CHECK($top_srcdir/build/mkdir.sh)
53 dnl ## Run configure for packages Apache uses
55 dnl shared library support for these packages doesn't currently
56 dnl work on some platforms
62 echo $ac_n "${nl}Configuring Apache Portable Runtime library ...${nl}"
64 APR_FIND_APR("$srcdir/srclib/apr", "./srclib/apr", 1)
66 if test "$apr_found" = "no"; then
67 AC_MSG_ERROR([APR not found. Please read the documentation.])
70 if test "$apr_found" = "reconfig"; then
71 APR_SUBDIR_CONFIG(srclib/apr, [$apache_apr_flags --prefix=$prefix --exec-prefix=$exec_prefix --libdir=$libdir --includedir=$includedir --bindir=$bindir --datadir=$datadir --with-installbuilddir=$installbuilddir])
72 dnl We must be the first to build and the last to be cleaned
73 AP_BUILD_SRCLIB_DIRS="apr $AP_BUILD_SRCLIB_DIRS"
74 AP_CLEAN_SRCLIB_DIRS="$AP_CLEAN_SRCLIB_DIRS apr"
77 APR_ADDTO(CFLAGS, `$apr_config --cflags`)
78 APR_ADDTO(CPPFLAGS, `$apr_config --cppflags`)
79 APR_ADDTO(LDFLAGS, `$apr_config --ldflags`)
80 APR_ADDTO(INCLUDES, `$apr_config --includes`)
81 SHLIBPATH_VAR=`$apr_config --shlib-path-var`
82 APR_BINDIR=`$apr_config --bindir`
83 APR_INCLUDEDIR=`$apr_config --includedir`
85 echo $ac_n "${nl}Configuring Apache Portable Runtime Utility library...${nl}"
87 APR_FIND_APU("$srcdir/srclib/apr-util", "./srclib/apr-util", 1)
89 if test "$apu_found" = "no"; then
90 AC_MSG_ERROR([APR-util not found. Please read the documentation.])
93 if test "$apu_found" = "reconfig"; then
94 APR_SUBDIR_CONFIG(srclib/apr-util, [--with-apr=../apr --prefix=$prefix --exec-prefix=$exec_prefix --libdir=$libdir --includedir=$includedir --bindir=$bindir])
95 dnl We must be the last to build and the first to be cleaned
96 AP_BUILD_SRCLIB_DIRS="$AP_BUILD_SRCLIB_DIRS apr-util"
97 AP_CLEAN_SRCLIB_DIRS="apr-util $AP_CLEAN_SRCLIB_DIRS"
100 APR_ADDTO(LDFLAGS, `$apu_config --ldflags`)
101 APR_ADDTO(INCLUDES, `$apu_config --includes`)
102 APU_BINDIR=`$apu_config --bindir`
103 APU_INCLUDEDIR=`$apu_config --includedir`
105 echo $ac_n "${nl}Configuring PCRE regular expression library ...${nl}"
107 APR_SUBDIR_CONFIG(srclib/pcre, [--prefix=$prefix --exec-prefix=$exec_prefix --libdir=$libdir --includedir=$includedir --bindir=$bindir])
109 echo $ac_n "${nl}Configuring Apache httpd ...${nl}"
111 dnl Absolute source/build directory
112 abs_srcdir=`(cd $srcdir && pwd)`
115 dnl If the source dir is not equal to the build dir,
116 dnl then we are running in VPATH mode.
118 if test "$abs_builddir" != "$abs_srcdir"; then
120 APR_ADDTO(INCLUDES, [-I. -I\$(srcdir) -I\$(top_builddir)/os/\$(OS_DIR) -I\$(top_srcdir)/os/\$(OS_DIR) -I\$(top_builddir)/server/mpm/\$(MPM_SUBDIR_NAME) -I\$(top_srcdir)/server/mpm/\$(MPM_SUBDIR_NAME) -I\$(top_builddir)/modules/http -I\$(top_srcdir)/modules/http -I\$(top_builddir)/modules/proxy -I\$(top_srcdir)/modules/proxy -I\$(top_builddir)/modules/filters -I\$(top_srcdir)/modules/filters -I\$(top_builddir)/include -I\$(top_srcdir)/include])
122 APR_ADDTO(INCLUDES, [-I. -I\$(top_srcdir)/os/\$(OS_DIR) -I\$(top_srcdir)/server/mpm/\$(MPM_SUBDIR_NAME) -I\$(top_srcdir)/modules/http -I\$(top_srcdir)/modules/filters -I\$(top_srcdir)/modules/proxy -I\$(top_srcdir)/include])
125 echo $ac_n "${nl}Applying OS-specific hints for httpd ...${nl}"
129 # Use a custom made libtool replacement
130 echo "using aplibtool"
131 LIBTOOL="$abs_srcdir/srclib/apr/build/aplibtool"
132 SH_LIBTOOL="$LIBTOOL --shared --export-all"
133 SH_LIBS="\$(ALL_LIBS)"
134 CORE_IMPLIB_FILE="ApacheCoreOS2.la"
135 CORE_IMPLIB="$abs_srcdir/server/$CORE_IMPLIB_FILE"
137 other_targets="$other_targets os2core"
138 INSTALL_PROG_FLAGS="-e .exe"
143 if test "x$LTFLAGS" = "x"; then
146 my_libtool=`$apr_config --apr-libtool`
147 LIBTOOL="$my_libtool \$(LTFLAGS)"
148 libtoolversion=`$my_libtool --version`
149 case $libtoolversion in
151 SH_LIBTOOL='$(LIBTOOL)'
152 SHLTCFLAGS="-prefer-pic"
153 LTCFLAGS="-prefer-non-pic -static"
156 SH_LIBTOOL='$(SHELL) $(top_builddir)/shlibtool $(LTFLAGS)'
163 APACHE_SUBST(SHLTCFLAGS)
164 APACHE_SUBST(LTCFLAGS)
170 APR_SETVAR(APACHE_MPM, [prefork])
171 APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1])
174 APR_SETVAR(APACHE_MPM, [beos])
175 APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1])
178 APR_SETVAR(APACHE_MPM, [mpmt_os2])
179 APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1])
184 AP_SIG_GRACEFUL=WINCH
187 APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1])
193 *486-*-bsdi* | *-netbsd* | *-freebsd* | *-apple-darwin* | *-dec-osf* | *-qnx)
194 APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1])
197 dnl This is a hack -- we should be using AC_TRY_RUN instead
198 ap_platform_runtime_link_flag="-R"
199 dnl solaris 8 and above don't have a thundering herd
200 dnl not sure about rev's before this one.
205 APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1])
210 APR_SETVAR(APACHE_MPM, [prefork])
211 APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1])
214 aixver=`echo $host | sed 's/^[[^0-9]]*//' | sed 's/\.//g'`
215 if test $aixver -ge 4320; then
216 APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1])
220 APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1])
225 dnl Process command line arguments. This is done early in the process so the
226 dnl user can get feedback quickly in case of an error.
228 dnl ### need to move some of the arguments "up here"
230 dnl ## Check for programs
238 AC_CHECK_TOOL(RANLIB, ranlib, true)
239 dnl AC_PATH_PROG(PERL_PATH, perl)
240 AC_CHECK_PROGS(LYNX_PATH,[lynx links elinks], [lynx])
242 dnl various OS checks that apparently set required flags
247 dnl Check for what we can generate dependency files with
250 dnl ## Check for libraries
252 dnl ## Check for header files
254 dnl I think these are just used all over the place, so just check for
255 dnl them at the base of the tree. If some are specific to a single
256 dnl directory, they should be moved (Comment #Spoon)
258 dnl Regarding standard header files: AC_HEADER_STDC doesn't set symbols
259 dnl HAVE_STRING_H, HAVE_STDLIB_H, etc., so those are checked for
260 dnl explicitly so that the normal HAVE_xxx_H symbol is defined.
277 dnl ## Check for typedefs, structures, and compiler characteristics.
280 if test "$ac_cv_prog_gcc" = "yes"; then
281 APR_ADDTO(NOTEST_CPPFLAGS,-DAP_HAVE_DESIGNATED_INITIALIZER)
284 dnl ## Check for library functions
286 dnl See Comment #Spoon
297 dnl ## Check for the tm_gmtoff field in struct tm to get the timezone diffs
298 AC_CACHE_CHECK([for tm_gmtoff in struct tm], ac_cv_struct_tm_gmtoff,
299 [AC_TRY_COMPILE([#include <sys/types.h>
300 #include <time.h>], [struct tm tm; tm.tm_gmtoff;],
301 ac_cv_struct_tm_gmtoff=yes, ac_cv_struct_tm_gmtoff=no)])
302 if test "$ac_cv_struct_tm_gmtoff" = "yes"; then
303 AC_DEFINE(HAVE_GMTOFF)
306 dnl ## Set up any appropriate OS-specific environment variables for apachectl
310 # for 32-bit builds, increase MAXDATA to allow lots of threads
311 if test x$OBJECT_MODE != x64; then
312 OS_SPECIFIC_VARS="LDR_CNTRL=\"MAXDATA=0x80000000\" ; export LDR_CNTRL ;"
314 OS_SPECIFIC_VARS="$OS_SPECIFIC_VARS AIXTHREAD_SCOPE=S ; export AIXTHREAD_SCOPE"
315 OS_SPECIFIC_VARS="$OS_SPECIFIC_VARS ; AIXTHREAD_MUTEX_DEBUG=OFF ; export AIXTHREAD_MUTEX_DEBUG"
316 OS_SPECIFIC_VARS="$OS_SPECIFIC_VARS ; AIXTHREAD_RWLOCK_DEBUG=OFF ; export AIXTHREAD_RWLOCK_DEBUG"
317 OS_SPECIFIC_VARS="$OS_SPECIFIC_VARS ; AIXTHREAD_COND_DEBUG=OFF ; export AIXTHREAD_COND_DEBUG"
318 OS_SPECIFIC_VARS="$OS_SPECIFIC_VARS ; SPINLOOPTIME=1000 ; export SPINLOOPTIME"
319 OS_SPECIFIC_VARS="$OS_SPECIFIC_VARS ; YIELDLOOPTIME=8 ; export YIELDLOOPTIME"
320 OS_SPECIFIC_VARS="$OS_SPECIFIC_VARS ; MALLOCMULTIHEAP=considersize,heaps:8 ; export MALLOCMULTIHEAP"
323 OS_SPECIFIC_VARS="export _CEE_RUNOPTS=\"STACK(,,ANY)\" ; export _EDC_ADD_ERRNO2=1"
329 AC_ARG_WITH(port,APACHE_HELP_STRING(--with-port=PORT,Port on which to listen (default is 80)),
330 [if test "$withval" = "yes"; then AC_MSG_ERROR('option --with-port requires a value (the TCP port number)'); else PORT="$withval"; fi],
333 APR_CHECK_APR_DEFINE(APR_HAVE_IPV6)
335 AC_ARG_ENABLE(v4-mapped,APACHE_HELP_STRING(--enable-v4-mapped,Allow IPv6 sockets to handle IPv4 connections),
341 *freebsd5*|*netbsd*|*openbsd*)
350 if test $v4mapped = "yes" -o $ac_cv_define_APR_HAVE_IPV6 = "no"; then
351 nonssl_listen_stmt_1=""
352 nonssl_listen_stmt_2="Listen @@Port@@"
353 if test $ac_cv_define_APR_HAVE_IPV6 = "yes"; then
354 AC_DEFINE(AP_ENABLE_V4_MAPPED, 1,
355 [Allow IPv4 connections on IPv6 listening sockets])
358 nonssl_listen_stmt_1="Listen 0.0.0.0:@@Port@@"
359 nonssl_listen_stmt_2="Listen [[::]]:@@Port@@"
362 AC_ARG_ENABLE(maintainer-mode,APACHE_HELP_STRING(--enable-maintainer-mode,Turn on debugging and compile time warnings),
364 APR_ADDTO(CPPFLAGS, -DAP_DEBUG)
367 prefix="$orig_prefix"
368 APACHE_ENABLE_MODULES
370 dnl reading config stubs
371 esyscmd(./build/config-stubs .)
373 APACHE_SUBST(progname)
374 APACHE_SUBST(MPM_LIB)
377 APACHE_SUBST(BUILTIN_LIBS)
378 APACHE_SUBST(SHLIBPATH_VAR)
379 APACHE_SUBST(OS_SPECIFIC_VARS)
381 PRE_SHARED_CMDS='echo ""'
382 POST_SHARED_CMDS='echo ""'
384 dnl apache_need_shared tells us if Apache modules are being built as DSOs
386 if test "$apache_need_shared" = "yes"; then
387 if test -f $ac_aux_dir/ltconfig; then
388 $SHELL $ac_aux_dir/ltconfig --output=shlibtool --disable-static --srcdir=$ac_aux_dir --cache-file=./config.cache $ac_aux_dir/ltmain.sh
390 shared_build="shared-build"
393 dnl enable_so tells us if *any* modules can be built as DSOs
395 if test "$enable_so" = "yes"; then
398 HTTPD_LDFLAGS="$HTTPD_LDFLAGS -Wl,-uXML_Parse -Wl,-bE:$abs_builddir/server/httpd.exp"
399 SH_LDFLAGS="$SH_LDFLAGS \$(EXTRA_LDFLAGS) \$(EXTRA_LIBS)"
400 UTIL_LDFLAGS="$UTIL_LDFLAGS -Wl,-uXML_Parse"
403 SH_LDFLAGS='$(top_builddir)/_APP_'
404 PRE_SHARED_CMDS='ln -s $(top_builddir)/httpd $(top_builddir)/_APP_'
405 POST_SHARED_CMDS='rm $(top_builddir)/_APP_'
408 HTTPD_LDFLAGS="$HTTPD_LDFLAGS --main=$abs_srcdir/server/main.o --core-dll=$abs_srcdir/apachecore.dll"
409 SH_LDFLAGS="$SH_LDFLAGS --core-dll=$abs_srcdir/apachecore.dll"
413 APACHE_SUBST(PRE_SHARED_CMDS)
414 APACHE_SUBST(POST_SHARED_CMDS)
415 APACHE_SUBST(shared_build)
417 AC_ARG_WITH(program-name,
418 APACHE_HELP_STRING(--with-program-name,alternate executable name),[
419 progname="$withval" ], [
423 AC_ARG_WITH(suexec-bin,
424 APACHE_HELP_STRING(--with-suexec-bin,Path to suexec binary),[
425 AC_DEFINE_UNQUOTED(SUEXEC_BIN, "$withval", [Path to suexec binary] )
428 AC_ARG_WITH(suexec-caller,
429 APACHE_HELP_STRING(--with-suexec-caller,User allowed to call SuExec),[
430 AC_DEFINE_UNQUOTED(AP_HTTPD_USER, "$withval", [User allowed to call SuExec] ) ] )
432 AC_ARG_WITH(suexec-userdir,
433 APACHE_HELP_STRING(--with-suexec-userdir,User subdirectory),[
434 AC_DEFINE_UNQUOTED(AP_USERDIR_SUFFIX, "$withval", [User subdirectory] ) ] )
436 AC_ARG_WITH(suexec-docroot,
437 APACHE_HELP_STRING(--with-suexec-docroot,SuExec root directory),[
438 AC_DEFINE_UNQUOTED(AP_DOC_ROOT, "$withval", [SuExec root directory] ) ] )
440 AC_ARG_WITH(suexec-uidmin,
441 APACHE_HELP_STRING(--with-suexec-uidmin,Minimal allowed UID),[
442 AC_DEFINE_UNQUOTED(AP_UID_MIN, $withval, [Minimum allowed UID] ) ] )
444 AC_ARG_WITH(suexec-gidmin,
445 APACHE_HELP_STRING(--with-suexec-gidmin,Minimal allowed GID),[
446 AC_DEFINE_UNQUOTED(AP_GID_MIN, $withval, [Minimum allowed GID] ) ] )
448 AC_ARG_WITH(suexec-logfile,
449 APACHE_HELP_STRING(--with-suexec-logfile,Set the logfile),[
450 AC_DEFINE_UNQUOTED(AP_LOG_EXEC, "$withval", [SuExec log file] ) ] )
452 AC_ARG_WITH(suexec-safepath,
453 APACHE_HELP_STRING(--with-suexec-safepath,Set the safepath),[
454 AC_DEFINE_UNQUOTED(AP_SAFE_PATH, "$withval", [safe shell path for SuExec] ) ] )
456 AC_ARG_WITH(suexec-umask,
457 APACHE_HELP_STRING(--with-suexec-umask,umask for suexec'd process),[
458 AC_DEFINE_UNQUOTED(AP_SUEXEC_UMASK, 0$withval, [umask for suexec'd process] ) ] )
460 dnl AP_LIBS specifies the actual libraries. note we have some required libs.
461 AP_LIBS="$abs_builddir/srclib/pcre/libpcre.la $AP_LIBS"
463 dnl APR should go after the other libs, so the right symbols can be picked up
464 AP_LIBS="$AP_LIBS `$apu_config --link-libtool --libs` `$apr_config --link-libtool --libs`"
465 APACHE_SUBST(AP_LIBS)
466 APACHE_SUBST(AP_BUILD_SRCLIB_DIRS)
467 APACHE_SUBST(AP_CLEAN_SRCLIB_DIRS)
469 AC_DEFINE(AP_USING_AUTOCONF, 1,
470 [Using autoconf to configure Apache])
472 if test "$SINGLE_LISTEN_UNSERIALIZED_ACCEPT" = "1"; then
473 AC_DEFINE(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, 1,
474 [This platform doesn't suffer from the thundering herd problem])
477 AC_DEFINE_UNQUOTED(AP_SIG_GRACEFUL, SIG$AP_SIG_GRACEFUL, [Signal used to gracefully restart])
478 AC_DEFINE_UNQUOTED(AP_SIG_GRACEFUL_STRING, "SIG$AP_SIG_GRACEFUL", [Signal used to gracefully restart (as a quoted string)])
479 AC_DEFINE_UNQUOTED(AP_SIG_GRACEFUL_SHORT, $AP_SIG_GRACEFUL, [Signal used to gracefully restart (without SIG prefix)])
480 AP_SIG_GRACEFUL_SHORT=$AP_SIG_GRACEFUL
481 AP_SIG_GRACEFUL=SIG$AP_SIG_GRACEFUL_SHORT
482 AC_SUBST(AP_SIG_GRACEFUL)
483 AC_SUBST(AP_SIG_GRACEFUL_STRING)
484 AC_SUBST(AP_SIG_GRACEFUL_SHORT)
486 dnl check for endianness
487 if test "$cross_compiling" = "no"; then
490 AC_DEFINE(AP_UNKNOWN_BYTE_ORDER,1,
491 [byte order is unknown due to cross-compilation])
494 APACHE_FAST_OUTPUT(Makefile modules/Makefile srclib/Makefile)
495 APACHE_FAST_OUTPUT(os/Makefile server/Makefile)
496 APACHE_FAST_OUTPUT(support/Makefile srclib/pcre/Makefile)
498 if test -d ./test; then
499 APACHE_FAST_OUTPUT(test/Makefile)
502 dnl ## Finalize the variables
503 echo $ac_n "${nl}Restore user-defined environment settings...${nl}"
505 APR_RESTORE_THE_ENVIRONMENT(CPPFLAGS, EXTRA_)
506 APR_RESTORE_THE_ENVIRONMENT(CFLAGS, EXTRA_)
507 APR_RESTORE_THE_ENVIRONMENT(CXXFLAGS, EXTRA_)
508 APR_RESTORE_THE_ENVIRONMENT(LDFLAGS, EXTRA_)
509 APR_RESTORE_THE_ENVIRONMENT(LIBS, EXTRA_)
510 APR_RESTORE_THE_ENVIRONMENT(INCLUDES, EXTRA_)
512 echo $ac_n "${nl}Construct makefiles and header files...${nl}"
514 APACHE_GEN_CONFIG_VARS
516 dnl ## Build modules.c
518 echo $MODLIST | $AWK -f $srcdir/build/build-modules-c.awk > modules.c
520 APR_EXPAND_VAR(ap_prefix, $prefix)
521 AC_DEFINE_UNQUOTED(HTTPD_ROOT, "${ap_prefix}",
522 [Root directory of the Apache install area])
523 AC_DEFINE_UNQUOTED(SERVER_CONFIG_FILE, "${rel_sysconfdir}/${progname}.conf",
524 [Location of the config file, relative to the Apache root directory])
525 AC_DEFINE_UNQUOTED(AP_TYPES_CONFIG_FILE, "${rel_sysconfdir}/mime.types",
526 [Location of the MIME types config file, relative to the Apache root directory])
527 AC_DEFINE_UNQUOTED(APACHE_MPM_DIR, "$MPM_DIR",
528 [Location of the source for the current MPM])
530 perlbin=`$ac_aux_dir/PrintPath perl`
531 if test "x$perlbin" = "x"; then
532 perlbin="/replace/with/path/to/perl/interpreter"
536 dnl If we are running on BSD/OS, we need to use the BSD .include syntax.
539 ap_make_include=include
540 ap_make_delimiter=' '
543 # Check whether they've installed GNU make
544 if make --version > /dev/null 2>&1; then
548 ap_make_include=.include
549 ap_make_delimiter='"'
553 AC_SUBST(ap_make_include)
554 AC_SUBST(ap_make_delimiter)
556 dnl Ensure that docs/conf is created.
557 test -d docs/conf||$mkdir_p docs/conf
559 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],[