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 echo $ac_n "${nl}Configuring Apache Portable Runtime library ...${nl}"
48 APR_SUBDIR_CONFIG(srclib/apr, "$apache_apr_flags --disable-shared --prefix=$prefix")
50 echo $ac_n "${nl}Configuring Apache Portable Runtime Utility library...${nl}"
52 APR_SUBDIR_CONFIG(srclib/apr-util, "--with-apr=../apr --disable-shared --prefix=$prefix")
54 echo $ac_n "${nl}Configuring PCRE regular expression library ...${nl}"
56 APR_SUBDIR_CONFIG(srclib/pcre, "--prefix=$prefix")
58 echo $ac_n "${nl}Configuring Apache httpd ...${nl}"
60 echo $ac_n "obtaining flag settings from the sub-configures...${nl}"
61 . ./srclib/apr/APRVARS
63 dnl Now that we have APR's EXTRA_flags in our environment, move them over
64 dnl to the normal variables to avoid duplications and use them for testing.
65 dnl We ignore EXTRA_INCLUDES because our own includes will encompass them.
67 APR_ADDTO(CFLAGS, $EXTRA_CFLAGS)
68 APR_ADDTO(CPPFLAGS, $EXTRA_CPPFLAGS)
69 APR_ADDTO(LDFLAGS, $EXTRA_LDFLAGS)
70 APR_ADDTO(LIBS, $EXTRA_LIBS)
77 dnl Absolute source/build directory
78 abs_srcdir=`(cd $srcdir && pwd)`
81 dnl If the source dir is not equal to the build dir,
82 dnl then we are running in VPATH mode.
84 if test "$abs_builddir" != "$abs_srcdir"; then
86 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])
88 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])
91 echo $ac_n "${nl}Applying OS-specific hints for httpd ...${nl}"
97 # Use a custom made libtool replacement
98 echo "using aplibtool"
99 LIBTOOL="$abs_srcdir/srclib/apr/build/aplibtool"
100 SH_LIBTOOL="$LIBTOOL --shared --export-all"
101 CORE_IMPLIB_FILE="ApacheCoreOS2.la"
102 CORE_IMPLIB="$abs_srcdir/server/$CORE_IMPLIB_FILE"
104 other_targets="$other_targets os2core"
107 if test "x$LTFLAGS" = "x"; then
110 LIBTOOL='$(SHELL) $(top_builddir)/srclib/apr/libtool $(LTFLAGS)'
111 SH_LIBTOOL='$(SHELL) $(top_builddir)/shlibtool $(LTFLAGS)'
117 APR_SETVAR(APACHE_MPM, [prefork])
118 APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1])
121 APR_SETVAR(APACHE_MPM, [beos])
122 APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1])
125 APR_SETVAR(APACHE_MPM, [spmt_os2])
126 APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1])
130 2.[[2-9]]* ) APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1])
136 *486-*-bsdi* | *-netbsd* | *-freebsd* | *-apple-darwin* | *-dec-osf* | *-qnx)
137 APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1])
140 dnl This is a hack -- we should be using AC_TRY_RUN instead
141 ap_platform_runtime_link_flag="-R"
146 dnl Process command line arguments. This is done early in the process so the
147 dnl user can get feedback quickly in case of an error.
149 dnl ### need to move some of the arguments "up here"
151 dnl ## Check for programs
159 AC_CHECK_TOOL(RANLIB, ranlib, true)
160 dnl AC_PATH_PROG(PERL_PATH, perl)
162 dnl various OS checks that apparently set required flags
167 dnl ## Check for libraries
169 dnl ## Check for header files
171 dnl I think these are just used all over the place, so just check for
172 dnl them at the base of the tree. If some are specific to a single
173 dnl directory, they should be moved (Comment #Spoon)
175 dnl Regarding standard header files: AC_HEADER_STDC doesn't set symbols
176 dnl HAVE_STRING_H, HAVE_STDLIB_H, etc., so those are checked for
177 dnl explicitly so that the normal HAVE_xxx_H symbol is defined.
192 dnl ## Check for typedefs, structures, and compiler characteristics.
195 if test "$ac_cv_prog_gcc" = "yes"; then
196 APR_ADDTO(NOTEST_CPPFLAGS,-DAP_HAVE_DESIGNATED_INITIALIZER)
199 dnl ## Check for library functions
201 dnl See Comment #Spoon
208 AC_CHECK_LIB(nsl, gethostbyname)
209 AC_CHECK_LIB(nsl, gethostname)
210 AC_CHECK_LIB(socket, socket)
212 AC_ARG_WITH(port,[ --with-port=PORT Port on which to listen (default is 80)],
213 [if test "$withval" = "yes"; then AC_MSG_ERROR('option --with-port requires a value (the TCP port number)'); else PORT="$withval"; fi],
216 AC_ARG_ENABLE(maintainer-mode,[ --enable-maintainer-mode Turn on debugging and compile time warnings],
218 APR_ADDTO(CPPFLAGS, -DAP_DEBUG)
222 APACHE_ENABLE_MODULES
224 dnl reading config stubs
225 esyscmd(./build/config-stubs .)
227 APACHE_SUBST(progname)
228 APACHE_SUBST(MPM_LIB)
231 APACHE_SUBST(BUILTIN_LIBS)
233 PRE_SHARED_CMDS='echo ""'
234 POST_SHARED_CMDS='echo ""'
236 if test "$apache_need_shared" = "yes"; then
237 $SHELL $ac_aux_dir/ltconfig --output=shlibtool --disable-static --srcdir=$ac_aux_dir --cache-file=./config.cache $ac_aux_dir/ltmain.sh
240 HTTPD_LDFLAGS="$HTTPD_LDFLAGS -Wl,-bE:$abs_srcdir/server/httpd.exp"
241 SH_LDFLAGS="$SH_LDFLAGS -Wl,-bI:$abs_srcdir/server/httpd.exp"
244 SH_LDFLAGS='$(top_builddir)/_APP_'
245 PRE_SHARED_CMDS='ln -s $(top_builddir)/httpd $(top_builddir)/_APP_'
246 POST_SHARED_CMDS='rm $(top_builddir)/_APP_'
249 HTTPD_LDFLAGS="$HTTPD_LDFLAGS --main=$abs_srcdir/server/main.o --core-dll=$abs_srcdir/apachecore.dll"
250 SH_LDFLAGS="$SH_LDFLAGS --core-dll=$abs_srcdir/apachecore.dll"
252 shared_build="shared-build"
255 APACHE_SUBST(PRE_SHARED_CMDS)
256 APACHE_SUBST(POST_SHARED_CMDS)
257 APACHE_SUBST(shared_build)
259 AC_ARG_WITH(program-name,
260 [ --with-program-name alternate executable name],[
261 progname="$withval" ], [
265 AC_ARG_WITH(suexec-caller,
266 [ --with-suexec-caller User allowed to call SuExec],[
267 AC_DEFINE_UNQUOTED(AP_HTTPD_USER, "$withval", [User allowed to call SuExec] ) ] )
269 AC_ARG_WITH(suexec-userdir,
270 [ --with-suexec-userdir User subdirectory],[
271 AC_DEFINE_UNQUOTED(AP_USERDIR_SUFFIX, "$withval", [User subdirectory] ) ] )
273 AC_ARG_WITH(suexec-docroot,
274 [ --with-suexec-docroot SuExec root directory],[
275 AC_DEFINE_UNQUOTED(AP_DOC_ROOT, "$withval", [SuExec root directory] ) ] )
277 AC_ARG_WITH(suexec-uidmin,
278 [ --with-suexec-uidmin Minimal allowed UID],[
279 AC_DEFINE_UNQUOTED(AP_UID_MIN, $withval, [Minimum allowed UID] ) ] )
281 AC_ARG_WITH(suexec-gidmin,
282 [ --with-suexec-gidmin Minimal allowed GID],[
283 AC_DEFINE_UNQUOTED(AP_GID_MIN, $withval, [Minimum allowed GID] ) ] )
285 AC_ARG_WITH(suexec-logfile,
286 [ --with-suexec-logfile Set the logfile],[
287 AC_DEFINE_UNQUOTED(AP_LOG_EXEC, "$withval", [SuExec log file] ) ] )
289 AC_ARG_WITH(suexec-safepath,
290 [ --with-suexec-safepath Set the safepath],[
291 AC_DEFINE_UNQUOTED(AP_SAFE_PATH, "$withval", [safe shell path for SuExec] ) ] )
293 AC_ARG_WITH(suexec-umask,
294 [ --with-suexec-umask umask for suexec'd process],[
295 AC_DEFINE_UNQUOTED(AP_SUEXEC_UMASK, 0$withval, [umask for suexec'd process] ) ] )
297 dnl AP_LIB_DIRS specifies the additional libs from srclib/ that we need
298 dnl AP_LIBS specifies the actual libraries. note we have some required libs.
299 AP_LIBS="$abs_builddir/srclib/pcre/libpcre.la $abs_builddir/srclib/apr-util/libaprutil.la $AP_LIBS"
301 dnl APR should go after the other libs, so the right symbols can be picked up
302 AP_LIBS="$AP_LIBS $abs_builddir/srclib/apr/libapr.la"
303 APACHE_SUBST(AP_LIB_DIRS)
304 APACHE_SUBST(AP_LIBS)
306 AC_DEFINE(AP_USING_AUTOCONF, 1,
307 [Using autoconf to configure Apache])
309 if test "$SINGLE_LISTEN_UNSERIALIZED_ACCEPT" = "1"; then
310 AC_DEFINE(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, 1,
311 [This platform doesn't suffer from the thundering herd problem])
314 dnl check for endianness
315 if test "$cross_compiling" = "no"; then
318 AC_DEFINE(AP_UNKNOWN_BYTE_ORDER,1,
319 [byte order is unknown due to cross-compilation])
322 APACHE_FAST_OUTPUT(Makefile modules/Makefile srclib/Makefile)
323 APACHE_FAST_OUTPUT(os/beos/Makefile os/os2/Makefile os/Makefile)
324 APACHE_FAST_OUTPUT(os/unix/Makefile server/Makefile)
325 APACHE_FAST_OUTPUT(support/Makefile srclib/pcre/Makefile)
326 for i in $AP_LIB_DIRS; do
327 APACHE_FAST_OUTPUT(srclib/$i/Makefile)
330 if test -d ./test; then
331 APACHE_FAST_OUTPUT(test/Makefile)
334 dnl get the exported vars from APRUTIL
335 . ./srclib/apr-util/export_vars.sh
336 APR_ADDTO(LIBS, $APRUTIL_EXPORT_LIBS)
337 AP_LIBS="$AP_LIBS $LIBTOOL_LIBS"
339 dnl ## Finalize the variables
340 echo $ac_n "${nl}Restore user-defined environment settings...${nl}"
342 APR_RESTORE_THE_ENVIRONMENT(CPPFLAGS, EXTRA_)
343 APR_RESTORE_THE_ENVIRONMENT(CFLAGS, EXTRA_)
344 APR_RESTORE_THE_ENVIRONMENT(CXXFLAGS, EXTRA_)
345 APR_RESTORE_THE_ENVIRONMENT(LDFLAGS, EXTRA_)
346 APR_RESTORE_THE_ENVIRONMENT(LIBS, EXTRA_)
347 APR_RESTORE_THE_ENVIRONMENT(INCLUDES, EXTRA_)
349 echo $ac_n "${nl}Construct makefiles and header files...${nl}"
351 APACHE_GEN_CONFIG_VARS
353 dnl ## Build modules.c
355 echo $MODLIST | $AWK -f $srcdir/build/build-modules-c.awk > modules.c
357 AC_DEFINE_UNQUOTED(HTTPD_ROOT, "$prefix",
358 [Root directory of the Apache install area])
359 AC_DEFINE_UNQUOTED(SERVER_CONFIG_FILE, "conf/$progname.conf",
360 [Location of the config file, relative to the Apache root directory])
361 AC_DEFINE_UNQUOTED(APACHE_MPM_DIR, "$MPM_DIR",
362 [Location of the source for the current MPM])
364 perlbin=`$ac_aux_dir/PrintPath perl`
365 if test "x$perlbin" = "x"; then
366 perlbin="/replace/with/path/to/perl/interpreter"
370 dnl If we are running on BSD/OS, we need to use the BSD .include syntax.
375 # Check whether they've installed GNU make
376 if make --version > /dev/null 2>&1; then
384 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,,[