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_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)/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)
147 APR_SETVAR(APACHE_MPM, [prefork])
148 APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1])
151 APR_SETVAR(APACHE_MPM, [beos])
152 APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1])
155 APR_SETVAR(APACHE_MPM, [mpmt_os2])
156 APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1])
160 2.[[2-9]]* ) APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1])
166 *486-*-bsdi* | *-netbsd* | *-freebsd* | *-apple-darwin* | *-dec-osf* | *-qnx)
167 APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1])
170 dnl This is a hack -- we should be using AC_TRY_RUN instead
171 ap_platform_runtime_link_flag="-R"
174 APR_SETVAR(APACHE_MPM, [prefork])
175 APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1])
180 dnl Process command line arguments. This is done early in the process so the
181 dnl user can get feedback quickly in case of an error.
183 dnl ### need to move some of the arguments "up here"
185 dnl ## Check for programs
193 AC_CHECK_TOOL(RANLIB, ranlib, true)
194 dnl AC_PATH_PROG(PERL_PATH, perl)
196 dnl various OS checks that apparently set required flags
201 dnl ## Check for libraries
203 dnl ## Check for header files
205 dnl I think these are just used all over the place, so just check for
206 dnl them at the base of the tree. If some are specific to a single
207 dnl directory, they should be moved (Comment #Spoon)
209 dnl Regarding standard header files: AC_HEADER_STDC doesn't set symbols
210 dnl HAVE_STRING_H, HAVE_STDLIB_H, etc., so those are checked for
211 dnl explicitly so that the normal HAVE_xxx_H symbol is defined.
227 dnl ## Check for typedefs, structures, and compiler characteristics.
230 if test "$ac_cv_prog_gcc" = "yes"; then
231 APR_ADDTO(NOTEST_CPPFLAGS,-DAP_HAVE_DESIGNATED_INITIALIZER)
234 dnl ## Check for library functions
236 dnl See Comment #Spoon
245 AC_ARG_WITH(port,[ --with-port=PORT Port on which to listen (default is 80)],
246 [if test "$withval" = "yes"; then AC_MSG_ERROR('option --with-port requires a value (the TCP port number)'); else PORT="$withval"; fi],
249 AC_ARG_ENABLE(maintainer-mode,[ --enable-maintainer-mode Turn on debugging and compile time warnings],
251 APR_ADDTO(CPPFLAGS, -DAP_DEBUG)
255 prefix="$orig_prefix"
256 APACHE_ENABLE_MODULES
258 dnl reading config stubs
259 esyscmd(./build/config-stubs .)
261 APACHE_SUBST(progname)
262 APACHE_SUBST(MPM_LIB)
265 APACHE_SUBST(BUILTIN_LIBS)
267 PRE_SHARED_CMDS='echo ""'
268 POST_SHARED_CMDS='echo ""'
270 if test "$apache_need_shared" = "yes"; then
271 if [ -f $ac_aux_dir/ltconfig ]; then
272 $SHELL $ac_aux_dir/ltconfig --output=shlibtool --disable-static --srcdir=$ac_aux_dir --cache-file=./config.cache $ac_aux_dir/ltmain.sh
276 HTTPD_LDFLAGS="$HTTPD_LDFLAGS -Wl,-bE:$abs_srcdir/server/httpd.exp"
277 SH_LDFLAGS="$SH_LDFLAGS -Wl,-bI:$abs_srcdir/server/httpd.exp"
280 SH_LDFLAGS='$(top_builddir)/_APP_'
281 PRE_SHARED_CMDS='ln -s $(top_builddir)/httpd $(top_builddir)/_APP_'
282 POST_SHARED_CMDS='rm $(top_builddir)/_APP_'
285 HTTPD_LDFLAGS="$HTTPD_LDFLAGS --main=$abs_srcdir/server/main.o --core-dll=$abs_srcdir/apachecore.dll"
286 SH_LDFLAGS="$SH_LDFLAGS --core-dll=$abs_srcdir/apachecore.dll"
288 shared_build="shared-build"
291 APACHE_SUBST(PRE_SHARED_CMDS)
292 APACHE_SUBST(POST_SHARED_CMDS)
293 APACHE_SUBST(shared_build)
295 AC_ARG_WITH(program-name,
296 [ --with-program-name alternate executable name],[
297 progname="$withval" ], [
301 AC_ARG_WITH(suexec-caller,
302 [ --with-suexec-caller User allowed to call SuExec],[
303 AC_DEFINE_UNQUOTED(AP_HTTPD_USER, "$withval", [User allowed to call SuExec] ) ] )
305 AC_ARG_WITH(suexec-userdir,
306 [ --with-suexec-userdir User subdirectory],[
307 AC_DEFINE_UNQUOTED(AP_USERDIR_SUFFIX, "$withval", [User subdirectory] ) ] )
309 AC_ARG_WITH(suexec-docroot,
310 [ --with-suexec-docroot SuExec root directory],[
311 AC_DEFINE_UNQUOTED(AP_DOC_ROOT, "$withval", [SuExec root directory] ) ] )
313 AC_ARG_WITH(suexec-uidmin,
314 [ --with-suexec-uidmin Minimal allowed UID],[
315 AC_DEFINE_UNQUOTED(AP_UID_MIN, $withval, [Minimum allowed UID] ) ] )
317 AC_ARG_WITH(suexec-gidmin,
318 [ --with-suexec-gidmin Minimal allowed GID],[
319 AC_DEFINE_UNQUOTED(AP_GID_MIN, $withval, [Minimum allowed GID] ) ] )
321 AC_ARG_WITH(suexec-logfile,
322 [ --with-suexec-logfile Set the logfile],[
323 AC_DEFINE_UNQUOTED(AP_LOG_EXEC, "$withval", [SuExec log file] ) ] )
325 AC_ARG_WITH(suexec-safepath,
326 [ --with-suexec-safepath Set the safepath],[
327 AC_DEFINE_UNQUOTED(AP_SAFE_PATH, "$withval", [safe shell path for SuExec] ) ] )
329 AC_ARG_WITH(suexec-umask,
330 [ --with-suexec-umask umask for suexec'd process],[
331 AC_DEFINE_UNQUOTED(AP_SUEXEC_UMASK, 0$withval, [umask for suexec'd process] ) ] )
333 dnl AP_LIB_DIRS specifies the additional libs from srclib/ that we need
334 dnl AP_LIBS specifies the actual libraries. note we have some required libs.
335 AP_LIBS="$abs_builddir/srclib/pcre/libpcre.la $abs_builddir/srclib/apr-util/libaprutil.la $AP_LIBS"
337 dnl APR should go after the other libs, so the right symbols can be picked up
338 AP_LIBS="$AP_LIBS $abs_builddir/srclib/apr/libapr.la"
339 APACHE_SUBST(AP_LIB_DIRS)
340 APACHE_SUBST(AP_LIBS)
342 AC_DEFINE(AP_USING_AUTOCONF, 1,
343 [Using autoconf to configure Apache])
345 if test "$SINGLE_LISTEN_UNSERIALIZED_ACCEPT" = "1"; then
346 AC_DEFINE(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, 1,
347 [This platform doesn't suffer from the thundering herd problem])
350 dnl check for endianness
351 if test "$cross_compiling" = "no"; then
354 AC_DEFINE(AP_UNKNOWN_BYTE_ORDER,1,
355 [byte order is unknown due to cross-compilation])
358 APACHE_FAST_OUTPUT(Makefile modules/Makefile srclib/Makefile)
359 APACHE_FAST_OUTPUT(os/beos/Makefile os/os2/Makefile os/Makefile)
360 APACHE_FAST_OUTPUT(os/unix/Makefile server/Makefile)
361 APACHE_FAST_OUTPUT(support/Makefile srclib/pcre/Makefile)
362 for i in $AP_LIB_DIRS; do
363 APACHE_FAST_OUTPUT(srclib/$i/Makefile)
366 if test -d ./test; then
367 APACHE_FAST_OUTPUT(test/Makefile)
370 dnl get the exported vars from APRUTIL
371 . ./srclib/apr-util/export_vars.sh
372 APR_ADDTO(LIBS, $APRUTIL_EXPORT_LIBS)
373 AP_LIBS="$AP_LIBS $LIBTOOL_LIBS"
375 dnl ## Finalize the variables
376 echo $ac_n "${nl}Restore user-defined environment settings...${nl}"
378 APR_RESTORE_THE_ENVIRONMENT(CPPFLAGS, EXTRA_)
379 APR_RESTORE_THE_ENVIRONMENT(CFLAGS, EXTRA_)
380 APR_RESTORE_THE_ENVIRONMENT(CXXFLAGS, EXTRA_)
381 APR_RESTORE_THE_ENVIRONMENT(LDFLAGS, EXTRA_)
382 APR_RESTORE_THE_ENVIRONMENT(LIBS, EXTRA_)
383 APR_RESTORE_THE_ENVIRONMENT(INCLUDES, EXTRA_)
385 echo $ac_n "${nl}Construct makefiles and header files...${nl}"
387 APACHE_GEN_CONFIG_VARS
389 dnl ## Build modules.c
391 echo $MODLIST | $AWK -f $srcdir/build/build-modules-c.awk > modules.c
393 AC_DEFINE_UNQUOTED(HTTPD_ROOT, "$prefix",
394 [Root directory of the Apache install area])
395 AC_DEFINE_UNQUOTED(SERVER_CONFIG_FILE, "conf/$progname.conf",
396 [Location of the config file, relative to the Apache root directory])
397 AC_DEFINE_UNQUOTED(APACHE_MPM_DIR, "$MPM_DIR",
398 [Location of the source for the current MPM])
400 perlbin=`$ac_aux_dir/PrintPath perl`
401 if test "x$perlbin" = "x"; then
402 perlbin="/replace/with/path/to/perl/interpreter"
406 dnl If we are running on BSD/OS, we need to use the BSD .include syntax.
411 # Check whether they've installed GNU make
412 if make --version > /dev/null 2>&1; then
420 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,,[