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 disable_shared="--disable-shared"
61 echo $ac_n "${nl}Configuring Apache Portable Runtime library ...${nl}"
63 APR_SUBDIR_CONFIG(srclib/apr, "$apache_apr_flags --prefix=$prefix $disable_shared")
65 echo $ac_n "${nl}Configuring Apache Portable Runtime Utility library...${nl}"
67 APR_SUBDIR_CONFIG(srclib/apr-util, "--with-apr=../apr --prefix=$prefix $disable_shared")
69 echo $ac_n "${nl}Configuring PCRE regular expression library ...${nl}"
71 APR_SUBDIR_CONFIG(srclib/pcre, "--prefix=$prefix")
73 echo $ac_n "${nl}Configuring Apache httpd ...${nl}"
75 echo $ac_n "obtaining flag settings from the sub-configures...${nl}"
76 . ./srclib/apr/APRVARS
78 dnl Now that we have APR's EXTRA_flags in our environment, move them over
79 dnl to the normal variables to avoid duplications and use them for testing.
80 dnl We ignore EXTRA_INCLUDES because our own includes will encompass them.
82 APR_ADDTO(CFLAGS, $EXTRA_CFLAGS)
83 APR_ADDTO(CPPFLAGS, $EXTRA_CPPFLAGS)
84 APR_ADDTO(LDFLAGS, $EXTRA_LDFLAGS)
85 APR_ADDTO(LIBS, $EXTRA_LIBS)
92 dnl Absolute source/build directory
93 abs_srcdir=`(cd $srcdir && pwd)`
96 dnl If the source dir is not equal to the build dir,
97 dnl then we are running in VPATH mode.
99 if test "$abs_builddir" != "$abs_srcdir"; then
101 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])
103 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])
106 echo $ac_n "${nl}Applying OS-specific hints for httpd ...${nl}"
110 # Use a custom made libtool replacement
111 echo "using aplibtool"
112 LIBTOOL="$abs_srcdir/srclib/apr/build/aplibtool"
113 SH_LIBTOOL="$LIBTOOL --shared --export-all"
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"
180 APR_SETVAR(APACHE_MPM, [prefork])
181 APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1])
186 dnl Process command line arguments. This is done early in the process so the
187 dnl user can get feedback quickly in case of an error.
189 dnl ### need to move some of the arguments "up here"
191 dnl ## Check for programs
199 AC_CHECK_TOOL(RANLIB, ranlib, true)
200 dnl AC_PATH_PROG(PERL_PATH, perl)
202 dnl various OS checks that apparently set required flags
207 dnl ## Check for libraries
209 dnl ## Check for header files
211 dnl I think these are just used all over the place, so just check for
212 dnl them at the base of the tree. If some are specific to a single
213 dnl directory, they should be moved (Comment #Spoon)
215 dnl Regarding standard header files: AC_HEADER_STDC doesn't set symbols
216 dnl HAVE_STRING_H, HAVE_STDLIB_H, etc., so those are checked for
217 dnl explicitly so that the normal HAVE_xxx_H symbol is defined.
233 dnl ## Check for typedefs, structures, and compiler characteristics.
236 if test "$ac_cv_prog_gcc" = "yes"; then
237 APR_ADDTO(NOTEST_CPPFLAGS,-DAP_HAVE_DESIGNATED_INITIALIZER)
240 dnl ## Check for library functions
242 dnl See Comment #Spoon
251 AC_ARG_WITH(port,APACHE_HELP_STRING(--with-port=PORT,Port on which to listen (default is 80)),
252 [if test "$withval" = "yes"; then AC_MSG_ERROR('option --with-port requires a value (the TCP port number)'); else PORT="$withval"; fi],
255 AC_ARG_ENABLE(maintainer-mode,APACHE_HELP_STRING(--enable-maintainer-mode,Turn on debugging and compile time warnings),
257 APR_ADDTO(CPPFLAGS, -DAP_DEBUG)
261 prefix="$orig_prefix"
262 APACHE_ENABLE_MODULES
264 dnl reading config stubs
265 esyscmd(./build/config-stubs .)
267 APACHE_SUBST(progname)
268 APACHE_SUBST(MPM_LIB)
271 APACHE_SUBST(BUILTIN_LIBS)
273 PRE_SHARED_CMDS='echo ""'
274 POST_SHARED_CMDS='echo ""'
276 if test "$apache_need_shared" = "yes"; then
277 if test -f $ac_aux_dir/ltconfig; then
278 $SHELL $ac_aux_dir/ltconfig --output=shlibtool --disable-static --srcdir=$ac_aux_dir --cache-file=./config.cache $ac_aux_dir/ltmain.sh
282 HTTPD_LDFLAGS="$HTTPD_LDFLAGS -Wl,-bE:$abs_builddir/server/httpd.exp"
283 SH_LDFLAGS="$SH_LDFLAGS -Wl,-bI:$abs_builddir/server/httpd.exp"
286 SH_LDFLAGS='$(top_builddir)/_APP_'
287 PRE_SHARED_CMDS='ln -s $(top_builddir)/httpd $(top_builddir)/_APP_'
288 POST_SHARED_CMDS='rm $(top_builddir)/_APP_'
291 HTTPD_LDFLAGS="$HTTPD_LDFLAGS --main=$abs_srcdir/server/main.o --core-dll=$abs_srcdir/apachecore.dll"
292 SH_LDFLAGS="$SH_LDFLAGS --core-dll=$abs_srcdir/apachecore.dll"
294 shared_build="shared-build"
297 APACHE_SUBST(PRE_SHARED_CMDS)
298 APACHE_SUBST(POST_SHARED_CMDS)
299 APACHE_SUBST(shared_build)
301 AC_ARG_WITH(program-name,
302 APACHE_HELP_STRING(--with-program-name,alternate executable name),[
303 progname="$withval" ], [
307 AC_ARG_WITH(suexec-caller,
308 APACHE_HELP_STRING(--with-suexec-caller,User allowed to call SuExec),[
309 AC_DEFINE_UNQUOTED(AP_HTTPD_USER, "$withval", [User allowed to call SuExec] ) ] )
311 AC_ARG_WITH(suexec-userdir,
312 APACHE_HELP_STRING(--with-suexec-userdir,User subdirectory),[
313 AC_DEFINE_UNQUOTED(AP_USERDIR_SUFFIX, "$withval", [User subdirectory] ) ] )
315 AC_ARG_WITH(suexec-docroot,
316 APACHE_HELP_STRING(--with-suexec-docroot,SuExec root directory),[
317 AC_DEFINE_UNQUOTED(AP_DOC_ROOT, "$withval", [SuExec root directory] ) ] )
319 AC_ARG_WITH(suexec-uidmin,
320 APACHE_HELP_STRING(--with-suexec-uidmin,Minimal allowed UID),[
321 AC_DEFINE_UNQUOTED(AP_UID_MIN, $withval, [Minimum allowed UID] ) ] )
323 AC_ARG_WITH(suexec-gidmin,
324 APACHE_HELP_STRING(--with-suexec-gidmin,Minimal allowed GID),[
325 AC_DEFINE_UNQUOTED(AP_GID_MIN, $withval, [Minimum allowed GID] ) ] )
327 AC_ARG_WITH(suexec-logfile,
328 APACHE_HELP_STRING(--with-suexec-logfile,Set the logfile),[
329 AC_DEFINE_UNQUOTED(AP_LOG_EXEC, "$withval", [SuExec log file] ) ] )
331 AC_ARG_WITH(suexec-safepath,
332 APACHE_HELP_STRING(--with-suexec-safepath,Set the safepath),[
333 AC_DEFINE_UNQUOTED(AP_SAFE_PATH, "$withval", [safe shell path for SuExec] ) ] )
335 AC_ARG_WITH(suexec-umask,
336 APACHE_HELP_STRING(--with-suexec-umask,umask for suexec'd process),[
337 AC_DEFINE_UNQUOTED(AP_SUEXEC_UMASK, 0$withval, [umask for suexec'd process] ) ] )
339 dnl AP_LIB_DIRS specifies the additional libs from srclib/ that we need
340 dnl AP_LIBS specifies the actual libraries. note we have some required libs.
341 AP_LIBS="$abs_builddir/srclib/pcre/libpcre.la $abs_builddir/srclib/apr-util/libaprutil.la $AP_LIBS"
343 dnl APR should go after the other libs, so the right symbols can be picked up
344 AP_LIBS="$AP_LIBS $abs_builddir/srclib/apr/libapr.la"
345 APACHE_SUBST(AP_LIB_DIRS)
346 APACHE_SUBST(AP_LIBS)
348 AC_DEFINE(AP_USING_AUTOCONF, 1,
349 [Using autoconf to configure Apache])
351 if test "$SINGLE_LISTEN_UNSERIALIZED_ACCEPT" = "1"; then
352 AC_DEFINE(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, 1,
353 [This platform doesn't suffer from the thundering herd problem])
356 AC_DEFINE_UNQUOTED(AP_SIG_GRACEFUL, SIG$AP_SIG_GRACEFUL, [Signal used to gracefully restart])
357 AC_DEFINE_UNQUOTED(AP_SIG_GRACEFUL_STRING, "SIG$AP_SIG_GRACEFUL", [Signal used to gracefully restart (as a quoted string)])
358 AC_DEFINE_UNQUOTED(AP_SIG_GRACEFUL_SHORT, $AP_SIG_GRACEFUL, [Signal used to gracefully restart (without SIG prefix)])
359 AP_SIG_GRACEFUL_SHORT=$AP_SIG_GRACEFUL
360 AP_SIG_GRACEFUL=SIG$AP_SIG_GRACEFUL_SHORT
361 AC_SUBST(AP_SIG_GRACEFUL)
362 AC_SUBST(AP_SIG_GRACEFUL_STRING)
363 AC_SUBST(AP_SIG_GRACEFUL_SHORT)
365 dnl check for endianness
366 if test "$cross_compiling" = "no"; then
369 AC_DEFINE(AP_UNKNOWN_BYTE_ORDER,1,
370 [byte order is unknown due to cross-compilation])
373 APACHE_FAST_OUTPUT(Makefile modules/Makefile srclib/Makefile)
374 APACHE_FAST_OUTPUT(os/beos/Makefile os/os2/Makefile os/Makefile)
375 APACHE_FAST_OUTPUT(os/unix/Makefile server/Makefile)
376 APACHE_FAST_OUTPUT(support/Makefile srclib/pcre/Makefile)
377 for i in $AP_LIB_DIRS; do
378 APACHE_FAST_OUTPUT(srclib/$i/Makefile)
381 if test -d ./test; then
382 APACHE_FAST_OUTPUT(test/Makefile)
385 dnl get the exported vars from APRUTIL
386 . ./srclib/apr-util/export_vars.sh
387 APR_ADDTO(LIBS, $APRUTIL_EXPORT_LIBS)
388 AP_LIBS="$AP_LIBS $LIBTOOL_LIBS"
390 dnl ## Finalize the variables
391 echo $ac_n "${nl}Restore user-defined environment settings...${nl}"
393 APR_RESTORE_THE_ENVIRONMENT(CPPFLAGS, EXTRA_)
394 APR_RESTORE_THE_ENVIRONMENT(CFLAGS, EXTRA_)
395 APR_RESTORE_THE_ENVIRONMENT(CXXFLAGS, EXTRA_)
396 APR_RESTORE_THE_ENVIRONMENT(LDFLAGS, EXTRA_)
397 APR_RESTORE_THE_ENVIRONMENT(LIBS, EXTRA_)
398 APR_RESTORE_THE_ENVIRONMENT(INCLUDES, EXTRA_)
400 echo $ac_n "${nl}Construct makefiles and header files...${nl}"
402 APACHE_GEN_CONFIG_VARS
404 dnl ## Build modules.c
406 echo $MODLIST | $AWK -f $srcdir/build/build-modules-c.awk > modules.c
408 AC_DEFINE_UNQUOTED(HTTPD_ROOT, "$prefix",
409 [Root directory of the Apache install area])
410 AC_DEFINE_UNQUOTED(SERVER_CONFIG_FILE, "conf/$progname.conf",
411 [Location of the config file, relative to the Apache root directory])
412 AC_DEFINE_UNQUOTED(APACHE_MPM_DIR, "$MPM_DIR",
413 [Location of the source for the current MPM])
415 perlbin=`$ac_aux_dir/PrintPath perl`
416 if test "x$perlbin" = "x"; then
417 perlbin="/replace/with/path/to/perl/interpreter"
421 dnl If we are running on BSD/OS, we need to use the BSD .include syntax.
426 # Check whether they've installed GNU make
427 if make --version > /dev/null 2>&1; then
435 AC_OUTPUT($APACHE_OUTPUT_FILES support/apxs support/apachectl support/dbmmanage support/log_server_status support/logresolve.pl support/phf_abuse_log.cgi support/split-logfile build/rules.mk,,[