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 Save user-defined environment settings for later restoration
23 APR_SAVE_THE_ENVIRONMENT(CPPFLAGS)
24 APR_SAVE_THE_ENVIRONMENT(CFLAGS)
25 APR_SAVE_THE_ENVIRONMENT(CXXFLAGS)
26 APR_SAVE_THE_ENVIRONMENT(LDFLAGS)
27 APR_SAVE_THE_ENVIRONMENT(LIBS)
28 APR_SAVE_THE_ENVIRONMENT(INCLUDES)
30 dnl Generate ./config.nice for reproducing runs of configure
32 APR_CONFIG_NICE(config.nice)
37 dnl XXX we can't just use AC_PREFIX_DEFAULT because that isn't subbed in
38 dnl by configure until it is too late. Is that how it should be or not?
39 dnl Something seems broken here.
40 AC_PREFIX_DEFAULT(/usr/local/apache2)
41 test "$prefix" = "NONE" && prefix='/usr/local/apache2'
42 test "$exec_prefix" = "NONE" && exec_prefix='${prefix}'
44 dnl ## Run configure for packages Apache uses
46 dnl shared library support for these packages doesn't currently
47 dnl work on some platforms
53 echo $ac_n "${nl}Configuring Apache Portable Runtime library ...${nl}"
55 APR_SUBDIR_CONFIG(srclib/apr, "$apache_apr_flags --prefix=$prefix")
57 echo $ac_n "${nl}Configuring Apache Portable Runtime Utility library...${nl}"
59 APR_SUBDIR_CONFIG(srclib/apr-util, "--with-apr=../apr --prefix=$prefix")
61 echo $ac_n "${nl}Configuring PCRE regular expression library ...${nl}"
63 APR_SUBDIR_CONFIG(srclib/pcre, "--prefix=$prefix")
65 echo $ac_n "${nl}Configuring Apache httpd ...${nl}"
67 echo $ac_n "obtaining flag settings from the sub-configures...${nl}"
68 . ./srclib/apr/APRVARS
70 dnl Now that we have APR's EXTRA_flags in our environment, move them over
71 dnl to the normal variables to avoid duplications and use them for testing.
72 dnl We ignore EXTRA_INCLUDES because our own includes will encompass them.
74 APR_ADDTO(CFLAGS, $EXTRA_CFLAGS)
75 APR_ADDTO(CPPFLAGS, $EXTRA_CPPFLAGS)
76 APR_ADDTO(LDFLAGS, $EXTRA_LDFLAGS)
77 APR_ADDTO(LIBS, $EXTRA_LIBS)
84 dnl Absolute source/build directory
85 abs_srcdir=`(cd $srcdir && pwd)`
88 dnl If the source dir is not equal to the build dir,
89 dnl then we are running in VPATH mode.
91 if test "$abs_builddir" != "$abs_srcdir"; then
93 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])
95 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])
98 echo $ac_n "${nl}Applying OS-specific hints for httpd ...${nl}"
102 # Use a custom made libtool replacement
103 echo "using aplibtool"
104 LIBTOOL="$abs_srcdir/srclib/apr/build/aplibtool"
105 SH_LIBTOOL="$LIBTOOL --shared --export-all"
106 SH_LIBS="\$(ALL_LIBS)"
107 CORE_IMPLIB_FILE="ApacheCoreOS2.la"
108 CORE_IMPLIB="$abs_srcdir/server/$CORE_IMPLIB_FILE"
110 other_targets="$other_targets os2core"
111 INSTALL_PROG_FLAGS="-e .exe"
116 if test "x$LTFLAGS" = "x"; then
119 LIBTOOL='$(SHELL) $(top_builddir)/srclib/apr/libtool $(LTFLAGS)'
120 libtoolversion=`$abs_builddir/srclib/apr/libtool --version`
121 case $libtoolversion in
123 SH_LIBTOOL='$(LIBTOOL)'
124 SHLTCFLAGS="-prefer-pic"
125 LTCFLAGS="-prefer-non-pic -static"
128 SH_LIBTOOL='$(SHELL) $(top_builddir)/shlibtool $(LTFLAGS)'
135 APACHE_SUBST(SHLTCFLAGS)
136 APACHE_SUBST(LTCFLAGS)
142 APR_SETVAR(APACHE_MPM, [prefork])
143 APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1])
146 APR_SETVAR(APACHE_MPM, [beos])
147 APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1])
150 APR_SETVAR(APACHE_MPM, [mpmt_os2])
151 APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1])
156 AP_SIG_GRACEFUL=WINCH
159 APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1])
165 *486-*-bsdi* | *-netbsd* | *-freebsd* | *-apple-darwin* | *-dec-osf* | *-qnx)
166 APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1])
169 dnl This is a hack -- we should be using AC_TRY_RUN instead
170 ap_platform_runtime_link_flag="-R"
173 APR_SETVAR(APACHE_MPM, [prefork])
174 APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1])
179 dnl Process command line arguments. This is done early in the process so the
180 dnl user can get feedback quickly in case of an error.
182 dnl ### need to move some of the arguments "up here"
184 dnl ## Check for programs
192 AC_CHECK_TOOL(RANLIB, ranlib, true)
193 dnl AC_PATH_PROG(PERL_PATH, perl)
195 dnl various OS checks that apparently set required flags
200 dnl ## Check for libraries
202 dnl ## Check for header files
204 dnl I think these are just used all over the place, so just check for
205 dnl them at the base of the tree. If some are specific to a single
206 dnl directory, they should be moved (Comment #Spoon)
208 dnl Regarding standard header files: AC_HEADER_STDC doesn't set symbols
209 dnl HAVE_STRING_H, HAVE_STDLIB_H, etc., so those are checked for
210 dnl explicitly so that the normal HAVE_xxx_H symbol is defined.
226 dnl ## Check for typedefs, structures, and compiler characteristics.
229 if test "$ac_cv_prog_gcc" = "yes"; then
230 APR_ADDTO(NOTEST_CPPFLAGS,-DAP_HAVE_DESIGNATED_INITIALIZER)
233 dnl ## Check for library functions
235 dnl See Comment #Spoon
245 dnl ## Check for the tm_gmtoff field in struct tm to get the timezone diffs
246 AC_CACHE_CHECK([for tm_gmtoff in struct tm], ac_cv_struct_tm_gmtoff,
247 [AC_TRY_COMPILE([#include <sys/types.h>
248 #include <time.h>], [struct tm tm; tm.tm_gmtoff;],
249 ac_cv_struct_tm_gmtoff=yes, ac_cv_struct_tm_gmtoff=no)])
250 if test "$ac_cv_struct_tm_gmtoff" = "yes"; then
251 AC_DEFINE(HAVE_GMTOFF)
254 dnl ## Set up any appropriate OS-specific environment variables for apachectl
258 # for 32-bit builds, increase MAXDATA to allow lots of threads
259 if test x$COMPILE_MODE != 64; then
260 OS_SPECIFIC_VARS="set LDR_CNTRL=\"MAXDATA=0x80000000\" ; export LDR_CNTRL ;"
262 OS_SPECIFIC_VARS="$OS_SPECIFIC_VARS set AIXTHREAD_SCOPE=S ; export AIXTHREAD_SCOPE"
265 OS_SPECIFIC_VARS="export _CEE_RUNOPTS=\"STACK(,,ANY)\" ; export _EDC_ADD_ERRNO2=1"
271 AC_ARG_WITH(port,APACHE_HELP_STRING(--with-port=PORT,Port on which to listen (default is 80)),
272 [if test "$withval" = "yes"; then AC_MSG_ERROR('option --with-port requires a value (the TCP port number)'); else PORT="$withval"; fi],
275 AC_ARG_ENABLE(maintainer-mode,APACHE_HELP_STRING(--enable-maintainer-mode,Turn on debugging and compile time warnings),
277 APR_ADDTO(CPPFLAGS, -DAP_DEBUG)
281 prefix="$orig_prefix"
282 APACHE_ENABLE_MODULES
284 dnl reading config stubs
285 esyscmd(./build/config-stubs .)
287 APACHE_SUBST(progname)
288 APACHE_SUBST(MPM_LIB)
291 APACHE_SUBST(BUILTIN_LIBS)
292 APACHE_SUBST(SHLIBPATH_VAR)
293 APACHE_SUBST(OS_SPECIFIC_VARS)
295 PRE_SHARED_CMDS='echo ""'
296 POST_SHARED_CMDS='echo ""'
298 dnl apache_need_shared tells us if Apache modules are being built as DSOs
300 if test "$apache_need_shared" = "yes"; then
301 if test -f $ac_aux_dir/ltconfig; then
302 $SHELL $ac_aux_dir/ltconfig --output=shlibtool --disable-static --srcdir=$ac_aux_dir --cache-file=./config.cache $ac_aux_dir/ltmain.sh
304 shared_build="shared-build"
307 dnl enable_so tells us if *any* modules can be built as DSOs
309 if test "$enable_so" = "yes"; then
312 HTTPD_LDFLAGS="$HTTPD_LDFLAGS -Wl,-uXML_Parse -Wl,-bE:$abs_builddir/server/httpd.exp"
313 SH_LDFLAGS="$SH_LDFLAGS \$(EXTRA_LDFLAGS) \$(EXTRA_LIBS)"
314 UTIL_LDFLAGS="$UTIL_LDFLAGS -Wl,-uXML_Parse"
317 SH_LDFLAGS='$(top_builddir)/_APP_'
318 PRE_SHARED_CMDS='ln -s $(top_builddir)/httpd $(top_builddir)/_APP_'
319 POST_SHARED_CMDS='rm $(top_builddir)/_APP_'
322 HTTPD_LDFLAGS="$HTTPD_LDFLAGS --main=$abs_srcdir/server/main.o --core-dll=$abs_srcdir/apachecore.dll"
323 SH_LDFLAGS="$SH_LDFLAGS --core-dll=$abs_srcdir/apachecore.dll"
327 APACHE_SUBST(PRE_SHARED_CMDS)
328 APACHE_SUBST(POST_SHARED_CMDS)
329 APACHE_SUBST(shared_build)
331 AC_ARG_WITH(program-name,
332 APACHE_HELP_STRING(--with-program-name,alternate executable name),[
333 progname="$withval" ], [
337 AC_ARG_WITH(suexec-bin,
338 APACHE_HELP_STRING(--with-suexec-bin,Path to suexec binary),[
339 AC_DEFINE_UNQUOTED(SUEXEC_BIN, "$withval", [Path to suexec binary] )
342 AC_ARG_WITH(suexec-caller,
343 APACHE_HELP_STRING(--with-suexec-caller,User allowed to call SuExec),[
344 AC_DEFINE_UNQUOTED(AP_HTTPD_USER, "$withval", [User allowed to call SuExec] ) ] )
346 AC_ARG_WITH(suexec-userdir,
347 APACHE_HELP_STRING(--with-suexec-userdir,User subdirectory),[
348 AC_DEFINE_UNQUOTED(AP_USERDIR_SUFFIX, "$withval", [User subdirectory] ) ] )
350 AC_ARG_WITH(suexec-docroot,
351 APACHE_HELP_STRING(--with-suexec-docroot,SuExec root directory),[
352 AC_DEFINE_UNQUOTED(AP_DOC_ROOT, "$withval", [SuExec root directory] ) ] )
354 AC_ARG_WITH(suexec-uidmin,
355 APACHE_HELP_STRING(--with-suexec-uidmin,Minimal allowed UID),[
356 AC_DEFINE_UNQUOTED(AP_UID_MIN, $withval, [Minimum allowed UID] ) ] )
358 AC_ARG_WITH(suexec-gidmin,
359 APACHE_HELP_STRING(--with-suexec-gidmin,Minimal allowed GID),[
360 AC_DEFINE_UNQUOTED(AP_GID_MIN, $withval, [Minimum allowed GID] ) ] )
362 AC_ARG_WITH(suexec-logfile,
363 APACHE_HELP_STRING(--with-suexec-logfile,Set the logfile),[
364 AC_DEFINE_UNQUOTED(AP_LOG_EXEC, "$withval", [SuExec log file] ) ] )
366 AC_ARG_WITH(suexec-safepath,
367 APACHE_HELP_STRING(--with-suexec-safepath,Set the safepath),[
368 AC_DEFINE_UNQUOTED(AP_SAFE_PATH, "$withval", [safe shell path for SuExec] ) ] )
370 AC_ARG_WITH(suexec-umask,
371 APACHE_HELP_STRING(--with-suexec-umask,umask for suexec'd process),[
372 AC_DEFINE_UNQUOTED(AP_SUEXEC_UMASK, 0$withval, [umask for suexec'd process] ) ] )
374 dnl AP_LIBS specifies the actual libraries. note we have some required libs.
375 AP_LIBS="$abs_builddir/srclib/pcre/libpcre.la $abs_builddir/srclib/apr-util/libaprutil.la $AP_LIBS"
377 dnl APR should go after the other libs, so the right symbols can be picked up
378 AP_LIBS="$AP_LIBS $abs_builddir/srclib/apr/libapr.la"
379 APACHE_SUBST(AP_LIBS)
381 AC_DEFINE(AP_USING_AUTOCONF, 1,
382 [Using autoconf to configure Apache])
384 if test "$SINGLE_LISTEN_UNSERIALIZED_ACCEPT" = "1"; then
385 AC_DEFINE(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, 1,
386 [This platform doesn't suffer from the thundering herd problem])
389 AC_DEFINE_UNQUOTED(AP_SIG_GRACEFUL, SIG$AP_SIG_GRACEFUL, [Signal used to gracefully restart])
390 AC_DEFINE_UNQUOTED(AP_SIG_GRACEFUL_STRING, "SIG$AP_SIG_GRACEFUL", [Signal used to gracefully restart (as a quoted string)])
391 AC_DEFINE_UNQUOTED(AP_SIG_GRACEFUL_SHORT, $AP_SIG_GRACEFUL, [Signal used to gracefully restart (without SIG prefix)])
392 AP_SIG_GRACEFUL_SHORT=$AP_SIG_GRACEFUL
393 AP_SIG_GRACEFUL=SIG$AP_SIG_GRACEFUL_SHORT
394 AC_SUBST(AP_SIG_GRACEFUL)
395 AC_SUBST(AP_SIG_GRACEFUL_STRING)
396 AC_SUBST(AP_SIG_GRACEFUL_SHORT)
398 dnl check for endianness
399 if test "$cross_compiling" = "no"; then
402 AC_DEFINE(AP_UNKNOWN_BYTE_ORDER,1,
403 [byte order is unknown due to cross-compilation])
406 APACHE_FAST_OUTPUT(Makefile modules/Makefile srclib/Makefile)
407 APACHE_FAST_OUTPUT(os/beos/Makefile os/os2/Makefile os/Makefile)
408 APACHE_FAST_OUTPUT(os/unix/Makefile server/Makefile)
409 APACHE_FAST_OUTPUT(support/Makefile srclib/pcre/Makefile)
411 if test -d ./test; then
412 APACHE_FAST_OUTPUT(test/Makefile)
415 dnl get the exported vars from APRUTIL
416 . ./srclib/apr-util/export_vars.sh
417 APR_ADDTO(LIBS, $APRUTIL_EXPORT_LIBS)
418 APR_ADDTO(INCLUDES, $APRUTIL_EXPORT_INCLUDES)
419 APR_ADDTO(LDFLAGS, $APRUTIL_LDFLAGS)
420 AP_LIBS="$AP_LIBS $LIBTOOL_LIBS"
422 dnl ## Finalize the variables
423 echo $ac_n "${nl}Restore user-defined environment settings...${nl}"
425 APR_RESTORE_THE_ENVIRONMENT(CPPFLAGS, EXTRA_)
426 APR_RESTORE_THE_ENVIRONMENT(CFLAGS, EXTRA_)
427 APR_RESTORE_THE_ENVIRONMENT(CXXFLAGS, EXTRA_)
428 APR_RESTORE_THE_ENVIRONMENT(LDFLAGS, EXTRA_)
429 APR_RESTORE_THE_ENVIRONMENT(LIBS, EXTRA_)
430 APR_RESTORE_THE_ENVIRONMENT(INCLUDES, EXTRA_)
432 echo $ac_n "${nl}Construct makefiles and header files...${nl}"
434 APACHE_GEN_CONFIG_VARS
436 dnl ## Build modules.c
438 echo $MODLIST | $AWK -f $srcdir/build/build-modules-c.awk > modules.c
440 AC_DEFINE_UNQUOTED(HTTPD_ROOT, "$prefix",
441 [Root directory of the Apache install area])
442 AC_DEFINE_UNQUOTED(SERVER_CONFIG_FILE, "conf/$progname.conf",
443 [Location of the config file, relative to the Apache root directory])
444 AC_DEFINE_UNQUOTED(APACHE_MPM_DIR, "$MPM_DIR",
445 [Location of the source for the current MPM])
447 perlbin=`$ac_aux_dir/PrintPath perl`
448 if test "x$perlbin" = "x"; then
449 perlbin="/replace/with/path/to/perl/interpreter"
453 dnl If we are running on BSD/OS, we need to use the BSD .include syntax.
458 # Check whether they've installed GNU make
459 if make --version > /dev/null 2>&1; then
467 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,,[