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 Get the layout here, so we can pass the required variables to apr
22 dnl APACHE_ENABLE_LAYOUT
23 AC_MSG_CHECKING(for chosen layout)
25 APACHE_HELP_STRING(--enable-layout=LAYOUT,Default file layout),[
27 APACHE_LAYOUT($srcdir/config.layout, $LAYOUT)
28 AC_MSG_RESULT($LAYOUT)
30 AC_MSG_RESULT([Autoconf Defaults])
33 dnl Save user-defined environment settings for later restoration
35 APR_SAVE_THE_ENVIRONMENT(CPPFLAGS)
36 APR_SAVE_THE_ENVIRONMENT(CFLAGS)
37 APR_SAVE_THE_ENVIRONMENT(CXXFLAGS)
38 APR_SAVE_THE_ENVIRONMENT(LDFLAGS)
39 APR_SAVE_THE_ENVIRONMENT(LIBS)
40 APR_SAVE_THE_ENVIRONMENT(INCLUDES)
42 dnl Generate ./config.nice for reproducing runs of configure
44 APR_CONFIG_NICE(config.nice)
49 dnl XXX we can't just use AC_PREFIX_DEFAULT because that isn't subbed in
50 dnl by configure until it is too late. Is that how it should be or not?
51 dnl Something seems broken here.
52 AC_PREFIX_DEFAULT(/usr/local/apache2)
53 test "$prefix" = "NONE" && prefix='/usr/local/apache2'
54 test "$exec_prefix" = "NONE" && exec_prefix='${prefix}'
56 dnl ## Run configure for packages Apache uses
58 dnl shared library support for these packages doesn't currently
59 dnl work on some platforms
65 echo $ac_n "${nl}Configuring Apache Portable Runtime library ...${nl}"
67 APR_SUBDIR_CONFIG(srclib/apr, "$apache_apr_flags --prefix=$prefix --exec-prefix=$exec_prefix --libdir=$libdir --bindir=$bindir")
69 echo $ac_n "${nl}Configuring Apache Portable Runtime Utility library...${nl}"
71 APR_SUBDIR_CONFIG(srclib/apr-util, "--with-apr=../apr --prefix=$prefix --exec-prefix=$exec_prefix --libdir=$libdir --bindir=$bindir")
73 echo $ac_n "${nl}Configuring PCRE regular expression library ...${nl}"
75 APR_SUBDIR_CONFIG(srclib/pcre, "--prefix=$prefix --exec-prefix=$exec_prefix --libdir=$libdir --bindir=$bindir")
77 echo $ac_n "${nl}Configuring Apache httpd ...${nl}"
79 echo $ac_n "obtaining flag settings from the sub-configures...${nl}"
80 . ./srclib/apr/APRVARS
82 dnl Now that we have APR's EXTRA_flags in our environment, move them over
83 dnl to the normal variables to avoid duplications and use them for testing.
84 dnl We ignore EXTRA_INCLUDES because our own includes will encompass them.
86 APR_ADDTO(CFLAGS, $EXTRA_CFLAGS)
87 APR_ADDTO(CPPFLAGS, $EXTRA_CPPFLAGS)
88 APR_ADDTO(LDFLAGS, $EXTRA_LDFLAGS)
89 APR_ADDTO(LIBS, $EXTRA_LIBS)
96 dnl Absolute source/build directory
97 abs_srcdir=`(cd $srcdir && pwd)`
100 dnl If the source dir is not equal to the build dir,
101 dnl then we are running in VPATH mode.
103 if test "$abs_builddir" != "$abs_srcdir"; then
105 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])
107 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])
110 echo $ac_n "${nl}Applying OS-specific hints for httpd ...${nl}"
114 # Use a custom made libtool replacement
115 echo "using aplibtool"
116 LIBTOOL="$abs_srcdir/srclib/apr/build/aplibtool"
117 SH_LIBTOOL="$LIBTOOL --shared --export-all"
118 SH_LIBS="\$(ALL_LIBS)"
119 CORE_IMPLIB_FILE="ApacheCoreOS2.la"
120 CORE_IMPLIB="$abs_srcdir/server/$CORE_IMPLIB_FILE"
122 other_targets="$other_targets os2core"
123 INSTALL_PROG_FLAGS="-e .exe"
128 if test "x$LTFLAGS" = "x"; then
131 LIBTOOL='$(SHELL) $(top_builddir)/srclib/apr/libtool $(LTFLAGS)'
132 libtoolversion=`$abs_builddir/srclib/apr/libtool --version`
133 case $libtoolversion in
135 SH_LIBTOOL='$(LIBTOOL)'
136 SHLTCFLAGS="-prefer-pic"
137 LTCFLAGS="-prefer-non-pic -static"
140 SH_LIBTOOL='$(SHELL) $(top_builddir)/shlibtool $(LTFLAGS)'
147 APACHE_SUBST(SHLTCFLAGS)
148 APACHE_SUBST(LTCFLAGS)
154 APR_SETVAR(APACHE_MPM, [prefork])
155 APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1])
158 APR_SETVAR(APACHE_MPM, [beos])
159 APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1])
162 APR_SETVAR(APACHE_MPM, [mpmt_os2])
163 APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1])
168 AP_SIG_GRACEFUL=WINCH
171 APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1])
177 *486-*-bsdi* | *-netbsd* | *-freebsd* | *-apple-darwin* | *-dec-osf* | *-qnx)
178 APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1])
181 dnl This is a hack -- we should be using AC_TRY_RUN instead
182 ap_platform_runtime_link_flag="-R"
185 APR_SETVAR(APACHE_MPM, [prefork])
186 APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1])
191 dnl Process command line arguments. This is done early in the process so the
192 dnl user can get feedback quickly in case of an error.
194 dnl ### need to move some of the arguments "up here"
196 dnl ## Check for programs
204 AC_CHECK_TOOL(RANLIB, ranlib, true)
205 dnl AC_PATH_PROG(PERL_PATH, perl)
207 dnl various OS checks that apparently set required flags
212 dnl ## Check for libraries
214 dnl ## Check for header files
216 dnl I think these are just used all over the place, so just check for
217 dnl them at the base of the tree. If some are specific to a single
218 dnl directory, they should be moved (Comment #Spoon)
220 dnl Regarding standard header files: AC_HEADER_STDC doesn't set symbols
221 dnl HAVE_STRING_H, HAVE_STDLIB_H, etc., so those are checked for
222 dnl explicitly so that the normal HAVE_xxx_H symbol is defined.
238 dnl ## Check for typedefs, structures, and compiler characteristics.
241 if test "$ac_cv_prog_gcc" = "yes"; then
242 APR_ADDTO(NOTEST_CPPFLAGS,-DAP_HAVE_DESIGNATED_INITIALIZER)
245 dnl ## Check for library functions
247 dnl See Comment #Spoon
257 dnl ## Check for the tm_gmtoff field in struct tm to get the timezone diffs
258 AC_CACHE_CHECK([for tm_gmtoff in struct tm], ac_cv_struct_tm_gmtoff,
259 [AC_TRY_COMPILE([#include <sys/types.h>
260 #include <time.h>], [struct tm tm; tm.tm_gmtoff;],
261 ac_cv_struct_tm_gmtoff=yes, ac_cv_struct_tm_gmtoff=no)])
262 if test "$ac_cv_struct_tm_gmtoff" = "yes"; then
263 AC_DEFINE(HAVE_GMTOFF)
266 dnl ## Set up any appropriate OS-specific environment variables for apachectl
270 # for 32-bit builds, increase MAXDATA to allow lots of threads
271 if test x$COMPILE_MODE != 64; then
272 OS_SPECIFIC_VARS="set LDR_CNTRL=\"MAXDATA=0x80000000\" ; export LDR_CNTRL ;"
274 OS_SPECIFIC_VARS="$OS_SPECIFIC_VARS set AIXTHREAD_SCOPE=S ; export AIXTHREAD_SCOPE"
277 OS_SPECIFIC_VARS="export _CEE_RUNOPTS=\"STACK(,,ANY)\" ; export _EDC_ADD_ERRNO2=1"
283 AC_ARG_WITH(port,APACHE_HELP_STRING(--with-port=PORT,Port on which to listen (default is 80)),
284 [if test "$withval" = "yes"; then AC_MSG_ERROR('option --with-port requires a value (the TCP port number)'); else PORT="$withval"; fi],
287 AC_ARG_ENABLE(maintainer-mode,APACHE_HELP_STRING(--enable-maintainer-mode,Turn on debugging and compile time warnings),
289 APR_ADDTO(CPPFLAGS, -DAP_DEBUG)
292 prefix="$orig_prefix"
293 APACHE_ENABLE_MODULES
295 dnl reading config stubs
296 esyscmd(./build/config-stubs .)
298 APACHE_SUBST(progname)
299 APACHE_SUBST(MPM_LIB)
302 APACHE_SUBST(BUILTIN_LIBS)
303 APACHE_SUBST(SHLIBPATH_VAR)
304 APACHE_SUBST(OS_SPECIFIC_VARS)
306 PRE_SHARED_CMDS='echo ""'
307 POST_SHARED_CMDS='echo ""'
309 dnl apache_need_shared tells us if Apache modules are being built as DSOs
311 if test "$apache_need_shared" = "yes"; then
312 if test -f $ac_aux_dir/ltconfig; then
313 $SHELL $ac_aux_dir/ltconfig --output=shlibtool --disable-static --srcdir=$ac_aux_dir --cache-file=./config.cache $ac_aux_dir/ltmain.sh
315 shared_build="shared-build"
318 dnl enable_so tells us if *any* modules can be built as DSOs
320 if test "$enable_so" = "yes"; then
323 HTTPD_LDFLAGS="$HTTPD_LDFLAGS -Wl,-uXML_Parse -Wl,-bE:$abs_builddir/server/httpd.exp"
324 SH_LDFLAGS="$SH_LDFLAGS \$(EXTRA_LDFLAGS) \$(EXTRA_LIBS)"
325 UTIL_LDFLAGS="$UTIL_LDFLAGS -Wl,-uXML_Parse"
328 SH_LDFLAGS='$(top_builddir)/_APP_'
329 PRE_SHARED_CMDS='ln -s $(top_builddir)/httpd $(top_builddir)/_APP_'
330 POST_SHARED_CMDS='rm $(top_builddir)/_APP_'
333 HTTPD_LDFLAGS="$HTTPD_LDFLAGS --main=$abs_srcdir/server/main.o --core-dll=$abs_srcdir/apachecore.dll"
334 SH_LDFLAGS="$SH_LDFLAGS --core-dll=$abs_srcdir/apachecore.dll"
338 APACHE_SUBST(PRE_SHARED_CMDS)
339 APACHE_SUBST(POST_SHARED_CMDS)
340 APACHE_SUBST(shared_build)
342 AC_ARG_WITH(program-name,
343 APACHE_HELP_STRING(--with-program-name,alternate executable name),[
344 progname="$withval" ], [
348 AC_ARG_WITH(suexec-bin,
349 APACHE_HELP_STRING(--with-suexec-bin,Path to suexec binary),[
350 AC_DEFINE_UNQUOTED(SUEXEC_BIN, "$withval", [Path to suexec binary] )
353 AC_ARG_WITH(suexec-caller,
354 APACHE_HELP_STRING(--with-suexec-caller,User allowed to call SuExec),[
355 AC_DEFINE_UNQUOTED(AP_HTTPD_USER, "$withval", [User allowed to call SuExec] ) ] )
357 AC_ARG_WITH(suexec-userdir,
358 APACHE_HELP_STRING(--with-suexec-userdir,User subdirectory),[
359 AC_DEFINE_UNQUOTED(AP_USERDIR_SUFFIX, "$withval", [User subdirectory] ) ] )
361 AC_ARG_WITH(suexec-docroot,
362 APACHE_HELP_STRING(--with-suexec-docroot,SuExec root directory),[
363 AC_DEFINE_UNQUOTED(AP_DOC_ROOT, "$withval", [SuExec root directory] ) ] )
365 AC_ARG_WITH(suexec-uidmin,
366 APACHE_HELP_STRING(--with-suexec-uidmin,Minimal allowed UID),[
367 AC_DEFINE_UNQUOTED(AP_UID_MIN, $withval, [Minimum allowed UID] ) ] )
369 AC_ARG_WITH(suexec-gidmin,
370 APACHE_HELP_STRING(--with-suexec-gidmin,Minimal allowed GID),[
371 AC_DEFINE_UNQUOTED(AP_GID_MIN, $withval, [Minimum allowed GID] ) ] )
373 AC_ARG_WITH(suexec-logfile,
374 APACHE_HELP_STRING(--with-suexec-logfile,Set the logfile),[
375 AC_DEFINE_UNQUOTED(AP_LOG_EXEC, "$withval", [SuExec log file] ) ] )
377 AC_ARG_WITH(suexec-safepath,
378 APACHE_HELP_STRING(--with-suexec-safepath,Set the safepath),[
379 AC_DEFINE_UNQUOTED(AP_SAFE_PATH, "$withval", [safe shell path for SuExec] ) ] )
381 AC_ARG_WITH(suexec-umask,
382 APACHE_HELP_STRING(--with-suexec-umask,umask for suexec'd process),[
383 AC_DEFINE_UNQUOTED(AP_SUEXEC_UMASK, 0$withval, [umask for suexec'd process] ) ] )
385 dnl AP_LIBS specifies the actual libraries. note we have some required libs.
386 AP_LIBS="$abs_builddir/srclib/pcre/libpcre.la $abs_builddir/srclib/apr-util/libaprutil.la $AP_LIBS"
388 dnl APR should go after the other libs, so the right symbols can be picked up
389 AP_LIBS="$AP_LIBS $abs_builddir/srclib/apr/libapr.la"
390 APACHE_SUBST(AP_LIBS)
392 AC_DEFINE(AP_USING_AUTOCONF, 1,
393 [Using autoconf to configure Apache])
395 if test "$SINGLE_LISTEN_UNSERIALIZED_ACCEPT" = "1"; then
396 AC_DEFINE(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, 1,
397 [This platform doesn't suffer from the thundering herd problem])
400 AC_DEFINE_UNQUOTED(AP_SIG_GRACEFUL, SIG$AP_SIG_GRACEFUL, [Signal used to gracefully restart])
401 AC_DEFINE_UNQUOTED(AP_SIG_GRACEFUL_STRING, "SIG$AP_SIG_GRACEFUL", [Signal used to gracefully restart (as a quoted string)])
402 AC_DEFINE_UNQUOTED(AP_SIG_GRACEFUL_SHORT, $AP_SIG_GRACEFUL, [Signal used to gracefully restart (without SIG prefix)])
403 AP_SIG_GRACEFUL_SHORT=$AP_SIG_GRACEFUL
404 AP_SIG_GRACEFUL=SIG$AP_SIG_GRACEFUL_SHORT
405 AC_SUBST(AP_SIG_GRACEFUL)
406 AC_SUBST(AP_SIG_GRACEFUL_STRING)
407 AC_SUBST(AP_SIG_GRACEFUL_SHORT)
409 dnl check for endianness
410 if test "$cross_compiling" = "no"; then
413 AC_DEFINE(AP_UNKNOWN_BYTE_ORDER,1,
414 [byte order is unknown due to cross-compilation])
417 APACHE_FAST_OUTPUT(Makefile modules/Makefile srclib/Makefile)
418 APACHE_FAST_OUTPUT(os/beos/Makefile os/os2/Makefile os/Makefile)
419 APACHE_FAST_OUTPUT(os/unix/Makefile server/Makefile)
420 APACHE_FAST_OUTPUT(support/Makefile srclib/pcre/Makefile)
422 if test -d ./test; then
423 APACHE_FAST_OUTPUT(test/Makefile)
426 dnl get the exported vars from APRUTIL
427 . ./srclib/apr-util/export_vars.sh
428 APR_ADDTO(LIBS, $APRUTIL_EXPORT_LIBS)
429 APR_ADDTO(INCLUDES, $APRUTIL_EXPORT_INCLUDES)
430 APR_ADDTO(LDFLAGS, $APRUTIL_LDFLAGS)
431 AP_LIBS="$AP_LIBS $LIBTOOL_LIBS"
433 dnl ## Finalize the variables
434 echo $ac_n "${nl}Restore user-defined environment settings...${nl}"
436 APR_RESTORE_THE_ENVIRONMENT(CPPFLAGS, EXTRA_)
437 APR_RESTORE_THE_ENVIRONMENT(CFLAGS, EXTRA_)
438 APR_RESTORE_THE_ENVIRONMENT(CXXFLAGS, EXTRA_)
439 APR_RESTORE_THE_ENVIRONMENT(LDFLAGS, EXTRA_)
440 APR_RESTORE_THE_ENVIRONMENT(LIBS, EXTRA_)
441 APR_RESTORE_THE_ENVIRONMENT(INCLUDES, EXTRA_)
443 echo $ac_n "${nl}Construct makefiles and header files...${nl}"
445 APACHE_GEN_CONFIG_VARS
447 dnl ## Build modules.c
449 echo $MODLIST | $AWK -f $srcdir/build/build-modules-c.awk > modules.c
451 AC_DEFINE_UNQUOTED(HTTPD_ROOT, "$prefix",
452 [Root directory of the Apache install area])
453 AC_DEFINE_UNQUOTED(SERVER_CONFIG_FILE, "conf/$progname.conf",
454 [Location of the config file, relative to the Apache root directory])
455 AC_DEFINE_UNQUOTED(APACHE_MPM_DIR, "$MPM_DIR",
456 [Location of the source for the current MPM])
458 perlbin=`$ac_aux_dir/PrintPath perl`
459 if test "x$perlbin" = "x"; then
460 perlbin="/replace/with/path/to/perl/interpreter"
464 dnl If we are running on BSD/OS, we need to use the BSD .include syntax.
469 # Check whether they've installed GNU make
470 if make --version > /dev/null 2>&1; then
478 AC_OUTPUT($APACHE_OUTPUT_FILES 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],[