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,
72 [$apache_apr_flags --prefix=$prefix --exec-prefix=$exec_prefix --libdir=$libdir --includedir=$includedir --bindir=$bindir --datadir=$datadir --with-installbuilddir=$installbuilddir],
73 [--enable-layout=*|\'--enable-layout=*])
74 dnl We must be the first to build and the last to be cleaned
75 AP_BUILD_SRCLIB_DIRS="apr $AP_BUILD_SRCLIB_DIRS"
76 AP_CLEAN_SRCLIB_DIRS="$AP_CLEAN_SRCLIB_DIRS apr"
79 APR_SETIFNULL(CC, `$apr_config --cc`)
80 APR_SETIFNULL(CPP, `$apr_config --cpp`)
81 APR_ADDTO(CFLAGS, `$apr_config --cflags`)
82 APR_ADDTO(CPPFLAGS, `$apr_config --cppflags`)
83 APR_ADDTO(LDFLAGS, `$apr_config --ldflags`)
84 APR_ADDTO(INCLUDES, `$apr_config --includes`)
85 SHLIBPATH_VAR=`$apr_config --shlib-path-var`
86 APR_BINDIR=`$apr_config --bindir`
87 APR_INCLUDEDIR=`$apr_config --includedir`
89 echo $ac_n "${nl}Configuring Apache Portable Runtime Utility library...${nl}"
91 APR_FIND_APU("$srcdir/srclib/apr-util", "./srclib/apr-util", 1)
93 if test "$apu_found" = "no"; then
94 AC_MSG_ERROR([APR-util not found. Please read the documentation.])
97 if test "$apu_found" = "reconfig"; then
98 APR_SUBDIR_CONFIG(srclib/apr-util,
99 [--with-apr=../apr --prefix=$prefix --exec-prefix=$exec_prefix --libdir=$libdir --includedir=$includedir --bindir=$bindir],
100 [--enable-layout=*|\'--enable-layout=*])
101 dnl We must be the last to build and the first to be cleaned
102 AP_BUILD_SRCLIB_DIRS="$AP_BUILD_SRCLIB_DIRS apr-util"
103 AP_CLEAN_SRCLIB_DIRS="apr-util $AP_CLEAN_SRCLIB_DIRS"
106 APR_ADDTO(LDFLAGS, `$apu_config --ldflags`)
107 APR_ADDTO(INCLUDES, `$apu_config --includes`)
108 APU_BINDIR=`$apu_config --bindir`
109 APU_INCLUDEDIR=`$apu_config --includedir`
111 dnl In case we picked up CC and CPP from APR, get that info into the
112 dnl config cache so that PCRE uses it. Otherwise, CC and CPP used for
113 dnl PCRE and for our config tests will be whatever PCRE determines.
117 echo $ac_n "${nl}Configuring PCRE regular expression library ...${nl}"
119 APR_SUBDIR_CONFIG(srclib/pcre,
120 [--prefix=$prefix --exec-prefix=$exec_prefix --libdir=$libdir --includedir=$includedir --bindir=$bindir])
122 echo $ac_n "${nl}Configuring Apache httpd ...${nl}"
124 dnl Absolute source/build directory
125 abs_srcdir=`(cd $srcdir && pwd)`
128 dnl If the source dir is not equal to the build dir,
129 dnl then we are running in VPATH mode.
131 APR_ADDTO(INCLUDES, [-I.])
133 if test "$abs_builddir" != "$abs_srcdir"; then
134 APR_ADDTO(INCLUDES, [-I\$(top_builddir)/include])
137 APR_ADDTO(INCLUDES, [-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 -I\$(top_srcdir)/modules/generators])
139 echo $ac_n "${nl}Applying OS-specific hints for httpd ...${nl}"
143 # Use a custom made libtool replacement
144 echo "using aplibtool"
145 LIBTOOL="$abs_srcdir/srclib/apr/build/aplibtool"
146 SH_LIBTOOL="$LIBTOOL --shared --export-all"
147 SH_LIBS="\$(ALL_LIBS)"
148 CORE_IMPLIB_FILE="ApacheCoreOS2.la"
149 CORE_IMPLIB="$abs_srcdir/server/$CORE_IMPLIB_FILE"
151 other_targets="$other_targets os2core"
152 INSTALL_PROG_FLAGS="-e .exe"
157 if test "x$LTFLAGS" = "x"; then
160 my_libtool=`$apr_config --apr-libtool`
161 LIBTOOL="$my_libtool \$(LTFLAGS)"
162 libtoolversion=`$my_libtool --version`
163 case $libtoolversion in
165 SH_LIBTOOL='$(LIBTOOL)'
166 SHLTCFLAGS="-prefer-pic"
167 LTCFLAGS="-prefer-non-pic -static"
170 SH_LIBTOOL='$(SHELL) $(top_builddir)/shlibtool $(LTFLAGS)'
177 APACHE_SUBST(SHLTCFLAGS)
178 APACHE_SUBST(LTCFLAGS)
184 APR_SETVAR(APACHE_MPM, [prefork])
185 APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1])
188 APR_SETVAR(APACHE_MPM, [beos])
189 APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1])
192 APR_SETVAR(APACHE_MPM, [mpmt_os2])
193 APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1])
198 AP_SIG_GRACEFUL=WINCH
201 APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1])
207 *486-*-bsdi* | *-netbsd* | *-freebsd* | *-apple-darwin* | *-dec-osf* | *-qnx)
208 APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1])
211 dnl This is a hack -- we should be using AC_TRY_RUN instead
212 ap_platform_runtime_link_flag="-R"
213 dnl solaris 8 and above don't have a thundering herd
214 dnl not sure about rev's before this one.
219 APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1])
224 APR_SETVAR(APACHE_MPM, [prefork])
225 APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1])
228 aixver=`echo $host | sed 's/^[[^0-9]]*//' | sed 's/\.//g'`
229 if test $aixver -ge 4320; then
230 APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1])
234 APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1])
239 dnl Process command line arguments. This is done early in the process so the
240 dnl user can get feedback quickly in case of an error.
242 dnl ### need to move some of the arguments "up here"
244 dnl ## Check for programs
250 AC_CHECK_TOOL(RANLIB, ranlib, true)
251 dnl AC_PATH_PROG(PERL_PATH, perl)
252 AC_CHECK_PROGS(LYNX_PATH,[lynx links elinks], [lynx])
254 dnl various OS checks that apparently set required flags
259 dnl Check for what we can generate dependency files with
262 dnl ## Check for libraries
264 dnl ## Check for header files
266 dnl I think these are just used all over the place, so just check for
267 dnl them at the base of the tree. If some are specific to a single
268 dnl directory, they should be moved (Comment #Spoon)
270 dnl Regarding standard header files: AC_HEADER_STDC doesn't set symbols
271 dnl HAVE_STRING_H, HAVE_STDLIB_H, etc., so those are checked for
272 dnl explicitly so that the normal HAVE_xxx_H symbol is defined.
289 dnl ## Check for typedefs, structures, and compiler characteristics.
292 if test "$ac_cv_prog_gcc" = "yes"; then
293 APR_ADDTO(NOTEST_CPPFLAGS,-DAP_HAVE_DESIGNATED_INITIALIZER)
296 dnl ## Check for library functions
297 AC_SEARCH_LIBS(sqrt, m)
299 dnl See Comment #Spoon
310 dnl ## Check for the tm_gmtoff field in struct tm to get the timezone diffs
311 AC_CACHE_CHECK([for tm_gmtoff in struct tm], ac_cv_struct_tm_gmtoff,
312 [AC_TRY_COMPILE([#include <sys/types.h>
313 #include <time.h>], [struct tm tm; tm.tm_gmtoff;],
314 ac_cv_struct_tm_gmtoff=yes, ac_cv_struct_tm_gmtoff=no)])
315 if test "$ac_cv_struct_tm_gmtoff" = "yes"; then
316 AC_DEFINE(HAVE_GMTOFF, 1, [Define if struct tm has a tm_gmtoff field])
319 dnl ## Set up any appropriate OS-specific environment variables for apachectl
323 # for 32-bit builds, increase MAXDATA to allow lots of threads
324 if test x$OBJECT_MODE != x64; then
325 OS_SPECIFIC_VARS="LDR_CNTRL=\"MAXDATA=0x80000000\" ; export LDR_CNTRL ;"
327 OS_SPECIFIC_VARS="$OS_SPECIFIC_VARS AIXTHREAD_SCOPE=S ; export AIXTHREAD_SCOPE"
328 OS_SPECIFIC_VARS="$OS_SPECIFIC_VARS ; AIXTHREAD_MUTEX_DEBUG=OFF ; export AIXTHREAD_MUTEX_DEBUG"
329 OS_SPECIFIC_VARS="$OS_SPECIFIC_VARS ; AIXTHREAD_RWLOCK_DEBUG=OFF ; export AIXTHREAD_RWLOCK_DEBUG"
330 OS_SPECIFIC_VARS="$OS_SPECIFIC_VARS ; AIXTHREAD_COND_DEBUG=OFF ; export AIXTHREAD_COND_DEBUG"
331 OS_SPECIFIC_VARS="$OS_SPECIFIC_VARS ; SPINLOOPTIME=1000 ; export SPINLOOPTIME"
332 OS_SPECIFIC_VARS="$OS_SPECIFIC_VARS ; YIELDLOOPTIME=8 ; export YIELDLOOPTIME"
333 OS_SPECIFIC_VARS="$OS_SPECIFIC_VARS ; MALLOCMULTIHEAP=considersize,heaps:8 ; export MALLOCMULTIHEAP"
336 OS_SPECIFIC_VARS="export _CEE_RUNOPTS=\"STACK(,,ANY)\" ; export _EDC_ADD_ERRNO2=1"
342 AC_ARG_WITH(port,APACHE_HELP_STRING(--with-port=PORT,Port on which to listen (default is 80)),
343 [if test "$withval" = "yes"; then AC_MSG_ERROR('option --with-port requires a value (the TCP port number)'); else PORT="$withval"; fi],
346 APR_CHECK_APR_DEFINE(APR_HAVE_IPV6)
348 AC_ARG_ENABLE(v4-mapped,APACHE_HELP_STRING(--enable-v4-mapped,Allow IPv6 sockets to handle IPv4 connections),
354 *freebsd5*|*netbsd*|*openbsd*)
363 if test $v4mapped = "yes" -a $ac_cv_define_APR_HAVE_IPV6 = "yes"; then
364 AC_DEFINE(AP_ENABLE_V4_MAPPED, 1,
365 [Allow IPv4 connections on IPv6 listening sockets])
368 AC_ARG_ENABLE(exception-hook,APACHE_HELP_STRING(--enable-exception-hook,Enable fatal exception hook),
370 AC_DEFINE(AP_ENABLE_EXCEPTION_HOOK, 1,
371 [Allow modules to run hook after a fatal exception])
374 AC_ARG_ENABLE(maintainer-mode,APACHE_HELP_STRING(--enable-maintainer-mode,Turn on debugging and compile time warnings),
376 APR_ADDTO(CPPFLAGS, -DAP_DEBUG)
379 prefix="$orig_prefix"
380 APACHE_ENABLE_MODULES
382 dnl reading config stubs
383 esyscmd(./build/config-stubs .)
385 APACHE_SUBST(progname)
386 APACHE_SUBST(MPM_LIB)
389 APACHE_SUBST(BUILTIN_LIBS)
390 APACHE_SUBST(SHLIBPATH_VAR)
391 APACHE_SUBST(OS_SPECIFIC_VARS)
393 PRE_SHARED_CMDS='echo ""'
394 POST_SHARED_CMDS='echo ""'
396 dnl apache_need_shared tells us if Apache modules are being built as DSOs
398 if test "$apache_need_shared" = "yes"; then
399 if test -f $ac_aux_dir/ltconfig; then
400 $SHELL $ac_aux_dir/ltconfig --output=shlibtool --disable-static --srcdir=$ac_aux_dir --cache-file=./config.cache $ac_aux_dir/ltmain.sh
402 shared_build="shared-build"
405 dnl enable_so tells us if *any* modules can be built as DSOs
407 if test "$enable_so" = "yes"; then
410 HTTPD_LDFLAGS="$HTTPD_LDFLAGS -Wl,-uXML_Parse -Wl,-bE:$abs_builddir/server/httpd.exp"
411 SH_LDFLAGS="$SH_LDFLAGS \$(EXTRA_LDFLAGS) \$(EXTRA_LIBS)"
412 UTIL_LDFLAGS="$UTIL_LDFLAGS -Wl,-uXML_Parse"
415 SH_LDFLAGS='$(top_builddir)/_APP_'
416 PRE_SHARED_CMDS='ln -s $(top_builddir)/httpd $(top_builddir)/_APP_'
417 POST_SHARED_CMDS='rm $(top_builddir)/_APP_'
420 HTTPD_LDFLAGS="$HTTPD_LDFLAGS --main=$abs_srcdir/server/main.o --core-dll=$abs_srcdir/apachecore.dll"
421 SH_LDFLAGS="$SH_LDFLAGS --core-dll=$abs_srcdir/apachecore.dll"
425 APACHE_SUBST(PRE_SHARED_CMDS)
426 APACHE_SUBST(POST_SHARED_CMDS)
427 APACHE_SUBST(shared_build)
429 AC_ARG_WITH(program-name,
430 APACHE_HELP_STRING(--with-program-name,alternate executable name),[
431 progname="$withval" ], [
435 AC_ARG_WITH(suexec-bin,
436 APACHE_HELP_STRING(--with-suexec-bin,Path to suexec binary),[
437 AC_DEFINE_UNQUOTED(SUEXEC_BIN, "$withval", [Path to suexec binary] )
440 AC_ARG_WITH(suexec-caller,
441 APACHE_HELP_STRING(--with-suexec-caller,User allowed to call SuExec),[
442 AC_DEFINE_UNQUOTED(AP_HTTPD_USER, "$withval", [User allowed to call SuExec] ) ] )
444 AC_ARG_WITH(suexec-userdir,
445 APACHE_HELP_STRING(--with-suexec-userdir,User subdirectory),[
446 AC_DEFINE_UNQUOTED(AP_USERDIR_SUFFIX, "$withval", [User subdirectory] ) ] )
448 AC_ARG_WITH(suexec-docroot,
449 APACHE_HELP_STRING(--with-suexec-docroot,SuExec root directory),[
450 AC_DEFINE_UNQUOTED(AP_DOC_ROOT, "$withval", [SuExec root directory] ) ] )
452 AC_ARG_WITH(suexec-uidmin,
453 APACHE_HELP_STRING(--with-suexec-uidmin,Minimal allowed UID),[
454 AC_DEFINE_UNQUOTED(AP_UID_MIN, $withval, [Minimum allowed UID] ) ] )
456 AC_ARG_WITH(suexec-gidmin,
457 APACHE_HELP_STRING(--with-suexec-gidmin,Minimal allowed GID),[
458 AC_DEFINE_UNQUOTED(AP_GID_MIN, $withval, [Minimum allowed GID] ) ] )
460 AC_ARG_WITH(suexec-logfile,
461 APACHE_HELP_STRING(--with-suexec-logfile,Set the logfile),[
462 AC_DEFINE_UNQUOTED(AP_LOG_EXEC, "$withval", [SuExec log file] ) ] )
464 AC_ARG_WITH(suexec-safepath,
465 APACHE_HELP_STRING(--with-suexec-safepath,Set the safepath),[
466 AC_DEFINE_UNQUOTED(AP_SAFE_PATH, "$withval", [safe shell path for SuExec] ) ] )
468 AC_ARG_WITH(suexec-umask,
469 APACHE_HELP_STRING(--with-suexec-umask,umask for suexec'd process),[
470 AC_DEFINE_UNQUOTED(AP_SUEXEC_UMASK, 0$withval, [umask for suexec'd process] ) ] )
472 dnl AP_LIBS specifies the actual libraries. note we have some required libs.
473 AP_LIBS="$abs_builddir/srclib/pcre/libpcre.la $AP_LIBS"
475 dnl APR should go after the other libs, so the right symbols can be picked up
476 AP_LIBS="$AP_LIBS `$apu_config --link-libtool --libs` `$apr_config --link-libtool --libs`"
477 APACHE_SUBST(AP_LIBS)
478 APACHE_SUBST(AP_BUILD_SRCLIB_DIRS)
479 APACHE_SUBST(AP_CLEAN_SRCLIB_DIRS)
481 AC_DEFINE(AP_USING_AUTOCONF, 1,
482 [Using autoconf to configure Apache])
484 if test "$SINGLE_LISTEN_UNSERIALIZED_ACCEPT" = "1"; then
485 AC_DEFINE(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, 1,
486 [This platform doesn't suffer from the thundering herd problem])
489 AC_DEFINE_UNQUOTED(AP_SIG_GRACEFUL, SIG$AP_SIG_GRACEFUL, [Signal used to gracefully restart])
490 AC_DEFINE_UNQUOTED(AP_SIG_GRACEFUL_STRING, "SIG$AP_SIG_GRACEFUL", [Signal used to gracefully restart (as a quoted string)])
491 AC_DEFINE_UNQUOTED(AP_SIG_GRACEFUL_SHORT, $AP_SIG_GRACEFUL, [Signal used to gracefully restart (without SIG prefix)])
492 AP_SIG_GRACEFUL_SHORT=$AP_SIG_GRACEFUL
493 AP_SIG_GRACEFUL=SIG$AP_SIG_GRACEFUL_SHORT
494 AC_SUBST(AP_SIG_GRACEFUL)
495 AC_SUBST(AP_SIG_GRACEFUL_STRING)
496 AC_SUBST(AP_SIG_GRACEFUL_SHORT)
498 APACHE_FAST_OUTPUT(Makefile modules/Makefile srclib/Makefile)
499 APACHE_FAST_OUTPUT(os/Makefile server/Makefile)
500 APACHE_FAST_OUTPUT(support/Makefile srclib/pcre/Makefile)
502 if test -d ./test; then
503 APACHE_FAST_OUTPUT(test/Makefile)
506 dnl ## Finalize the variables
507 echo $ac_n "${nl}Restore user-defined environment settings...${nl}"
509 APR_RESTORE_THE_ENVIRONMENT(CPPFLAGS, EXTRA_)
510 APR_RESTORE_THE_ENVIRONMENT(CFLAGS, EXTRA_)
511 APR_RESTORE_THE_ENVIRONMENT(CXXFLAGS, EXTRA_)
512 APR_RESTORE_THE_ENVIRONMENT(LDFLAGS, EXTRA_)
513 APR_RESTORE_THE_ENVIRONMENT(LIBS, EXTRA_)
514 APR_RESTORE_THE_ENVIRONMENT(INCLUDES, EXTRA_)
516 echo $ac_n "${nl}Construct makefiles and header files...${nl}"
518 APACHE_GEN_CONFIG_VARS
520 dnl ## Build modules.c
522 echo $MODLIST | $AWK -f $srcdir/build/build-modules-c.awk > modules.c
524 APR_EXPAND_VAR(ap_prefix, $prefix)
525 AC_DEFINE_UNQUOTED(HTTPD_ROOT, "${ap_prefix}",
526 [Root directory of the Apache install area])
527 AC_DEFINE_UNQUOTED(SERVER_CONFIG_FILE, "${rel_sysconfdir}/${progname}.conf",
528 [Location of the config file, relative to the Apache root directory])
529 AC_DEFINE_UNQUOTED(AP_TYPES_CONFIG_FILE, "${rel_sysconfdir}/mime.types",
530 [Location of the MIME types config file, relative to the Apache root directory])
531 AC_DEFINE_UNQUOTED(APACHE_MPM_DIR, "$MPM_DIR",
532 [Location of the source for the current MPM])
534 perlbin=`$ac_aux_dir/PrintPath perl`
535 if test "x$perlbin" = "x"; then
536 perlbin="/replace/with/path/to/perl/interpreter"
540 dnl If we are running on BSD/OS, we need to use the BSD .include syntax.
543 ap_make_include=include
544 ap_make_delimiter=' '
547 # Check whether they've installed GNU make
548 if make --version > /dev/null 2>&1; then
552 ap_make_include=.include
553 ap_make_delimiter='"'
557 AC_SUBST(ap_make_include)
558 AC_SUBST(ap_make_delimiter)
560 dnl Ensure that docs/conf is created.
561 test -d docs/conf||$mkdir_p docs/conf
563 AC_OUTPUT($APACHE_OUTPUT_FILES docs/conf/httpd-std.conf docs/conf/ssl-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],[