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 CORE_IMPLIB_FILE="ApacheCoreOS2.la"
107 CORE_IMPLIB="$abs_srcdir/server/$CORE_IMPLIB_FILE"
109 other_targets="$other_targets os2core"
110 INSTALL_PROG_FLAGS="-e .exe"
115 if test "x$LTFLAGS" = "x"; then
118 LIBTOOL='$(SHELL) $(top_builddir)/srclib/apr/libtool $(LTFLAGS)'
119 libtoolversion=`$abs_builddir/srclib/apr/libtool --version`
120 case $libtoolversion in
122 SH_LIBTOOL='$(LIBTOOL)'
123 SHLTCFLAGS="-prefer-pic"
124 LTCFLAGS="-prefer-non-pic -static"
127 SH_LIBTOOL='$(SHELL) $(top_builddir)/shlibtool $(LTFLAGS)'
134 APACHE_SUBST(SHLTCFLAGS)
135 APACHE_SUBST(LTCFLAGS)
141 APR_SETVAR(APACHE_MPM, [prefork])
142 APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1])
145 APR_SETVAR(APACHE_MPM, [beos])
146 APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1])
149 APR_SETVAR(APACHE_MPM, [mpmt_os2])
150 APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1])
155 AP_SIG_GRACEFUL=WINCH
158 APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1])
164 *486-*-bsdi* | *-netbsd* | *-freebsd* | *-apple-darwin* | *-dec-osf* | *-qnx)
165 APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1])
168 dnl This is a hack -- we should be using AC_TRY_RUN instead
169 ap_platform_runtime_link_flag="-R"
172 APR_SETVAR(APACHE_MPM, [prefork])
173 APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1])
178 dnl Process command line arguments. This is done early in the process so the
179 dnl user can get feedback quickly in case of an error.
181 dnl ### need to move some of the arguments "up here"
183 dnl ## Check for programs
191 AC_CHECK_TOOL(RANLIB, ranlib, true)
192 dnl AC_PATH_PROG(PERL_PATH, perl)
194 dnl various OS checks that apparently set required flags
199 dnl ## Check for libraries
201 dnl ## Check for header files
203 dnl I think these are just used all over the place, so just check for
204 dnl them at the base of the tree. If some are specific to a single
205 dnl directory, they should be moved (Comment #Spoon)
207 dnl Regarding standard header files: AC_HEADER_STDC doesn't set symbols
208 dnl HAVE_STRING_H, HAVE_STDLIB_H, etc., so those are checked for
209 dnl explicitly so that the normal HAVE_xxx_H symbol is defined.
225 dnl ## Check for typedefs, structures, and compiler characteristics.
228 if test "$ac_cv_prog_gcc" = "yes"; then
229 APR_ADDTO(NOTEST_CPPFLAGS,-DAP_HAVE_DESIGNATED_INITIALIZER)
232 dnl ## Check for library functions
234 dnl See Comment #Spoon
243 AC_ARG_WITH(port,APACHE_HELP_STRING(--with-port=PORT,Port on which to listen (default is 80)),
244 [if test "$withval" = "yes"; then AC_MSG_ERROR('option --with-port requires a value (the TCP port number)'); else PORT="$withval"; fi],
247 AC_ARG_ENABLE(maintainer-mode,APACHE_HELP_STRING(--enable-maintainer-mode,Turn on debugging and compile time warnings),
249 APR_ADDTO(CPPFLAGS, -DAP_DEBUG)
253 prefix="$orig_prefix"
254 APACHE_ENABLE_MODULES
256 dnl reading config stubs
257 esyscmd(./build/config-stubs .)
259 APACHE_SUBST(progname)
260 APACHE_SUBST(MPM_LIB)
263 APACHE_SUBST(BUILTIN_LIBS)
265 PRE_SHARED_CMDS='echo ""'
266 POST_SHARED_CMDS='echo ""'
268 if test "$apache_need_shared" = "yes"; then
269 if test -f $ac_aux_dir/ltconfig; then
270 $SHELL $ac_aux_dir/ltconfig --output=shlibtool --disable-static --srcdir=$ac_aux_dir --cache-file=./config.cache $ac_aux_dir/ltmain.sh
274 HTTPD_LDFLAGS="$HTTPD_LDFLAGS -Wl,-bE:$abs_builddir/server/httpd.exp"
275 SH_LDFLAGS="$SH_LDFLAGS -Wl,-bI:$abs_builddir/server/httpd.exp -Wl,-bI:$abs_builddir/srclib/apr/apr.exp -Wl,-bI:$abs_builddir/srclib/apr-util/aprutil.exp"
278 SH_LDFLAGS='$(top_builddir)/_APP_'
279 PRE_SHARED_CMDS='ln -s $(top_builddir)/httpd $(top_builddir)/_APP_'
280 POST_SHARED_CMDS='rm $(top_builddir)/_APP_'
283 HTTPD_LDFLAGS="$HTTPD_LDFLAGS --main=$abs_srcdir/server/main.o --core-dll=$abs_srcdir/apachecore.dll"
284 SH_LDFLAGS="$SH_LDFLAGS --core-dll=$abs_srcdir/apachecore.dll"
286 shared_build="shared-build"
289 APACHE_SUBST(PRE_SHARED_CMDS)
290 APACHE_SUBST(POST_SHARED_CMDS)
291 APACHE_SUBST(shared_build)
293 AC_ARG_WITH(program-name,
294 APACHE_HELP_STRING(--with-program-name,alternate executable name),[
295 progname="$withval" ], [
299 AC_ARG_WITH(suexec-bin,
300 APACHE_HELP_STRING(--with-suexec-bin,Path to suexec binary),[
301 AC_DEFINE_UNQUOTED(SUEXEC_BIN, "$withval", [Path to suexec binary] )
304 AC_ARG_WITH(suexec-caller,
305 APACHE_HELP_STRING(--with-suexec-caller,User allowed to call SuExec),[
306 AC_DEFINE_UNQUOTED(AP_HTTPD_USER, "$withval", [User allowed to call SuExec] ) ] )
308 AC_ARG_WITH(suexec-userdir,
309 APACHE_HELP_STRING(--with-suexec-userdir,User subdirectory),[
310 AC_DEFINE_UNQUOTED(AP_USERDIR_SUFFIX, "$withval", [User subdirectory] ) ] )
312 AC_ARG_WITH(suexec-docroot,
313 APACHE_HELP_STRING(--with-suexec-docroot,SuExec root directory),[
314 AC_DEFINE_UNQUOTED(AP_DOC_ROOT, "$withval", [SuExec root directory] ) ] )
316 AC_ARG_WITH(suexec-uidmin,
317 APACHE_HELP_STRING(--with-suexec-uidmin,Minimal allowed UID),[
318 AC_DEFINE_UNQUOTED(AP_UID_MIN, $withval, [Minimum allowed UID] ) ] )
320 AC_ARG_WITH(suexec-gidmin,
321 APACHE_HELP_STRING(--with-suexec-gidmin,Minimal allowed GID),[
322 AC_DEFINE_UNQUOTED(AP_GID_MIN, $withval, [Minimum allowed GID] ) ] )
324 AC_ARG_WITH(suexec-logfile,
325 APACHE_HELP_STRING(--with-suexec-logfile,Set the logfile),[
326 AC_DEFINE_UNQUOTED(AP_LOG_EXEC, "$withval", [SuExec log file] ) ] )
328 AC_ARG_WITH(suexec-safepath,
329 APACHE_HELP_STRING(--with-suexec-safepath,Set the safepath),[
330 AC_DEFINE_UNQUOTED(AP_SAFE_PATH, "$withval", [safe shell path for SuExec] ) ] )
332 AC_ARG_WITH(suexec-umask,
333 APACHE_HELP_STRING(--with-suexec-umask,umask for suexec'd process),[
334 AC_DEFINE_UNQUOTED(AP_SUEXEC_UMASK, 0$withval, [umask for suexec'd process] ) ] )
336 dnl AP_LIB_DIRS specifies the additional libs from srclib/ that we need
337 dnl AP_LIBS specifies the actual libraries. note we have some required libs.
338 AP_LIBS="$abs_builddir/srclib/pcre/libpcre.la $abs_builddir/srclib/apr-util/libaprutil.la $AP_LIBS"
340 dnl APR should go after the other libs, so the right symbols can be picked up
341 AP_LIBS="$AP_LIBS $abs_builddir/srclib/apr/libapr.la"
342 APACHE_SUBST(AP_LIB_DIRS)
343 APACHE_SUBST(AP_LIBS)
345 AC_DEFINE(AP_USING_AUTOCONF, 1,
346 [Using autoconf to configure Apache])
348 if test "$SINGLE_LISTEN_UNSERIALIZED_ACCEPT" = "1"; then
349 AC_DEFINE(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, 1,
350 [This platform doesn't suffer from the thundering herd problem])
353 AC_DEFINE_UNQUOTED(AP_SIG_GRACEFUL, SIG$AP_SIG_GRACEFUL, [Signal used to gracefully restart])
354 AC_DEFINE_UNQUOTED(AP_SIG_GRACEFUL_STRING, "SIG$AP_SIG_GRACEFUL", [Signal used to gracefully restart (as a quoted string)])
355 AC_DEFINE_UNQUOTED(AP_SIG_GRACEFUL_SHORT, $AP_SIG_GRACEFUL, [Signal used to gracefully restart (without SIG prefix)])
356 AP_SIG_GRACEFUL_SHORT=$AP_SIG_GRACEFUL
357 AP_SIG_GRACEFUL=SIG$AP_SIG_GRACEFUL_SHORT
358 AC_SUBST(AP_SIG_GRACEFUL)
359 AC_SUBST(AP_SIG_GRACEFUL_STRING)
360 AC_SUBST(AP_SIG_GRACEFUL_SHORT)
362 dnl check for endianness
363 if test "$cross_compiling" = "no"; then
366 AC_DEFINE(AP_UNKNOWN_BYTE_ORDER,1,
367 [byte order is unknown due to cross-compilation])
370 APACHE_FAST_OUTPUT(Makefile modules/Makefile srclib/Makefile)
371 APACHE_FAST_OUTPUT(os/beos/Makefile os/os2/Makefile os/Makefile)
372 APACHE_FAST_OUTPUT(os/unix/Makefile server/Makefile)
373 APACHE_FAST_OUTPUT(support/Makefile srclib/pcre/Makefile)
374 for i in $AP_LIB_DIRS; do
375 APACHE_FAST_OUTPUT(srclib/$i/Makefile)
378 if test -d ./test; then
379 APACHE_FAST_OUTPUT(test/Makefile)
382 dnl get the exported vars from APRUTIL
383 . ./srclib/apr-util/export_vars.sh
384 APR_ADDTO(LIBS, $APRUTIL_EXPORT_LIBS)
385 AP_LIBS="$AP_LIBS $LIBTOOL_LIBS"
387 dnl ## Finalize the variables
388 echo $ac_n "${nl}Restore user-defined environment settings...${nl}"
390 APR_RESTORE_THE_ENVIRONMENT(CPPFLAGS, EXTRA_)
391 APR_RESTORE_THE_ENVIRONMENT(CFLAGS, EXTRA_)
392 APR_RESTORE_THE_ENVIRONMENT(CXXFLAGS, EXTRA_)
393 APR_RESTORE_THE_ENVIRONMENT(LDFLAGS, EXTRA_)
394 APR_RESTORE_THE_ENVIRONMENT(LIBS, EXTRA_)
395 APR_RESTORE_THE_ENVIRONMENT(INCLUDES, EXTRA_)
397 echo $ac_n "${nl}Construct makefiles and header files...${nl}"
399 APACHE_GEN_CONFIG_VARS
401 dnl ## Build modules.c
403 echo $MODLIST | $AWK -f $srcdir/build/build-modules-c.awk > modules.c
405 AC_DEFINE_UNQUOTED(HTTPD_ROOT, "$prefix",
406 [Root directory of the Apache install area])
407 AC_DEFINE_UNQUOTED(SERVER_CONFIG_FILE, "conf/$progname.conf",
408 [Location of the config file, relative to the Apache root directory])
409 AC_DEFINE_UNQUOTED(APACHE_MPM_DIR, "$MPM_DIR",
410 [Location of the source for the current MPM])
412 perlbin=`$ac_aux_dir/PrintPath perl`
413 if test "x$perlbin" = "x"; then
414 perlbin="/replace/with/path/to/perl/interpreter"
418 dnl If we are running on BSD/OS, we need to use the BSD .include syntax.
423 # Check whether they've installed GNU make
424 if make --version > /dev/null 2>&1; then
432 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,,[