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)
20 sinclude(acinclude.m4)
22 dnl Save user-defined environment settings for later restoration
24 APR_SAVE_THE_ENVIRONMENT(CPPFLAGS)
25 APR_SAVE_THE_ENVIRONMENT(CFLAGS)
26 APR_SAVE_THE_ENVIRONMENT(CXXFLAGS)
27 APR_SAVE_THE_ENVIRONMENT(LDFLAGS)
28 APR_SAVE_THE_ENVIRONMENT(LIBS)
29 APR_SAVE_THE_ENVIRONMENT(INCLUDES)
31 dnl Generate ./config.nice for reproducing runs of configure
33 APR_CONFIG_NICE(config.nice)
37 dnl ## Run configure for packages Apache uses
39 echo $ac_n "${nl}Configuring Apache Portable Runtime library ...${nl}"
41 APR_SUBDIR_CONFIG(srclib/apr, "$apache_apr_flags --disable-shared")
43 echo $ac_n "${nl}Configuring Apache Portable Runtime Utility library...${nl}"
45 APR_SUBDIR_CONFIG(srclib/apr-util, "--with-apr=../apr --disable-shared")
47 echo $ac_n "${nl}Configuring PCRE regular expression library ...${nl}"
49 APR_SUBDIR_CONFIG(srclib/pcre)
51 echo $ac_n "${nl}Configuring Apache httpd ...${nl}"
53 echo $ac_n "obtaining flag settings from the sub-configures...${nl}"
54 . ./srclib/apr/APRVARS
56 dnl Now that we have APR's EXTRA_flags in our environment, move them over
57 dnl to the normal variables to avoid duplications and use them for testing.
58 dnl We ignore EXTRA_INCLUDES because our own includes will encompass them.
60 APR_ADDTO(CFLAGS, $EXTRA_CFLAGS)
61 APR_ADDTO(CPPFLAGS, $EXTRA_CPPFLAGS)
62 APR_ADDTO(LDFLAGS, $EXTRA_LDFLAGS)
63 APR_ADDTO(LIBS, $EXTRA_LIBS)
70 dnl XXX we can't just use AC_PREFIX_DEFAULT because that isn't subbed in
71 dnl by configure until it is too late. Is that how it should be or not?
72 dnl Something seems broken here.
73 AC_PREFIX_DEFAULT(/usr/local/apache2)
74 test "$prefix" = "NONE" && prefix='/usr/local/apache2'
75 test "$exec_prefix" = "NONE" && exec_prefix='${prefix}'
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])
95 # Use a custom made libtool replacement
96 echo "using aplibtool"
97 LIBTOOL="$abs_srcdir/srclib/apr/build/aplibtool"
98 SH_LIBTOOL="$LIBTOOL --shared --export-all"
99 CORE_IMPLIB_FILE="ApacheCoreOS2.la"
100 CORE_IMPLIB="$abs_srcdir/server/$CORE_IMPLIB_FILE"
102 other_targets="$other_targets os2core"
105 LIBTOOL='$(SHELL) $(top_builddir)/srclib/apr/libtool --silent'
106 SH_LIBTOOL='$(SHELL) $(top_builddir)/shlibtool --silent'
111 dnl ## Preload our OS configuration
115 dnl Process command line arguments. This is done early in the process so the
116 dnl user can get feedback quickly in case of an error.
118 dnl ### need to move some of the arguments "up here"
120 dnl ## Check for programs
126 AC_CHECK_TOOL(RANLIB, ranlib, true)
127 dnl AC_PATH_PROG(PERL_PATH, perl)
129 dnl various OS checks that apparently set required flags
133 dnl ## Check for libraries
135 dnl ## Check for header files
137 dnl I think these are just used all over the place, so just check for
138 dnl them at the base of the tree. If some are specific to a single
139 dnl directory, they should be moved (Comment #Spoon)
141 dnl Regarding standard header files: AC_HEADER_STDC doesn't set symbols
142 dnl HAVE_STRING_H, HAVE_STDLIB_H, etc., so those are checked for
143 dnl explicitly so that the normal HAVE_xxx_H symbol is defined.
157 dnl ## Check for typedefs, structures, and compiler characteristics.
161 dnl ## Check for library functions
163 dnl See Comment #Spoon
169 AC_CHECK_LIB(nsl, gethostbyname)
170 AC_CHECK_LIB(nsl, gethostname)
171 AC_CHECK_LIB(socket, socket)
173 AC_ARG_WITH(port,[ --with-port=PORT Port on which to listen (default is 80)],
174 [if test "$withval" = "yes"; then AC_MSG_ERROR('option --with-port requires a value (the TCP port number)'); else PORT="$withval"; fi],
177 AC_ARG_ENABLE(debug,[ --enable-debug Turn on debugging and compile time warnings],
178 [APR_ADDTO(CFLAGS,-g)
179 if test "$GCC" = "yes"; then
180 APR_ADDTO(CFLAGS,-Wall)
184 AC_ARG_ENABLE(maintainer-mode,[ --enable-maintainer-mode Turn on debugging and compile time warnings],
185 [APR_ADDTO(CFLAGS,-g)
186 if test "$GCC" = "yes"; then
187 APR_ADDTO(CFLAGS,[-Wall -Wmissing-prototypes -Wstrict-prototypes -Wmissing-declarations -DAP_DEBUG])
192 APACHE_ENABLE_MODULES
194 dnl reading config stubs
195 esyscmd(./build/config-stubs .)
197 APACHE_SUBST(progname)
198 APACHE_SUBST(MPM_LIB)
201 APACHE_SUBST(BUILTIN_LIBS)
203 PRE_SHARED_CMDS='echo ""'
204 POST_SHARED_CMDS='echo ""'
206 if test "$apache_need_shared" = "yes"; then
207 $SHELL $ac_aux_dir/ltconfig --output=shlibtool --disable-static --srcdir=$ac_aux_dir --cache-file=./config.cache $ac_aux_dir/ltmain.sh
210 HTTPD_LDFLAGS="$HTTPD_LDFLAGS -Wl,-bE:$abs_srcdir/support/httpd.exp"
211 SH_LDFLAGS="$SH_LDFLAGS -Wl,-bI:$abs_srcdir/support/httpd.exp"
214 SH_LDFLAGS='$(top_builddir)/_APP_'
215 PRE_SHARED_CMDS='ln -s $(top_builddir)/httpd $(top_builddir)/_APP_'
216 POST_SHARED_CMDS='rm $(top_builddir)/_APP_'
219 APR_ADDTO(CFLAGS, [-Wc,DLL,EXPORTALL])
222 shared_build="shared-modules"
225 APACHE_SUBST(PRE_SHARED_CMDS)
226 APACHE_SUBST(POST_SHARED_CMDS)
227 APACHE_SUBST(shared_build)
229 AC_ARG_WITH(program-name,
230 [ --with-program-name alternate executable name],[
231 progname="$withval" ], [
235 AC_ARG_WITH(suexec-caller,
236 [ --with-suexec-caller User allowed to call SuExec],[
237 AC_DEFINE_UNQUOTED(AP_HTTPD_USER, "$withval", [User allowed to call SuExec] ) ] )
239 AC_ARG_WITH(suexec-userdir,
240 [ --with-suexec-userdir User subdirectory],[
241 AC_DEFINE_UNQUOTED(AP_USERDIR_SUFFIX, "$withval", [User subdirectory] ) ] )
243 AC_ARG_WITH(suexec-docroot,
244 [ --with-suexec-docroot SuExec root directory],[
245 AC_DEFINE_UNQUOTED(AP_DOC_ROOT, "$withval", [SuExec root directory] ) ] )
247 AC_ARG_WITH(suexec-uidmin,
248 [ --with-suexec-uidmin Minimal allowed UID],[
249 AC_DEFINE_UNQUOTED(AP_UID_MIN, $withval, [Minimum allowed UID] ) ] )
251 AC_ARG_WITH(suexec-gidmin,
252 [ --with-suexec-gidmin Minimal allowed GID],[
253 AC_DEFINE_UNQUOTED(AP_GID_MIN, $withval, [Minimum allowed GID] ) ] )
255 AC_ARG_WITH(suexec-logfile,
256 [ --with-suexec-logfile Set the logfile],[
257 AC_DEFINE_UNQUOTED(AP_LOG_EXEC, "$withval", [SuExec log file] ) ] )
259 AC_ARG_WITH(suexec-safepath,
260 [ --with-suexec-safepath Set the safepath],[
261 AC_DEFINE_UNQUOTED(AP_SAFE_PATH, "$withval", [safe shell path for SuExec] ) ] )
263 AC_ARG_WITH(suexec-umask,
264 [ --with-suexec-umask umask for suexec'd process],[
265 AC_DEFINE_UNQUOTED(AP_SUEXEC_UMASK, 0$withval, [umask for suexec'd process] ) ] )
267 dnl AP_LIB_DIRS specifies the additional libs from srclib/ that we need
268 dnl AP_LIBS specifies the actual libraries. note we have some required libs.
269 AP_LIBS="$abs_srcdir/srclib/pcre/libpcre.la $abs_srcdir/srclib/apr-util/libaprutil.la $AP_LIBS"
271 dnl APR should go after the other libs, so the right symbols can be picked up
272 AP_LIBS="$AP_LIBS $abs_srcdir/srclib/apr/libapr.la"
273 APACHE_SUBST(AP_LIB_DIRS)
274 APACHE_SUBST(AP_LIBS)
276 AC_DEFINE(AP_USING_AUTOCONF, 1,
277 [Using autoconf to configure Apache])
279 if test "$SINGLE_LISTEN_UNSERIALIZED_ACCEPT" = "1"; then
280 AC_DEFINE(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, 1,
281 [This platform doesn't suffer from the thundering herd problem])
284 dnl check for endianness
285 if test "$cross_compiling" = "no"; then
288 AC_DEFINE(AP_UNKNOWN_BYTE_ORDER,1,
289 [byte order is unknown due to cross-compilation])
292 APACHE_FAST_OUTPUT(Makefile modules/Makefile srclib/Makefile)
293 APACHE_FAST_OUTPUT(os/beos/Makefile os/os2/Makefile os/Makefile)
294 APACHE_FAST_OUTPUT(os/unix/Makefile server/Makefile)
295 APACHE_FAST_OUTPUT(support/Makefile srclib/pcre/Makefile)
296 for i in $AP_LIB_DIRS; do
297 APACHE_FAST_OUTPUT(srclib/$i/Makefile)
300 if test -d ./test; then
301 APACHE_FAST_OUTPUT(test/Makefile)
304 dnl get the exported vars from APRUTIL
305 . ./srclib/apr-util/export_vars.sh
306 APR_ADDTO(LIBS, $APRUTIL_EXPORT_LIBS)
307 AP_LIBS="$AP_LIBS $LIBTOOL_LIBS"
309 dnl ## Finalize the variables
310 echo $ac_n "${nl}Restore user-defined environment settings...${nl}"
312 APR_RESTORE_THE_ENVIRONMENT(CPPFLAGS, EXTRA_)
313 APR_RESTORE_THE_ENVIRONMENT(CFLAGS, EXTRA_)
314 APR_RESTORE_THE_ENVIRONMENT(CXXFLAGS, EXTRA_)
315 APR_RESTORE_THE_ENVIRONMENT(LDFLAGS, EXTRA_)
316 APR_RESTORE_THE_ENVIRONMENT(LIBS, EXTRA_)
317 APR_RESTORE_THE_ENVIRONMENT(INCLUDES, EXTRA_)
319 echo $ac_n "${nl}Construct makefiles and header files...${nl}"
321 APACHE_GEN_CONFIG_VARS
323 dnl ## Build modules.c
325 echo $MODLIST | $AWK -f $srcdir/build/build-modules-c.awk > modules.c
327 AC_DEFINE_UNQUOTED(HTTPD_ROOT, "$prefix",
328 [Root directory of the Apache install area])
329 AC_DEFINE_UNQUOTED(SERVER_CONFIG_FILE, "conf/$progname.conf",
330 [Location of the config file, relative to the Apache root directory])
331 AC_DEFINE_UNQUOTED(APACHE_MPM_DIR, "$MPM_DIR",
332 [Location of the source for the current MPM])
334 perlbin=`$ac_aux_dir/PrintPath perl`
335 if test "x$perlbin" = "x"; then
336 perlbin="/replace/with/path/to/perl/interpreter"
340 dnl If we are running on BSD/OS, we need to use the BSD .include syntax.
343 case "$host_alias" in
345 # Check whether they've installed GNU make
346 if make --version > /dev/null 2>&1; then
354 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,,[