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 if test "$abs_builddir" != "$abs_srcdir"; then
133 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])
135 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])
138 echo $ac_n "${nl}Applying OS-specific hints for httpd ...${nl}"
142 # Use a custom made libtool replacement
143 echo "using aplibtool"
144 LIBTOOL="$abs_srcdir/srclib/apr/build/aplibtool"
145 SH_LIBTOOL="$LIBTOOL --shared --export-all"
146 SH_LIBS="\$(ALL_LIBS)"
147 CORE_IMPLIB_FILE="ApacheCoreOS2.la"
148 CORE_IMPLIB="$abs_srcdir/server/$CORE_IMPLIB_FILE"
150 other_targets="$other_targets os2core"
151 INSTALL_PROG_FLAGS="-e .exe"
156 if test "x$LTFLAGS" = "x"; then
159 my_libtool=`$apr_config --apr-libtool`
160 LIBTOOL="$my_libtool \$(LTFLAGS)"
161 libtoolversion=`$my_libtool --version`
162 case $libtoolversion in
164 SH_LIBTOOL='$(LIBTOOL)'
165 SHLTCFLAGS="-prefer-pic"
166 LTCFLAGS="-prefer-non-pic -static"
169 SH_LIBTOOL='$(SHELL) $(top_builddir)/shlibtool $(LTFLAGS)'
176 APACHE_SUBST(SHLTCFLAGS)
177 APACHE_SUBST(LTCFLAGS)
183 APR_SETVAR(APACHE_MPM, [prefork])
184 APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1])
187 APR_SETVAR(APACHE_MPM, [beos])
188 APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1])
191 APR_SETVAR(APACHE_MPM, [mpmt_os2])
192 APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1])
197 AP_SIG_GRACEFUL=WINCH
200 APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1])
206 *486-*-bsdi* | *-netbsd* | *-freebsd* | *-apple-darwin* | *-dec-osf* | *-qnx)
207 APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1])
210 dnl This is a hack -- we should be using AC_TRY_RUN instead
211 ap_platform_runtime_link_flag="-R"
212 dnl solaris 8 and above don't have a thundering herd
213 dnl not sure about rev's before this one.
218 APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1])
223 APR_SETVAR(APACHE_MPM, [prefork])
224 APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1])
227 aixver=`echo $host | sed 's/^[[^0-9]]*//' | sed 's/\.//g'`
228 if test $aixver -ge 4320; then
229 APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1])
233 APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1])
238 dnl Process command line arguments. This is done early in the process so the
239 dnl user can get feedback quickly in case of an error.
241 dnl ### need to move some of the arguments "up here"
243 dnl ## Check for programs
249 AC_CHECK_TOOL(RANLIB, ranlib, true)
250 dnl AC_PATH_PROG(PERL_PATH, perl)
251 AC_CHECK_PROGS(LYNX_PATH,[lynx links elinks], [lynx])
253 dnl various OS checks that apparently set required flags
258 dnl Check for what we can generate dependency files with
261 dnl ## Check for libraries
263 dnl ## Check for header files
265 dnl I think these are just used all over the place, so just check for
266 dnl them at the base of the tree. If some are specific to a single
267 dnl directory, they should be moved (Comment #Spoon)
269 dnl Regarding standard header files: AC_HEADER_STDC doesn't set symbols
270 dnl HAVE_STRING_H, HAVE_STDLIB_H, etc., so those are checked for
271 dnl explicitly so that the normal HAVE_xxx_H symbol is defined.
288 dnl ## Check for typedefs, structures, and compiler characteristics.
291 if test "$ac_cv_prog_gcc" = "yes"; then
292 APR_ADDTO(NOTEST_CPPFLAGS,-DAP_HAVE_DESIGNATED_INITIALIZER)
295 dnl ## Check for library functions
297 dnl See Comment #Spoon
308 dnl ## Check for the tm_gmtoff field in struct tm to get the timezone diffs
309 AC_CACHE_CHECK([for tm_gmtoff in struct tm], ac_cv_struct_tm_gmtoff,
310 [AC_TRY_COMPILE([#include <sys/types.h>
311 #include <time.h>], [struct tm tm; tm.tm_gmtoff;],
312 ac_cv_struct_tm_gmtoff=yes, ac_cv_struct_tm_gmtoff=no)])
313 if test "$ac_cv_struct_tm_gmtoff" = "yes"; then
314 AC_DEFINE(HAVE_GMTOFF)
317 dnl ## Set up any appropriate OS-specific environment variables for apachectl
321 # for 32-bit builds, increase MAXDATA to allow lots of threads
322 if test x$OBJECT_MODE != x64; then
323 OS_SPECIFIC_VARS="LDR_CNTRL=\"MAXDATA=0x80000000\" ; export LDR_CNTRL ;"
325 OS_SPECIFIC_VARS="$OS_SPECIFIC_VARS AIXTHREAD_SCOPE=S ; export AIXTHREAD_SCOPE"
326 OS_SPECIFIC_VARS="$OS_SPECIFIC_VARS ; AIXTHREAD_MUTEX_DEBUG=OFF ; export AIXTHREAD_MUTEX_DEBUG"
327 OS_SPECIFIC_VARS="$OS_SPECIFIC_VARS ; AIXTHREAD_RWLOCK_DEBUG=OFF ; export AIXTHREAD_RWLOCK_DEBUG"
328 OS_SPECIFIC_VARS="$OS_SPECIFIC_VARS ; AIXTHREAD_COND_DEBUG=OFF ; export AIXTHREAD_COND_DEBUG"
329 OS_SPECIFIC_VARS="$OS_SPECIFIC_VARS ; SPINLOOPTIME=1000 ; export SPINLOOPTIME"
330 OS_SPECIFIC_VARS="$OS_SPECIFIC_VARS ; YIELDLOOPTIME=8 ; export YIELDLOOPTIME"
331 OS_SPECIFIC_VARS="$OS_SPECIFIC_VARS ; MALLOCMULTIHEAP=considersize,heaps:8 ; export MALLOCMULTIHEAP"
334 OS_SPECIFIC_VARS="export _CEE_RUNOPTS=\"STACK(,,ANY)\" ; export _EDC_ADD_ERRNO2=1"
340 AC_ARG_WITH(port,APACHE_HELP_STRING(--with-port=PORT,Port on which to listen (default is 80)),
341 [if test "$withval" = "yes"; then AC_MSG_ERROR('option --with-port requires a value (the TCP port number)'); else PORT="$withval"; fi],
344 APR_CHECK_APR_DEFINE(APR_HAVE_IPV6)
346 AC_ARG_ENABLE(v4-mapped,APACHE_HELP_STRING(--enable-v4-mapped,Allow IPv6 sockets to handle IPv4 connections),
352 *freebsd5*|*netbsd*|*openbsd*)
361 if test $v4mapped = "yes" -o $ac_cv_define_APR_HAVE_IPV6 = "no"; then
362 nonssl_listen_stmt_1=""
363 nonssl_listen_stmt_2="Listen @@Port@@"
364 if test $ac_cv_define_APR_HAVE_IPV6 = "yes"; then
365 AC_DEFINE(AP_ENABLE_V4_MAPPED, 1,
366 [Allow IPv4 connections on IPv6 listening sockets])
369 nonssl_listen_stmt_1="Listen 0.0.0.0:@@Port@@"
370 nonssl_listen_stmt_2="Listen [[::]]:@@Port@@"
373 AC_ARG_ENABLE(maintainer-mode,APACHE_HELP_STRING(--enable-maintainer-mode,Turn on debugging and compile time warnings),
375 APR_ADDTO(CPPFLAGS, -DAP_DEBUG)
378 prefix="$orig_prefix"
379 APACHE_ENABLE_MODULES
381 dnl reading config stubs
382 esyscmd(./build/config-stubs .)
384 APACHE_SUBST(progname)
385 APACHE_SUBST(MPM_LIB)
388 APACHE_SUBST(BUILTIN_LIBS)
389 APACHE_SUBST(SHLIBPATH_VAR)
390 APACHE_SUBST(OS_SPECIFIC_VARS)
392 PRE_SHARED_CMDS='echo ""'
393 POST_SHARED_CMDS='echo ""'
395 dnl apache_need_shared tells us if Apache modules are being built as DSOs
397 if test "$apache_need_shared" = "yes"; then
398 if test -f $ac_aux_dir/ltconfig; then
399 $SHELL $ac_aux_dir/ltconfig --output=shlibtool --disable-static --srcdir=$ac_aux_dir --cache-file=./config.cache $ac_aux_dir/ltmain.sh
401 shared_build="shared-build"
404 dnl enable_so tells us if *any* modules can be built as DSOs
406 if test "$enable_so" = "yes"; then
409 HTTPD_LDFLAGS="$HTTPD_LDFLAGS -Wl,-uXML_Parse -Wl,-bE:$abs_builddir/server/httpd.exp"
410 SH_LDFLAGS="$SH_LDFLAGS \$(EXTRA_LDFLAGS) \$(EXTRA_LIBS)"
411 UTIL_LDFLAGS="$UTIL_LDFLAGS -Wl,-uXML_Parse"
414 SH_LDFLAGS='$(top_builddir)/_APP_'
415 PRE_SHARED_CMDS='ln -s $(top_builddir)/httpd $(top_builddir)/_APP_'
416 POST_SHARED_CMDS='rm $(top_builddir)/_APP_'
419 HTTPD_LDFLAGS="$HTTPD_LDFLAGS --main=$abs_srcdir/server/main.o --core-dll=$abs_srcdir/apachecore.dll"
420 SH_LDFLAGS="$SH_LDFLAGS --core-dll=$abs_srcdir/apachecore.dll"
424 APACHE_SUBST(PRE_SHARED_CMDS)
425 APACHE_SUBST(POST_SHARED_CMDS)
426 APACHE_SUBST(shared_build)
428 AC_ARG_WITH(program-name,
429 APACHE_HELP_STRING(--with-program-name,alternate executable name),[
430 progname="$withval" ], [
434 AC_ARG_WITH(suexec-bin,
435 APACHE_HELP_STRING(--with-suexec-bin,Path to suexec binary),[
436 AC_DEFINE_UNQUOTED(SUEXEC_BIN, "$withval", [Path to suexec binary] )
439 AC_ARG_WITH(suexec-caller,
440 APACHE_HELP_STRING(--with-suexec-caller,User allowed to call SuExec),[
441 AC_DEFINE_UNQUOTED(AP_HTTPD_USER, "$withval", [User allowed to call SuExec] ) ] )
443 AC_ARG_WITH(suexec-userdir,
444 APACHE_HELP_STRING(--with-suexec-userdir,User subdirectory),[
445 AC_DEFINE_UNQUOTED(AP_USERDIR_SUFFIX, "$withval", [User subdirectory] ) ] )
447 AC_ARG_WITH(suexec-docroot,
448 APACHE_HELP_STRING(--with-suexec-docroot,SuExec root directory),[
449 AC_DEFINE_UNQUOTED(AP_DOC_ROOT, "$withval", [SuExec root directory] ) ] )
451 AC_ARG_WITH(suexec-uidmin,
452 APACHE_HELP_STRING(--with-suexec-uidmin,Minimal allowed UID),[
453 AC_DEFINE_UNQUOTED(AP_UID_MIN, $withval, [Minimum allowed UID] ) ] )
455 AC_ARG_WITH(suexec-gidmin,
456 APACHE_HELP_STRING(--with-suexec-gidmin,Minimal allowed GID),[
457 AC_DEFINE_UNQUOTED(AP_GID_MIN, $withval, [Minimum allowed GID] ) ] )
459 AC_ARG_WITH(suexec-logfile,
460 APACHE_HELP_STRING(--with-suexec-logfile,Set the logfile),[
461 AC_DEFINE_UNQUOTED(AP_LOG_EXEC, "$withval", [SuExec log file] ) ] )
463 AC_ARG_WITH(suexec-safepath,
464 APACHE_HELP_STRING(--with-suexec-safepath,Set the safepath),[
465 AC_DEFINE_UNQUOTED(AP_SAFE_PATH, "$withval", [safe shell path for SuExec] ) ] )
467 AC_ARG_WITH(suexec-umask,
468 APACHE_HELP_STRING(--with-suexec-umask,umask for suexec'd process),[
469 AC_DEFINE_UNQUOTED(AP_SUEXEC_UMASK, 0$withval, [umask for suexec'd process] ) ] )
471 dnl AP_LIBS specifies the actual libraries. note we have some required libs.
472 AP_LIBS="$abs_builddir/srclib/pcre/libpcre.la $AP_LIBS"
474 dnl APR should go after the other libs, so the right symbols can be picked up
475 AP_LIBS="$AP_LIBS `$apu_config --link-libtool --libs` `$apr_config --link-libtool --libs`"
476 APACHE_SUBST(AP_LIBS)
477 APACHE_SUBST(AP_BUILD_SRCLIB_DIRS)
478 APACHE_SUBST(AP_CLEAN_SRCLIB_DIRS)
480 AC_DEFINE(AP_USING_AUTOCONF, 1,
481 [Using autoconf to configure Apache])
483 if test "$SINGLE_LISTEN_UNSERIALIZED_ACCEPT" = "1"; then
484 AC_DEFINE(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, 1,
485 [This platform doesn't suffer from the thundering herd problem])
488 AC_DEFINE_UNQUOTED(AP_SIG_GRACEFUL, SIG$AP_SIG_GRACEFUL, [Signal used to gracefully restart])
489 AC_DEFINE_UNQUOTED(AP_SIG_GRACEFUL_STRING, "SIG$AP_SIG_GRACEFUL", [Signal used to gracefully restart (as a quoted string)])
490 AC_DEFINE_UNQUOTED(AP_SIG_GRACEFUL_SHORT, $AP_SIG_GRACEFUL, [Signal used to gracefully restart (without SIG prefix)])
491 AP_SIG_GRACEFUL_SHORT=$AP_SIG_GRACEFUL
492 AP_SIG_GRACEFUL=SIG$AP_SIG_GRACEFUL_SHORT
493 AC_SUBST(AP_SIG_GRACEFUL)
494 AC_SUBST(AP_SIG_GRACEFUL_STRING)
495 AC_SUBST(AP_SIG_GRACEFUL_SHORT)
497 dnl check for endianness
498 if test "$cross_compiling" = "no"; then
501 AC_DEFINE(AP_UNKNOWN_BYTE_ORDER,1,
502 [byte order is unknown due to cross-compilation])
505 APACHE_FAST_OUTPUT(Makefile modules/Makefile srclib/Makefile)
506 APACHE_FAST_OUTPUT(os/Makefile server/Makefile)
507 APACHE_FAST_OUTPUT(support/Makefile srclib/pcre/Makefile)
509 if test -d ./test; then
510 APACHE_FAST_OUTPUT(test/Makefile)
513 dnl ## Finalize the variables
514 echo $ac_n "${nl}Restore user-defined environment settings...${nl}"
516 APR_RESTORE_THE_ENVIRONMENT(CPPFLAGS, EXTRA_)
517 APR_RESTORE_THE_ENVIRONMENT(CFLAGS, EXTRA_)
518 APR_RESTORE_THE_ENVIRONMENT(CXXFLAGS, EXTRA_)
519 APR_RESTORE_THE_ENVIRONMENT(LDFLAGS, EXTRA_)
520 APR_RESTORE_THE_ENVIRONMENT(LIBS, EXTRA_)
521 APR_RESTORE_THE_ENVIRONMENT(INCLUDES, EXTRA_)
523 echo $ac_n "${nl}Construct makefiles and header files...${nl}"
525 APACHE_GEN_CONFIG_VARS
527 dnl ## Build modules.c
529 echo $MODLIST | $AWK -f $srcdir/build/build-modules-c.awk > modules.c
531 APR_EXPAND_VAR(ap_prefix, $prefix)
532 AC_DEFINE_UNQUOTED(HTTPD_ROOT, "${ap_prefix}",
533 [Root directory of the Apache install area])
534 AC_DEFINE_UNQUOTED(SERVER_CONFIG_FILE, "${rel_sysconfdir}/${progname}.conf",
535 [Location of the config file, relative to the Apache root directory])
536 AC_DEFINE_UNQUOTED(AP_TYPES_CONFIG_FILE, "${rel_sysconfdir}/mime.types",
537 [Location of the MIME types config file, relative to the Apache root directory])
538 AC_DEFINE_UNQUOTED(APACHE_MPM_DIR, "$MPM_DIR",
539 [Location of the source for the current MPM])
541 perlbin=`$ac_aux_dir/PrintPath perl`
542 if test "x$perlbin" = "x"; then
543 perlbin="/replace/with/path/to/perl/interpreter"
547 dnl If we are running on BSD/OS, we need to use the BSD .include syntax.
550 ap_make_include=include
551 ap_make_delimiter=' '
554 # Check whether they've installed GNU make
555 if make --version > /dev/null 2>&1; then
559 ap_make_include=.include
560 ap_make_delimiter='"'
564 AC_SUBST(ap_make_include)
565 AC_SUBST(ap_make_delimiter)
567 dnl Ensure that docs/conf is created.
568 test -d docs/conf||$mkdir_p docs/conf
570 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],[