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(srclib/apr/build)
14 dnl # Include our own M4 macros along with those for APR and libtool
16 sinclude(srclib/apr/build/apr_common.m4)
17 sinclude(srclib/apr/build/apr_network.m4)
18 sinclude(srclib/apr/build/apr_threads.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
29 dnl reparse the configure arguments.
30 APACHE_PARSE_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)
51 dnl ## Run configure for packages Apache uses
53 dnl shared library support for these packages doesn't currently
54 dnl work on some platforms
60 echo $ac_n "${nl}Configuring Apache Portable Runtime library ...${nl}"
62 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")
64 echo $ac_n "${nl}Configuring Apache Portable Runtime Utility library...${nl}"
66 APR_SUBDIR_CONFIG(srclib/apr-util, "--with-apr=../apr --prefix=$prefix --exec-prefix=$exec_prefix --libdir=$libdir --includedir=$includedir --bindir=$bindir")
68 echo $ac_n "${nl}Configuring PCRE regular expression library ...${nl}"
70 APR_SUBDIR_CONFIG(srclib/pcre, "--prefix=$prefix --exec-prefix=$exec_prefix --libdir=$libdir --includedir=$includedir --bindir=$bindir")
72 echo $ac_n "${nl}Configuring Apache httpd ...${nl}"
74 echo $ac_n "obtaining flag settings from the sub-configures...${nl}"
75 . ./srclib/apr/APRVARS
77 dnl Now that we have APR's EXTRA_flags in our environment, move them over
78 dnl to the normal variables to avoid duplications and use them for testing.
79 dnl We ignore EXTRA_INCLUDES because our own includes will encompass them.
81 APR_ADDTO(CFLAGS, $EXTRA_CFLAGS)
82 APR_ADDTO(CPPFLAGS, $EXTRA_CPPFLAGS)
83 APR_ADDTO(LDFLAGS, $EXTRA_LDFLAGS)
84 APR_ADDTO(LIBS, $EXTRA_LIBS)
91 dnl Absolute source/build directory
92 abs_srcdir=`(cd $srcdir && pwd)`
95 dnl If the source dir is not equal to the build dir,
96 dnl then we are running in VPATH mode.
98 if test "$abs_builddir" != "$abs_srcdir"; then
100 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_srcdir)/modules/proxy -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])
102 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)/modules/proxy -I\$(top_srcdir)/include -I\$(top_srcdir)/srclib/apr/include -I\$(top_srcdir)/srclib/apr-util/include])
105 echo $ac_n "${nl}Applying OS-specific hints for httpd ...${nl}"
109 # Use a custom made libtool replacement
110 echo "using aplibtool"
111 LIBTOOL="$abs_srcdir/srclib/apr/build/aplibtool"
112 SH_LIBTOOL="$LIBTOOL --shared --export-all"
113 SH_LIBS="\$(ALL_LIBS)"
114 CORE_IMPLIB_FILE="ApacheCoreOS2.la"
115 CORE_IMPLIB="$abs_srcdir/server/$CORE_IMPLIB_FILE"
117 other_targets="$other_targets os2core"
118 INSTALL_PROG_FLAGS="-e .exe"
123 if test "x$LTFLAGS" = "x"; then
126 LIBTOOL='$(SHELL) $(top_builddir)/srclib/apr/libtool $(LTFLAGS)'
127 libtoolversion=`$abs_builddir/srclib/apr/libtool --version`
128 case $libtoolversion in
130 SH_LIBTOOL='$(LIBTOOL)'
131 SHLTCFLAGS="-prefer-pic"
132 LTCFLAGS="-prefer-non-pic -static"
135 SH_LIBTOOL='$(SHELL) $(top_builddir)/shlibtool $(LTFLAGS)'
142 APACHE_SUBST(SHLTCFLAGS)
143 APACHE_SUBST(LTCFLAGS)
149 APR_SETVAR(APACHE_MPM, [prefork])
150 APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1])
153 APR_SETVAR(APACHE_MPM, [beos])
154 APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1])
157 APR_SETVAR(APACHE_MPM, [mpmt_os2])
158 APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1])
163 AP_SIG_GRACEFUL=WINCH
166 APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1])
172 *486-*-bsdi* | *-netbsd* | *-freebsd* | *-apple-darwin* | *-dec-osf* | *-qnx)
173 APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1])
176 dnl This is a hack -- we should be using AC_TRY_RUN instead
177 ap_platform_runtime_link_flag="-R"
178 dnl solaris 8 and above don't have a thundering herd
179 dnl not sure about rev's before this one.
184 APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1])
189 APR_SETVAR(APACHE_MPM, [prefork])
190 APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1])
195 dnl Process command line arguments. This is done early in the process so the
196 dnl user can get feedback quickly in case of an error.
198 dnl ### need to move some of the arguments "up here"
200 dnl ## Check for programs
208 AC_CHECK_TOOL(RANLIB, ranlib, true)
209 dnl AC_PATH_PROG(PERL_PATH, perl)
211 dnl various OS checks that apparently set required flags
216 dnl ## Check for libraries
218 dnl ## Check for header files
220 dnl I think these are just used all over the place, so just check for
221 dnl them at the base of the tree. If some are specific to a single
222 dnl directory, they should be moved (Comment #Spoon)
224 dnl Regarding standard header files: AC_HEADER_STDC doesn't set symbols
225 dnl HAVE_STRING_H, HAVE_STDLIB_H, etc., so those are checked for
226 dnl explicitly so that the normal HAVE_xxx_H symbol is defined.
242 dnl ## Check for typedefs, structures, and compiler characteristics.
245 if test "$ac_cv_prog_gcc" = "yes"; then
246 APR_ADDTO(NOTEST_CPPFLAGS,-DAP_HAVE_DESIGNATED_INITIALIZER)
249 dnl ## Check for library functions
251 dnl See Comment #Spoon
261 dnl ## Check for the tm_gmtoff field in struct tm to get the timezone diffs
262 AC_CACHE_CHECK([for tm_gmtoff in struct tm], ac_cv_struct_tm_gmtoff,
263 [AC_TRY_COMPILE([#include <sys/types.h>
264 #include <time.h>], [struct tm tm; tm.tm_gmtoff;],
265 ac_cv_struct_tm_gmtoff=yes, ac_cv_struct_tm_gmtoff=no)])
266 if test "$ac_cv_struct_tm_gmtoff" = "yes"; then
267 AC_DEFINE(HAVE_GMTOFF)
270 dnl ## Set up any appropriate OS-specific environment variables for apachectl
274 # for 32-bit builds, increase MAXDATA to allow lots of threads
275 if test x$OBJECT_MODE != x64; then
276 OS_SPECIFIC_VARS="LDR_CNTRL=\"MAXDATA=0x80000000\" ; export LDR_CNTRL ;"
278 OS_SPECIFIC_VARS="$OS_SPECIFIC_VARS AIXTHREAD_SCOPE=S ; export AIXTHREAD_SCOPE"
281 OS_SPECIFIC_VARS="export _CEE_RUNOPTS=\"STACK(,,ANY)\" ; export _EDC_ADD_ERRNO2=1"
287 AC_ARG_WITH(port,APACHE_HELP_STRING(--with-port=PORT,Port on which to listen (default is 80)),
288 [if test "$withval" = "yes"; then AC_MSG_ERROR('option --with-port requires a value (the TCP port number)'); else PORT="$withval"; fi],
291 AC_ARG_ENABLE(maintainer-mode,APACHE_HELP_STRING(--enable-maintainer-mode,Turn on debugging and compile time warnings),
293 APR_ADDTO(CPPFLAGS, -DAP_DEBUG)
296 prefix="$orig_prefix"
297 APACHE_ENABLE_MODULES
299 dnl reading config stubs
300 esyscmd(./build/config-stubs .)
302 APACHE_SUBST(progname)
303 APACHE_SUBST(MPM_LIB)
306 APACHE_SUBST(BUILTIN_LIBS)
307 APACHE_SUBST(SHLIBPATH_VAR)
308 APACHE_SUBST(OS_SPECIFIC_VARS)
310 PRE_SHARED_CMDS='echo ""'
311 POST_SHARED_CMDS='echo ""'
313 dnl apache_need_shared tells us if Apache modules are being built as DSOs
315 if test "$apache_need_shared" = "yes"; then
316 if test -f $ac_aux_dir/ltconfig; then
317 $SHELL $ac_aux_dir/ltconfig --output=shlibtool --disable-static --srcdir=$ac_aux_dir --cache-file=./config.cache $ac_aux_dir/ltmain.sh
319 shared_build="shared-build"
322 dnl enable_so tells us if *any* modules can be built as DSOs
324 if test "$enable_so" = "yes"; then
327 HTTPD_LDFLAGS="$HTTPD_LDFLAGS -Wl,-uXML_Parse -Wl,-bE:$abs_builddir/server/httpd.exp"
328 SH_LDFLAGS="$SH_LDFLAGS \$(EXTRA_LDFLAGS) \$(EXTRA_LIBS)"
329 UTIL_LDFLAGS="$UTIL_LDFLAGS -Wl,-uXML_Parse"
332 SH_LDFLAGS='$(top_builddir)/_APP_'
333 PRE_SHARED_CMDS='ln -s $(top_builddir)/httpd $(top_builddir)/_APP_'
334 POST_SHARED_CMDS='rm $(top_builddir)/_APP_'
337 HTTPD_LDFLAGS="$HTTPD_LDFLAGS --main=$abs_srcdir/server/main.o --core-dll=$abs_srcdir/apachecore.dll"
338 SH_LDFLAGS="$SH_LDFLAGS --core-dll=$abs_srcdir/apachecore.dll"
342 APACHE_SUBST(PRE_SHARED_CMDS)
343 APACHE_SUBST(POST_SHARED_CMDS)
344 APACHE_SUBST(shared_build)
346 AC_ARG_WITH(program-name,
347 APACHE_HELP_STRING(--with-program-name,alternate executable name),[
348 progname="$withval" ], [
352 AC_ARG_WITH(suexec-bin,
353 APACHE_HELP_STRING(--with-suexec-bin,Path to suexec binary),[
354 AC_DEFINE_UNQUOTED(SUEXEC_BIN, "$withval", [Path to suexec binary] )
357 AC_ARG_WITH(suexec-caller,
358 APACHE_HELP_STRING(--with-suexec-caller,User allowed to call SuExec),[
359 AC_DEFINE_UNQUOTED(AP_HTTPD_USER, "$withval", [User allowed to call SuExec] ) ] )
361 AC_ARG_WITH(suexec-userdir,
362 APACHE_HELP_STRING(--with-suexec-userdir,User subdirectory),[
363 AC_DEFINE_UNQUOTED(AP_USERDIR_SUFFIX, "$withval", [User subdirectory] ) ] )
365 AC_ARG_WITH(suexec-docroot,
366 APACHE_HELP_STRING(--with-suexec-docroot,SuExec root directory),[
367 AC_DEFINE_UNQUOTED(AP_DOC_ROOT, "$withval", [SuExec root directory] ) ] )
369 AC_ARG_WITH(suexec-uidmin,
370 APACHE_HELP_STRING(--with-suexec-uidmin,Minimal allowed UID),[
371 AC_DEFINE_UNQUOTED(AP_UID_MIN, $withval, [Minimum allowed UID] ) ] )
373 AC_ARG_WITH(suexec-gidmin,
374 APACHE_HELP_STRING(--with-suexec-gidmin,Minimal allowed GID),[
375 AC_DEFINE_UNQUOTED(AP_GID_MIN, $withval, [Minimum allowed GID] ) ] )
377 AC_ARG_WITH(suexec-logfile,
378 APACHE_HELP_STRING(--with-suexec-logfile,Set the logfile),[
379 AC_DEFINE_UNQUOTED(AP_LOG_EXEC, "$withval", [SuExec log file] ) ] )
381 AC_ARG_WITH(suexec-safepath,
382 APACHE_HELP_STRING(--with-suexec-safepath,Set the safepath),[
383 AC_DEFINE_UNQUOTED(AP_SAFE_PATH, "$withval", [safe shell path for SuExec] ) ] )
385 AC_ARG_WITH(suexec-umask,
386 APACHE_HELP_STRING(--with-suexec-umask,umask for suexec'd process),[
387 AC_DEFINE_UNQUOTED(AP_SUEXEC_UMASK, 0$withval, [umask for suexec'd process] ) ] )
389 dnl AP_LIBS specifies the actual libraries. note we have some required libs.
390 AP_LIBS="$abs_builddir/srclib/pcre/libpcre.la $abs_builddir/srclib/apr-util/libaprutil.la $AP_LIBS"
392 dnl APR should go after the other libs, so the right symbols can be picked up
393 AP_LIBS="$AP_LIBS $abs_builddir/srclib/apr/libapr.la"
394 APACHE_SUBST(AP_LIBS)
396 AC_DEFINE(AP_USING_AUTOCONF, 1,
397 [Using autoconf to configure Apache])
399 if test "$SINGLE_LISTEN_UNSERIALIZED_ACCEPT" = "1"; then
400 AC_DEFINE(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, 1,
401 [This platform doesn't suffer from the thundering herd problem])
404 AC_DEFINE_UNQUOTED(AP_SIG_GRACEFUL, SIG$AP_SIG_GRACEFUL, [Signal used to gracefully restart])
405 AC_DEFINE_UNQUOTED(AP_SIG_GRACEFUL_STRING, "SIG$AP_SIG_GRACEFUL", [Signal used to gracefully restart (as a quoted string)])
406 AC_DEFINE_UNQUOTED(AP_SIG_GRACEFUL_SHORT, $AP_SIG_GRACEFUL, [Signal used to gracefully restart (without SIG prefix)])
407 AP_SIG_GRACEFUL_SHORT=$AP_SIG_GRACEFUL
408 AP_SIG_GRACEFUL=SIG$AP_SIG_GRACEFUL_SHORT
409 AC_SUBST(AP_SIG_GRACEFUL)
410 AC_SUBST(AP_SIG_GRACEFUL_STRING)
411 AC_SUBST(AP_SIG_GRACEFUL_SHORT)
413 dnl check for endianness
414 if test "$cross_compiling" = "no"; then
417 AC_DEFINE(AP_UNKNOWN_BYTE_ORDER,1,
418 [byte order is unknown due to cross-compilation])
421 APACHE_FAST_OUTPUT(Makefile modules/Makefile srclib/Makefile)
422 APACHE_FAST_OUTPUT(os/beos/Makefile os/os2/Makefile os/Makefile)
423 APACHE_FAST_OUTPUT(os/unix/Makefile server/Makefile)
424 APACHE_FAST_OUTPUT(support/Makefile srclib/pcre/Makefile)
426 if test -d ./test; then
427 APACHE_FAST_OUTPUT(test/Makefile)
430 dnl get the exported vars from APRUTIL
431 . ./srclib/apr-util/export_vars.sh
432 APR_ADDTO(LIBS, $APRUTIL_EXPORT_LIBS)
433 APR_ADDTO(INCLUDES, $APRUTIL_EXPORT_INCLUDES)
434 APR_ADDTO(LDFLAGS, $APRUTIL_LDFLAGS)
435 AP_LIBS="$AP_LIBS $LIBTOOL_LIBS"
437 dnl ## Finalize the variables
438 echo $ac_n "${nl}Restore user-defined environment settings...${nl}"
440 APR_RESTORE_THE_ENVIRONMENT(CPPFLAGS, EXTRA_)
441 APR_RESTORE_THE_ENVIRONMENT(CFLAGS, EXTRA_)
442 APR_RESTORE_THE_ENVIRONMENT(CXXFLAGS, EXTRA_)
443 APR_RESTORE_THE_ENVIRONMENT(LDFLAGS, EXTRA_)
444 APR_RESTORE_THE_ENVIRONMENT(LIBS, EXTRA_)
445 APR_RESTORE_THE_ENVIRONMENT(INCLUDES, EXTRA_)
447 echo $ac_n "${nl}Construct makefiles and header files...${nl}"
449 APACHE_GEN_CONFIG_VARS
451 dnl ## Build modules.c
453 echo $MODLIST | $AWK -f $srcdir/build/build-modules-c.awk > modules.c
455 APR_EXPAND_VAR(ap_prefix, $prefix)
456 AC_DEFINE_UNQUOTED(HTTPD_ROOT, "${ap_prefix}",
457 [Root directory of the Apache install area])
458 AC_DEFINE_UNQUOTED(SERVER_CONFIG_FILE, "${rel_sysconfdir}/${progname}.conf",
459 [Location of the config file, relative to the Apache root directory])
460 AC_DEFINE_UNQUOTED(APACHE_MPM_DIR, "$MPM_DIR",
461 [Location of the source for the current MPM])
463 perlbin=`$ac_aux_dir/PrintPath perl`
464 if test "x$perlbin" = "x"; then
465 perlbin="/replace/with/path/to/perl/interpreter"
469 dnl If we are running on BSD/OS, we need to use the BSD .include syntax.
474 # Check whether they've installed GNU make
475 if make --version > /dev/null 2>&1; then
483 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],[