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 Save user-defined environment settings for later restoration
34 APR_SAVE_THE_ENVIRONMENT(CPPFLAGS)
35 APR_SAVE_THE_ENVIRONMENT(CFLAGS)
36 APR_SAVE_THE_ENVIRONMENT(CXXFLAGS)
37 APR_SAVE_THE_ENVIRONMENT(LDFLAGS)
38 APR_SAVE_THE_ENVIRONMENT(LIBS)
39 APR_SAVE_THE_ENVIRONMENT(INCLUDES)
41 dnl Generate ./config.nice for reproducing runs of configure
43 APR_CONFIG_NICE(config.nice)
48 dnl ## Run configure for packages Apache uses
50 dnl shared library support for these packages doesn't currently
51 dnl work on some platforms
57 echo $ac_n "${nl}Configuring Apache Portable Runtime library ...${nl}"
59 APR_SUBDIR_CONFIG(srclib/apr, "$apache_apr_flags --prefix=$prefix --exec-prefix=$exec_prefix --libdir=$libdir --bindir=$bindir --datadir=$datadir --with-installbuilddir=$installbuilddir")
61 echo $ac_n "${nl}Configuring Apache Portable Runtime Utility library...${nl}"
63 APR_SUBDIR_CONFIG(srclib/apr-util, "--with-apr=../apr --prefix=$prefix --exec-prefix=$exec_prefix --libdir=$libdir --bindir=$bindir")
65 echo $ac_n "${nl}Configuring PCRE regular expression library ...${nl}"
67 APR_SUBDIR_CONFIG(srclib/pcre, "--prefix=$prefix --exec-prefix=$exec_prefix --libdir=$libdir --bindir=$bindir")
69 echo $ac_n "${nl}Configuring Apache httpd ...${nl}"
71 echo $ac_n "obtaining flag settings from the sub-configures...${nl}"
72 . ./srclib/apr/APRVARS
74 dnl Now that we have APR's EXTRA_flags in our environment, move them over
75 dnl to the normal variables to avoid duplications and use them for testing.
76 dnl We ignore EXTRA_INCLUDES because our own includes will encompass them.
78 APR_ADDTO(CFLAGS, $EXTRA_CFLAGS)
79 APR_ADDTO(CPPFLAGS, $EXTRA_CPPFLAGS)
80 APR_ADDTO(LDFLAGS, $EXTRA_LDFLAGS)
81 APR_ADDTO(LIBS, $EXTRA_LIBS)
88 dnl Absolute source/build directory
89 abs_srcdir=`(cd $srcdir && pwd)`
92 dnl If the source dir is not equal to the build dir,
93 dnl then we are running in VPATH mode.
95 if test "$abs_builddir" != "$abs_srcdir"; then
97 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])
99 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])
102 echo $ac_n "${nl}Applying OS-specific hints for httpd ...${nl}"
106 # Use a custom made libtool replacement
107 echo "using aplibtool"
108 LIBTOOL="$abs_srcdir/srclib/apr/build/aplibtool"
109 SH_LIBTOOL="$LIBTOOL --shared --export-all"
110 SH_LIBS="\$(ALL_LIBS)"
111 CORE_IMPLIB_FILE="ApacheCoreOS2.la"
112 CORE_IMPLIB="$abs_srcdir/server/$CORE_IMPLIB_FILE"
114 other_targets="$other_targets os2core"
115 INSTALL_PROG_FLAGS="-e .exe"
120 if test "x$LTFLAGS" = "x"; then
123 LIBTOOL='$(SHELL) $(top_builddir)/srclib/apr/libtool $(LTFLAGS)'
124 libtoolversion=`$abs_builddir/srclib/apr/libtool --version`
125 case $libtoolversion in
127 SH_LIBTOOL='$(LIBTOOL)'
128 SHLTCFLAGS="-prefer-pic"
129 LTCFLAGS="-prefer-non-pic -static"
132 SH_LIBTOOL='$(SHELL) $(top_builddir)/shlibtool $(LTFLAGS)'
139 APACHE_SUBST(SHLTCFLAGS)
140 APACHE_SUBST(LTCFLAGS)
146 APR_SETVAR(APACHE_MPM, [prefork])
147 APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1])
150 APR_SETVAR(APACHE_MPM, [beos])
151 APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1])
154 APR_SETVAR(APACHE_MPM, [mpmt_os2])
155 APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1])
160 AP_SIG_GRACEFUL=WINCH
163 APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1])
169 *486-*-bsdi* | *-netbsd* | *-freebsd* | *-apple-darwin* | *-dec-osf* | *-qnx)
170 APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1])
173 dnl This is a hack -- we should be using AC_TRY_RUN instead
174 ap_platform_runtime_link_flag="-R"
175 dnl solaris 8 and above don't have a thundering herd
176 dnl not sure about rev's before this one.
181 APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1])
186 APR_SETVAR(APACHE_MPM, [prefork])
187 APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1])
192 dnl Process command line arguments. This is done early in the process so the
193 dnl user can get feedback quickly in case of an error.
195 dnl ### need to move some of the arguments "up here"
197 dnl ## Check for programs
205 AC_CHECK_TOOL(RANLIB, ranlib, true)
206 dnl AC_PATH_PROG(PERL_PATH, perl)
208 dnl various OS checks that apparently set required flags
213 dnl ## Check for libraries
215 dnl ## Check for header files
217 dnl I think these are just used all over the place, so just check for
218 dnl them at the base of the tree. If some are specific to a single
219 dnl directory, they should be moved (Comment #Spoon)
221 dnl Regarding standard header files: AC_HEADER_STDC doesn't set symbols
222 dnl HAVE_STRING_H, HAVE_STDLIB_H, etc., so those are checked for
223 dnl explicitly so that the normal HAVE_xxx_H symbol is defined.
239 dnl ## Check for typedefs, structures, and compiler characteristics.
242 if test "$ac_cv_prog_gcc" = "yes"; then
243 APR_ADDTO(NOTEST_CPPFLAGS,-DAP_HAVE_DESIGNATED_INITIALIZER)
246 dnl ## Check for library functions
248 dnl See Comment #Spoon
258 dnl ## Check for the tm_gmtoff field in struct tm to get the timezone diffs
259 AC_CACHE_CHECK([for tm_gmtoff in struct tm], ac_cv_struct_tm_gmtoff,
260 [AC_TRY_COMPILE([#include <sys/types.h>
261 #include <time.h>], [struct tm tm; tm.tm_gmtoff;],
262 ac_cv_struct_tm_gmtoff=yes, ac_cv_struct_tm_gmtoff=no)])
263 if test "$ac_cv_struct_tm_gmtoff" = "yes"; then
264 AC_DEFINE(HAVE_GMTOFF)
267 dnl ## Set up any appropriate OS-specific environment variables for apachectl
271 # for 32-bit builds, increase MAXDATA to allow lots of threads
272 if test x$OBJECT_MODE != x64; then
273 OS_SPECIFIC_VARS="set LDR_CNTRL=\"MAXDATA=0x80000000\" ; export LDR_CNTRL ;"
275 OS_SPECIFIC_VARS="$OS_SPECIFIC_VARS set AIXTHREAD_SCOPE=S ; export AIXTHREAD_SCOPE"
278 OS_SPECIFIC_VARS="export _CEE_RUNOPTS=\"STACK(,,ANY)\" ; export _EDC_ADD_ERRNO2=1"
284 AC_ARG_WITH(port,APACHE_HELP_STRING(--with-port=PORT,Port on which to listen (default is 80)),
285 [if test "$withval" = "yes"; then AC_MSG_ERROR('option --with-port requires a value (the TCP port number)'); else PORT="$withval"; fi],
288 AC_ARG_ENABLE(maintainer-mode,APACHE_HELP_STRING(--enable-maintainer-mode,Turn on debugging and compile time warnings),
290 APR_ADDTO(CPPFLAGS, -DAP_DEBUG)
293 prefix="$orig_prefix"
294 APACHE_ENABLE_MODULES
296 dnl reading config stubs
297 esyscmd(./build/config-stubs .)
299 APACHE_SUBST(progname)
300 APACHE_SUBST(MPM_LIB)
303 APACHE_SUBST(BUILTIN_LIBS)
304 APACHE_SUBST(SHLIBPATH_VAR)
305 APACHE_SUBST(OS_SPECIFIC_VARS)
307 PRE_SHARED_CMDS='echo ""'
308 POST_SHARED_CMDS='echo ""'
310 dnl apache_need_shared tells us if Apache modules are being built as DSOs
312 if test "$apache_need_shared" = "yes"; then
313 if test -f $ac_aux_dir/ltconfig; then
314 $SHELL $ac_aux_dir/ltconfig --output=shlibtool --disable-static --srcdir=$ac_aux_dir --cache-file=./config.cache $ac_aux_dir/ltmain.sh
316 shared_build="shared-build"
319 dnl enable_so tells us if *any* modules can be built as DSOs
321 if test "$enable_so" = "yes"; then
324 HTTPD_LDFLAGS="$HTTPD_LDFLAGS -Wl,-uXML_Parse -Wl,-bE:$abs_builddir/server/httpd.exp"
325 SH_LDFLAGS="$SH_LDFLAGS \$(EXTRA_LDFLAGS) \$(EXTRA_LIBS)"
326 UTIL_LDFLAGS="$UTIL_LDFLAGS -Wl,-uXML_Parse"
329 SH_LDFLAGS='$(top_builddir)/_APP_'
330 PRE_SHARED_CMDS='ln -s $(top_builddir)/httpd $(top_builddir)/_APP_'
331 POST_SHARED_CMDS='rm $(top_builddir)/_APP_'
334 HTTPD_LDFLAGS="$HTTPD_LDFLAGS --main=$abs_srcdir/server/main.o --core-dll=$abs_srcdir/apachecore.dll"
335 SH_LDFLAGS="$SH_LDFLAGS --core-dll=$abs_srcdir/apachecore.dll"
339 APACHE_SUBST(PRE_SHARED_CMDS)
340 APACHE_SUBST(POST_SHARED_CMDS)
341 APACHE_SUBST(shared_build)
343 AC_ARG_WITH(program-name,
344 APACHE_HELP_STRING(--with-program-name,alternate executable name),[
345 progname="$withval" ], [
349 AC_ARG_WITH(suexec-bin,
350 APACHE_HELP_STRING(--with-suexec-bin,Path to suexec binary),[
351 AC_DEFINE_UNQUOTED(SUEXEC_BIN, "$withval", [Path to suexec binary] )
354 AC_ARG_WITH(suexec-caller,
355 APACHE_HELP_STRING(--with-suexec-caller,User allowed to call SuExec),[
356 AC_DEFINE_UNQUOTED(AP_HTTPD_USER, "$withval", [User allowed to call SuExec] ) ] )
358 AC_ARG_WITH(suexec-userdir,
359 APACHE_HELP_STRING(--with-suexec-userdir,User subdirectory),[
360 AC_DEFINE_UNQUOTED(AP_USERDIR_SUFFIX, "$withval", [User subdirectory] ) ] )
362 AC_ARG_WITH(suexec-docroot,
363 APACHE_HELP_STRING(--with-suexec-docroot,SuExec root directory),[
364 AC_DEFINE_UNQUOTED(AP_DOC_ROOT, "$withval", [SuExec root directory] ) ] )
366 AC_ARG_WITH(suexec-uidmin,
367 APACHE_HELP_STRING(--with-suexec-uidmin,Minimal allowed UID),[
368 AC_DEFINE_UNQUOTED(AP_UID_MIN, $withval, [Minimum allowed UID] ) ] )
370 AC_ARG_WITH(suexec-gidmin,
371 APACHE_HELP_STRING(--with-suexec-gidmin,Minimal allowed GID),[
372 AC_DEFINE_UNQUOTED(AP_GID_MIN, $withval, [Minimum allowed GID] ) ] )
374 AC_ARG_WITH(suexec-logfile,
375 APACHE_HELP_STRING(--with-suexec-logfile,Set the logfile),[
376 AC_DEFINE_UNQUOTED(AP_LOG_EXEC, "$withval", [SuExec log file] ) ] )
378 AC_ARG_WITH(suexec-safepath,
379 APACHE_HELP_STRING(--with-suexec-safepath,Set the safepath),[
380 AC_DEFINE_UNQUOTED(AP_SAFE_PATH, "$withval", [safe shell path for SuExec] ) ] )
382 AC_ARG_WITH(suexec-umask,
383 APACHE_HELP_STRING(--with-suexec-umask,umask for suexec'd process),[
384 AC_DEFINE_UNQUOTED(AP_SUEXEC_UMASK, 0$withval, [umask for suexec'd process] ) ] )
386 dnl AP_LIBS specifies the actual libraries. note we have some required libs.
387 AP_LIBS="$abs_builddir/srclib/pcre/libpcre.la $abs_builddir/srclib/apr-util/libaprutil.la $AP_LIBS"
389 dnl APR should go after the other libs, so the right symbols can be picked up
390 AP_LIBS="$AP_LIBS $abs_builddir/srclib/apr/libapr.la"
391 APACHE_SUBST(AP_LIBS)
393 AC_DEFINE(AP_USING_AUTOCONF, 1,
394 [Using autoconf to configure Apache])
396 if test "$SINGLE_LISTEN_UNSERIALIZED_ACCEPT" = "1"; then
397 AC_DEFINE(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, 1,
398 [This platform doesn't suffer from the thundering herd problem])
401 AC_DEFINE_UNQUOTED(AP_SIG_GRACEFUL, SIG$AP_SIG_GRACEFUL, [Signal used to gracefully restart])
402 AC_DEFINE_UNQUOTED(AP_SIG_GRACEFUL_STRING, "SIG$AP_SIG_GRACEFUL", [Signal used to gracefully restart (as a quoted string)])
403 AC_DEFINE_UNQUOTED(AP_SIG_GRACEFUL_SHORT, $AP_SIG_GRACEFUL, [Signal used to gracefully restart (without SIG prefix)])
404 AP_SIG_GRACEFUL_SHORT=$AP_SIG_GRACEFUL
405 AP_SIG_GRACEFUL=SIG$AP_SIG_GRACEFUL_SHORT
406 AC_SUBST(AP_SIG_GRACEFUL)
407 AC_SUBST(AP_SIG_GRACEFUL_STRING)
408 AC_SUBST(AP_SIG_GRACEFUL_SHORT)
410 dnl check for endianness
411 if test "$cross_compiling" = "no"; then
414 AC_DEFINE(AP_UNKNOWN_BYTE_ORDER,1,
415 [byte order is unknown due to cross-compilation])
418 APACHE_FAST_OUTPUT(Makefile modules/Makefile srclib/Makefile)
419 APACHE_FAST_OUTPUT(os/beos/Makefile os/os2/Makefile os/Makefile)
420 APACHE_FAST_OUTPUT(os/unix/Makefile server/Makefile)
421 APACHE_FAST_OUTPUT(support/Makefile srclib/pcre/Makefile)
423 if test -d ./test; then
424 APACHE_FAST_OUTPUT(test/Makefile)
427 dnl get the exported vars from APRUTIL
428 . ./srclib/apr-util/export_vars.sh
429 APR_ADDTO(LIBS, $APRUTIL_EXPORT_LIBS)
430 APR_ADDTO(INCLUDES, $APRUTIL_EXPORT_INCLUDES)
431 APR_ADDTO(LDFLAGS, $APRUTIL_LDFLAGS)
432 AP_LIBS="$AP_LIBS $LIBTOOL_LIBS"
434 dnl ## Finalize the variables
435 echo $ac_n "${nl}Restore user-defined environment settings...${nl}"
437 APR_RESTORE_THE_ENVIRONMENT(CPPFLAGS, EXTRA_)
438 APR_RESTORE_THE_ENVIRONMENT(CFLAGS, EXTRA_)
439 APR_RESTORE_THE_ENVIRONMENT(CXXFLAGS, EXTRA_)
440 APR_RESTORE_THE_ENVIRONMENT(LDFLAGS, EXTRA_)
441 APR_RESTORE_THE_ENVIRONMENT(LIBS, EXTRA_)
442 APR_RESTORE_THE_ENVIRONMENT(INCLUDES, EXTRA_)
444 echo $ac_n "${nl}Construct makefiles and header files...${nl}"
446 APACHE_GEN_CONFIG_VARS
448 dnl ## Build modules.c
450 echo $MODLIST | $AWK -f $srcdir/build/build-modules-c.awk > modules.c
452 APR_EXPAND_VAR(ap_prefix, $prefix)
453 AC_DEFINE_UNQUOTED(HTTPD_ROOT, "${ap_prefix}",
454 [Root directory of the Apache install area])
455 APR_EXPAND_VAR(ap_sysconfdir, $sysconfdir)
456 APR_PATH_RELATIVE(rel_sysconfdir, $ap_sysconfdir, $prefix)
457 AC_DEFINE_UNQUOTED(SERVER_CONFIG_FILE, "${rel_sysconfdir}/${progname}.conf",
458 [Location of the config file, relative to the Apache root directory])
459 AC_DEFINE_UNQUOTED(APACHE_MPM_DIR, "$MPM_DIR",
460 [Location of the source for the current MPM])
462 perlbin=`$ac_aux_dir/PrintPath perl`
463 if test "x$perlbin" = "x"; then
464 perlbin="/replace/with/path/to/perl/interpreter"
468 dnl If we are running on BSD/OS, we need to use the BSD .include syntax.
473 # Check whether they've installed GNU make
474 if make --version > /dev/null 2>&1; then
482 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],[