]> granicus.if.org Git - apache/blob - configure.in
leave a warning about cc_out
[apache] / configure.in
1 dnl
2 dnl Autoconf configuration for Apache httpd
3 dnl
4 dnl     Use ./buildconf to produce a configure script
5 dnl
6
7 AC_PREREQ(2.50)
8 AC_INIT(ABOUT_APACHE)
9
10 AC_CONFIG_HEADER(include/ap_config_auto.h)
11 AC_CONFIG_AUX_DIR(build)
12
13 dnl Absolute source/build directory
14 abs_srcdir=`(cd $srcdir && pwd)`
15 abs_builddir=`pwd`
16
17 dnl Ensure that the httpd version is included
18 HTTPD_VERSION=`$abs_srcdir/build/get-version.sh all $abs_srcdir/include/ap_release.h AP_SERVER`
19 AC_SUBST(HTTPD_VERSION)
20
21 dnl #
22 dnl # Include our own M4 macros along with those for APR and libtool
23 dnl #
24 sinclude(build/apr_common.m4)
25 sinclude(build/find_apr.m4)
26 sinclude(build/find_apu.m4)
27 sinclude(acinclude.m4)
28
29 dnl Later versions of autoconf (>= 2.62) by default cause the produced
30 dnl configure script to emit at least warnings when it comes across unknown
31 dnl command line options. These versions also have the macro
32 dnl AC_DISABLE_OPTION_CHECKING defined which turns this off by default.
33 dnl We want to have this turned off here since our configure calls can
34 dnl contain options for APR / APR-UTIL configure that are unknown to us.
35 dnl So avoid confusing the user by turning this off. See also PR 45221.
36 ifdef([AC_DISABLE_OPTION_CHECKING], [AC_DISABLE_OPTION_CHECKING])
37
38 dnl XXX we can't just use AC_PREFIX_DEFAULT because that isn't subbed in
39 dnl by configure until it is too late.  Is that how it should be or not?
40 dnl Something seems broken here.                                               
41 AC_PREFIX_DEFAULT(/usr/local/apache2)
42
43 dnl Get the layout here, so we can pass the required variables to apr
44 APR_ENABLE_LAYOUT(Apache, [errordir iconsdir htdocsdir cgidir])
45
46 dnl reparse the configure arguments.
47 APR_PARSE_ARGUMENTS
48
49 dnl export expanded and relative configure argument variables
50 APACHE_EXPORT_ARGUMENTS
51
52 dnl Save user-defined environment settings for later restoration
53 dnl
54 APR_SAVE_THE_ENVIRONMENT(CPPFLAGS)
55 APR_SAVE_THE_ENVIRONMENT(CFLAGS)
56 APR_SAVE_THE_ENVIRONMENT(CXXFLAGS)
57 APR_SAVE_THE_ENVIRONMENT(LDFLAGS)
58 APR_SAVE_THE_ENVIRONMENT(LIBS)
59 APR_SAVE_THE_ENVIRONMENT(INCLUDES)
60
61 dnl Generate ./config.nice for reproducing runs of configure
62 dnl
63 APR_CONFIG_NICE(config.nice)
64
65 nl='
66 '
67 dnl Check that mkdir -p works
68 APR_MKDIR_P_CHECK($top_srcdir/build/mkdir.sh)
69
70 dnl get an EGREP to use in the Makefiles
71 AC_PROG_EGREP
72 APACHE_SUBST(EGREP)
73
74 dnl ## Run configure for packages Apache uses
75
76 dnl shared library support for these packages doesn't currently
77 dnl work on some platforms
78
79 AC_CANONICAL_SYSTEM
80
81 orig_prefix="$prefix"
82
83 AC_MSG_NOTICE([])
84 AC_MSG_NOTICE([Configuring Apache Portable Runtime library...])
85 AC_MSG_NOTICE([])
86
87 AC_ARG_WITH(included-apr,
88 APACHE_HELP_STRING(--with-included-apr,Use bundled copies of APR/APR-Util))
89
90 if test "x$with_included_apr" = "xyes"; then
91   apr_found=reconfig
92   if test ! -d srclib/apr && test ! -d $srcdir/srclib/apr; then
93     AC_MSG_ERROR([Bundled APR requested but not found at ./srclib/. Please refer to the documentation on APR in the httpd INSTALL file.])
94   fi
95 else 
96   APR_FIND_APR("$srcdir/srclib/apr", "./srclib/apr", 1, 1 2, [
97     version=`$apr_config --version`
98     case x${version} in
99     x1.[[0-3]].*) 
100       AC_MSG_WARN([APR version 1.4.0 or later is required, found $version])
101       apr_acceptable=no
102       ;;
103     esac
104     unset version
105    ])
106 fi
107
108 if test "$apr_found" = "no"; then
109   AC_MSG_ERROR([APR not found.  Please refer to the documentation on APR in the httpd INSTALL file.])
110 fi
111
112 if test "$apr_found" = "reconfig"; then
113   APR_SUBDIR_CONFIG(srclib/apr,
114                     [$apache_apr_flags --prefix=$prefix --exec-prefix=$exec_prefix --libdir=$libdir --includedir=$includedir --bindir=$bindir --datadir=$datadir --with-installbuilddir=$installbuilddir],
115                     [--enable-layout=*|\'--enable-layout=*])
116   dnl We must be the first to build and the last to be cleaned
117   AP_BUILD_SRCLIB_DIRS="apr $AP_BUILD_SRCLIB_DIRS"
118   AP_CLEAN_SRCLIB_DIRS="$AP_CLEAN_SRCLIB_DIRS apr"
119
120   dnl We have to find apr-N-config when we reconfigure APR.
121   for majorver in 1 2; do
122     test_apr_config="./srclib/apr/apr-${majorver}-config"
123     if test -f "$test_apr_config"; then
124       apr_config="$test_apr_config"
125     fi
126   done
127 fi
128
129 APR_SETIFNULL(CC, `$apr_config --cc`)
130 APR_SETIFNULL(CPP, `$apr_config --cpp`)
131 APR_ADDTO(CFLAGS, `$apr_config --cflags`)
132 APR_ADDTO(CPPFLAGS, `$apr_config --cppflags`)
133 dnl internal-only CPPFLAGS (shouldn't affect third-party module builds)
134 INTERNAL_CPPFLAGS=""
135 APR_ADDTO(LDFLAGS, `$apr_config --ldflags`)
136 SHLIBPATH_VAR=`$apr_config --shlib-path-var`
137 APR_BINDIR=`$apr_config --bindir`
138 APR_INCLUDEDIR=`$apr_config --includedir`
139 APR_INCLUDES=`$apr_config --includes`
140 APR_VERSION=`$apr_config --version`
141 apr_major_version=`echo ${APR_VERSION} | sed 's,\..*,,'`
142 APR_CONFIG="$APR_BINDIR/apr-${apr_major_version}-config"
143
144 AC_MSG_NOTICE([])
145 AC_MSG_NOTICE([Configuring Apache Portable Runtime Utility library...])
146 AC_MSG_NOTICE([])
147
148 if test "x${apr_major_version}" = "x2"; then
149   apu_found=obsolete
150 elif test "x$with_included_apr" = "xyes"; then
151   apu_found=reconfig
152   if test ! -d srclib/apr-util && test ! -d $srcdir/srclib/apr-util; then
153     AC_MSG_ERROR([Bundled APR-Util requested but not found at ./srclib/.  Please refer to the documentation on APR in the httpd INSTALL file.])
154   fi
155 else 
156    dnl If httpd is buildconf'ed against an apr 2.x tree, then 1.x
157    dnl isn't supported. 
158    ifdef([APR_FIND_APU], [
159      APR_FIND_APU("$srcdir/srclib/apr-util", "./srclib/apr-util", 
160                   1, ${apr_major_version})
161    ], [apu_found=no])
162 fi
163
164 if test "$apu_found" = "no"; then
165   AC_MSG_ERROR([APR-util not found.  Please refer to the documentation on APR in the httpd INSTALL file.])
166 fi
167
168 # Catch some misconfigurations:
169 case ${apr_found}.${apu_found} in
170 reconfig.yes)
171   AC_MSG_ERROR([Cannot use an external APR-util with the bundled APR])
172   ;;
173 yes.reconfig)
174   AC_MSG_ERROR([Cannot use an external APR with the bundled APR-util])
175   ;;
176 esac  
177
178 if test "$apu_found" = "reconfig"; then
179   APR_SUBDIR_CONFIG(srclib/apr-util,
180                     [--with-apr=../apr --prefix=$prefix --exec-prefix=$exec_prefix --libdir=$libdir --includedir=$includedir --bindir=$bindir],
181                     [--enable-layout=*|\'--enable-layout=*])
182   dnl We must be the last to build and the first to be cleaned
183   AP_BUILD_SRCLIB_DIRS="$AP_BUILD_SRCLIB_DIRS apr-util"
184   AP_CLEAN_SRCLIB_DIRS="apr-util $AP_CLEAN_SRCLIB_DIRS"
185   dnl APR and APR-Util major versions must match
186   apu_config="./srclib/apr-util/apu-${apr_major_version}-config"
187 fi
188
189 if test "$apu_found" = "obsolete"; then
190   AC_MSG_NOTICE([APR-util obsoleted, woohoo])
191 else
192   APR_ADDTO(LDFLAGS, `$apu_config --ldflags`)
193   APU_BINDIR=`$apu_config --bindir`
194   APU_INCLUDEDIR=`$apu_config --includedir`
195   APU_INCLUDES=`$apu_config --includes`
196   APU_VERSION=`$apu_config --version`
197   APU_CONFIG="$APU_BINDIR/apu-`echo ${APU_VERSION} | sed 's,\..*,,'`-config"
198 fi
199
200 dnl In case we picked up CC and CPP from APR, get that info into the
201 dnl config cache so that PCRE uses it.  Otherwise, CC and CPP used for
202 dnl PCRE and for our config tests will be whatever PCRE determines.
203 AC_PROG_CC
204 AC_PROG_CPP
205
206 dnl Try to get c99 support for variadic macros
207 ifdef([AC_PROG_CC_C99], [AC_PROG_CC_C99])
208
209 dnl In case of cross compilation we set CC_FOR_BUILD to cc unless
210 dnl we got already CC_FOR_BUILD from environment.
211 if test "x${build_alias}" != "x${host_alias}"; then
212   if test "x${CC_FOR_BUILD}" = "x"; then
213     CC_FOR_BUILD=cc
214   fi
215 fi
216
217 if test "x${cache_file}" = "x/dev/null"; then
218   # Likewise, ensure that CC and CPP are passed through to the pcre
219   # configure script iff caching is disabled (the autoconf 2.5x default).
220   export CC; export CPP
221 fi
222
223 AC_ARG_WITH(pcre,
224 APACHE_HELP_STRING(--with-pcre=PATH,Use external PCRE library))
225
226 AC_PATH_PROG(PCRE_CONFIG, pcre-config, false)
227 if test -d "$with_pcre" && test -x "$with_pcre/bin/pcre-config"; then
228    PCRE_CONFIG=$with_pcre/bin/pcre-config
229 elif test -x "$with_pcre"; then
230    PCRE_CONFIG=$with_pcre
231 fi
232
233 if test "$PCRE_CONFIG" != "false"; then
234   if $PCRE_CONFIG --version >/dev/null 2>&1; then :; else
235     AC_MSG_ERROR([Did not find pcre-config script at $PCRE_CONFIG])
236   fi
237   case `$PCRE_CONFIG --version` in
238   [[1-5].*])
239     AC_MSG_ERROR([Need at least pcre version 6.0])
240     ;;
241   esac
242   AC_MSG_NOTICE([Using external PCRE library from $PCRE_CONFIG])
243   APR_ADDTO(PCRE_INCLUDES, [`$PCRE_CONFIG --cflags`])
244   APR_ADDTO(PCRE_LIBS, [`$PCRE_CONFIG --libs`])
245   APR_ADDTO(HTTPD_LIBS, [\$(PCRE_LIBS)])
246 else
247   AC_MSG_ERROR([pcre-config for libpcre not found. PCRE is required and available from http://pcre.org/])
248 fi
249 APACHE_SUBST(PCRE_LIBS)
250
251 AC_MSG_NOTICE([])
252 AC_MSG_NOTICE([Configuring Apache httpd...])
253 AC_MSG_NOTICE([])
254
255 dnl If the source dir is not equal to the build dir, 
256 dnl then we are running in VPATH mode.
257
258 APR_ADDTO(INCLUDES, [-I.])
259
260 if test "$abs_builddir" != "$abs_srcdir"; then
261   APR_ADDTO(INCLUDES, [-I\$(top_builddir)/include])
262 fi
263
264 APR_ADDTO(INCLUDES, [-I\$(top_srcdir)/os/\$(OS_DIR) -I\$(top_srcdir)/include])
265
266 # apr/apr-util --includes may pick up system paths for dependent
267 # libraries, so ensure these are later in INCLUDES than local source
268 # directories.
269 APR_ADDTO(INCLUDES, $APR_INCLUDES)
270 APR_ADDTO(INCLUDES, $APU_INCLUDES)
271
272 dnl Add in path to PCRE includes
273 APR_ADDTO(INCLUDES, $PCRE_INCLUDES)
274
275 AC_EGREP_CPP(yes,
276 [
277 #include <pcre.h>
278 #ifdef PCRE_DUPNAMES
279 yes
280 #endif
281 ],pcre_have_dupnames=yes,pcre_have_dupnames=no)
282 if test "$pcre_have_dupnames" != "yes"; then
283     AC_MSG_ERROR([pcre version does not support PCRE_DUPNAMES])
284 fi
285
286 AC_MSG_NOTICE([])
287 AC_MSG_NOTICE([Applying OS-specific hints for httpd...])
288 AC_MSG_NOTICE([])
289
290 case $host in
291   *os2*)
292       # Use a custom made libtool replacement
293       echo "using aplibtool"
294       LIBTOOL="$abs_srcdir/srclib/apr/build/aplibtool"
295       SH_LIBTOOL="$LIBTOOL --shared --export-all"
296       SH_LIBS="\$(ALL_LIBS)"
297       CORE_IMPLIB_FILE="ApacheCoreOS2.la"
298       CORE_IMPLIB="$abs_srcdir/server/$CORE_IMPLIB_FILE"
299       MK_IMPLIB="emximp"
300       other_targets="$other_targets os2core"
301       INSTALL_PROG_FLAGS="-e .exe"
302       SHLTCFLAGS=""
303       LTCFLAGS=""
304       ;;
305   *)
306       if test "x$LTFLAGS" = "x"; then
307           LTFLAGS='--silent'
308       fi
309       my_libtool=`$apr_config --apr-libtool`
310       LIBTOOL="$my_libtool \$(LTFLAGS)"
311       libtoolversion=`$my_libtool --version`
312       case $libtoolversion in
313           *1.[[45]]* | *[[2-9]].[[0-9]]*)
314               SH_LIBTOOL='$(LIBTOOL)'
315               SHLTCFLAGS="-prefer-pic"
316               LTCFLAGS="-prefer-non-pic -static"
317               ;;
318           *)
319               SH_LIBTOOL='$(SHELL) $(top_builddir)/shlibtool $(LTFLAGS)'
320               SHLTCFLAGS=""
321               LTCFLAGS=""
322               ;;
323       esac
324       ;;
325 esac
326 APACHE_SUBST(SHLTCFLAGS)
327 APACHE_SUBST(LTCFLAGS)
328
329 case $host in
330   *-apple-aux3*)
331       APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1])
332       ;;
333   *os2-emx*)
334       APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1])
335       ;;
336   *-linux-*)
337       case `uname -r` in
338         # Unserialized accept() was not recommended until Linux 2.2.
339         [[01]].* | 2.[[01]]* )
340             ;;
341         * )
342             APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1])
343             ;;
344       esac
345       ;;
346   *486-*-bsdi* | *-netbsd* | *-freebsd* | *-apple-darwin* | *-dec-osf* | *-qnx)
347       APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1])
348       ;;
349   *-solaris2*)
350       dnl This is a hack -- we should be using AC_TRY_RUN instead
351       ap_platform_runtime_link_flag="-R"
352       dnl solaris 8 and above don't have a thundering herd
353       dnl not sure about rev's before this one.
354       case `uname -r` in
355         5.[567]*)
356             ;;
357         * )
358             APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1])
359             ;;
360       esac
361       ;;
362   *cygwin*)
363       APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1])
364       ;;
365   *mingw32*)
366       APR_ADDTO(INTERNAL_CPPFLAGS, [-DAP_DECLARE_EXPORT])
367       APR_ADDTO(INTERNAL_CPPFLAGS, [-DAPREQ_DECLARE_EXPORT])
368       APR_SETIFNULL(ac_cv_func_times, [no])
369       APR_SETIFNULL(ac_cv_func_getpwnam, [no])
370       APR_SETIFNULL(ac_cv_func_getgrnam, [no])
371       ;;
372   *aix*)
373       aixver=`echo $host | sed 's/^[[^0-9]]*//' | sed 's/\.//g'`
374       if test $aixver -ge 4320; then
375         APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1])
376       fi
377       ;;
378   *os390*)
379       APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1])
380       ;;
381 esac
382
383 APR_SETVAR(AP_NONBLOCK_WHEN_MULTI_LISTEN, [1])
384
385 dnl
386 dnl Process command line arguments. This is done early in the process so the
387 dnl user can get feedback quickly in case of an error.
388 dnl
389 dnl ### need to move some of the arguments "up here"
390
391 dnl ## Check for programs
392
393 AC_PATH_PROG(RM, rm)
394 AC_PATH_PROG(PKGCONFIG, pkg-config)
395 AC_PATH_PROG(RSYNC, rsync)
396 AC_PROG_AWK
397 AC_PROG_LN_S
398 AC_CHECK_TOOL(RANLIB, ranlib, true)
399 dnl AC_PATH_PROG(PERL_PATH, perl)
400 AC_CHECK_PROGS(LYNX_PATH,[lynx links elinks], [lynx])
401
402 # Hard-coded install programs
403 MKINSTALLDIRS="\$(abs_srcdir)/build/mkdir.sh"
404 INSTALL="\$(LIBTOOL) --mode=install \$(abs_srcdir)/build/install.sh -c"
405 APACHE_SUBST(MKINSTALLDIRS)
406 APACHE_SUBST(INSTALL)
407
408 dnl Various OS checks that apparently set required flags
409 ifdef([AC_USE_SYSTEM_EXTENSIONS], [
410 AC_USE_SYSTEM_EXTENSIONS
411 ], [
412 AC_AIX
413 AC_MINIX
414 ])
415
416 AC_ISC_POSIX
417
418 # Ensure that satisfactory versions of apr and apr-util are 
419 # found if external copies are configured.
420 if test "${apr_found}" = "yes"; then
421   # Require at least APR 1.3.x otherwise fail
422   APACHE_CHECK_APxVER([apr], 1, 3)
423 fi
424
425 if test "${apu_found}" = "yes"; then
426   # Require at least APR-util 1.3.x otherwise fail
427   if test "${apr_found}" = "yes"; then
428     # we need to add the APR includes to CPPFLAGS
429     apu_ckver_CPPFLAGS="$CPPFLAGS"
430     CPPFLAGS="$CPPFLAGS `$apr_config --includes`"
431     APACHE_CHECK_APxVER([apu], 1, 3)
432     CPPFLAGS="$apu_ckver_CPPFLAGS"
433   else
434     APACHE_CHECK_APxVER([apu], 1, 3)
435   fi
436 fi
437
438 dnl Check for what we can generate dependency files with
439 APR_CHECK_DEPEND
440
441 dnl ## Check for libraries
442
443 dnl ## Check for header files
444
445 dnl I think these are just used all over the place, so just check for
446 dnl them at the base of the tree. If some are specific to a single
447 dnl directory, they should be moved (Comment #Spoon)
448
449 dnl Regarding standard header files: AC_HEADER_STDC doesn't set symbols
450 dnl HAVE_STRING_H, HAVE_STDLIB_H, etc., so those are checked for
451 dnl explicitly so that the normal HAVE_xxx_H symbol is defined.
452
453 AC_HEADER_STDC
454 AC_CHECK_HEADERS( \
455 string.h \
456 limits.h \
457 unistd.h \
458 sys/socket.h \
459 pwd.h \
460 grp.h \
461 strings.h \
462 sys/prctl.h \
463 sys/processor.h \
464 sys/sem.h \
465 sys/sdt.h \
466 sys/loadavg.h
467 )
468 AC_HEADER_SYS_WAIT
469
470 dnl ## Check for typedefs, structures, and compiler characteristics.
471
472 AC_C_CONST
473
474 dnl ## Check for library functions
475 dnl ## sqrt() only needed in support/ab.c
476 saved_LIBS="$LIBS"
477 LIBS=""
478 AC_SEARCH_LIBS(sqrt, m)
479 MATH_LIBS="$LIBS"
480 APACHE_SUBST(MATH_LIBS)
481 LIBS="$saved_LIBS"
482
483 saved_LIBS="$LIBS"
484 LIBS=""
485 AC_SEARCH_LIBS(crypt, crypt)
486 CRYPT_LIBS="$LIBS"
487 APACHE_SUBST(CRYPT_LIBS)
488 LIBS="$saved_LIBS"
489
490 dnl See Comment #Spoon
491
492 AC_CHECK_FUNCS( \
493 getpwnam \
494 getgrnam \
495 initgroups \
496 bindprocessor \
497 prctl \
498 timegm \
499 getpgid \
500 fopen64 \
501 getloadavg
502 )
503
504 dnl confirm that a void pointer is large enough to store a long integer
505 APACHE_CHECK_VOID_PTR_LEN
506
507 AC_CACHE_CHECK([for gettid()], ac_cv_gettid,
508 [AC_TRY_RUN(#define _GNU_SOURCE
509 #include <unistd.h>
510 #include <sys/syscall.h>
511 #include <sys/types.h>
512 int main(int argc, char **argv) {
513 pid_t t = syscall(SYS_gettid); return t == -1 ? 1 : 0; },
514 [ac_cv_gettid=yes], [ac_cv_gettid=no], [ac_cv_gettid=no])])
515 if test "$ac_cv_gettid" = "yes"; then
516     AC_DEFINE(HAVE_GETTID, 1, [Define if you have gettid()])
517 fi
518
519 dnl ## Check for the tm_gmtoff field in struct tm to get the timezone diffs
520 AC_CACHE_CHECK([for tm_gmtoff in struct tm], ac_cv_struct_tm_gmtoff,
521 [AC_TRY_COMPILE([#include <sys/types.h>
522 #include <time.h>], [struct tm tm; tm.tm_gmtoff;],
523   ac_cv_struct_tm_gmtoff=yes, ac_cv_struct_tm_gmtoff=no)])
524 if test "$ac_cv_struct_tm_gmtoff" = "yes"; then
525     AC_DEFINE(HAVE_GMTOFF, 1, [Define if struct tm has a tm_gmtoff field])
526 fi
527
528 dnl Check for systemd support for listen.c's socket activation.
529 case $host in
530 *-linux-*)
531       AC_CHECK_LIB(systemd-daemon, sd_notify, SYSTEMD_LIBS="-lsystemd-daemon")
532       AC_CHECK_HEADERS(systemd/sd-daemon.h)
533       if test "${ac_cv_header_systemd_sd_daemon_h}" = "no" || test -z "${SYSTEMD_LIBS}"; then
534         AC_MSG_WARN([Your system does not support systemd.])
535       else
536         APR_ADDTO(HTTPD_LIBS, [$SYSTEMD_LIBS])
537         AC_DEFINE(HAVE_SYSTEMD, 1, [Define if systemd is supported])
538       fi
539 esac
540
541 dnl ## Set up any appropriate OS-specific environment variables for apachectl
542
543 case $host in
544     *aix*)
545         # for 32-bit builds, increase MAXDATA to allow lots of threads
546         if test x$OBJECT_MODE != x64; then
547             OS_SPECIFIC_VARS="LDR_CNTRL=\"MAXDATA=0x80000000\" ; export LDR_CNTRL ;"
548         fi
549         OS_SPECIFIC_VARS="$OS_SPECIFIC_VARS AIXTHREAD_SCOPE=S ; export AIXTHREAD_SCOPE"
550         OS_SPECIFIC_VARS="$OS_SPECIFIC_VARS ; AIXTHREAD_MUTEX_DEBUG=OFF ; export AIXTHREAD_MUTEX_DEBUG"
551         OS_SPECIFIC_VARS="$OS_SPECIFIC_VARS ; AIXTHREAD_RWLOCK_DEBUG=OFF ; export AIXTHREAD_RWLOCK_DEBUG"
552         OS_SPECIFIC_VARS="$OS_SPECIFIC_VARS ; AIXTHREAD_COND_DEBUG=OFF ; export AIXTHREAD_COND_DEBUG"
553         OS_SPECIFIC_VARS="$OS_SPECIFIC_VARS ; SPINLOOPTIME=1000 ; export SPINLOOPTIME"
554         OS_SPECIFIC_VARS="$OS_SPECIFIC_VARS ; YIELDLOOPTIME=8 ; export YIELDLOOPTIME"
555         OS_SPECIFIC_VARS="$OS_SPECIFIC_VARS ; MALLOCMULTIHEAP=considersize,heaps:8 ; export MALLOCMULTIHEAP"
556         ;;
557     *os390*)
558         OS_SPECIFIC_VARS="export _CEE_RUNOPTS=\"STACK(,,ANY)\" ; export _EDC_ADD_ERRNO2=1"
559         ;;
560     *)
561         OS_SPECIFIC_VARS=""
562 esac
563       
564 AC_ARG_WITH(port,APACHE_HELP_STRING(--with-port=PORT,Port on which to listen (default is 80)),
565         [if test "$withval" = "yes"; then AC_MSG_ERROR('option --with-port requires a value (the TCP port number)'); else PORT="$withval"; fi],
566         [PORT=80])
567
568 AC_ARG_WITH(sslport,APACHE_HELP_STRING(--with-sslport=SSLPORT,Port on which to securelisten (default is 443)),
569         [if test "$withval" = "yes"; then AC_MSG_ERROR('option --with-sslport requires a value (the SSL TCP port number)'); else SSLPORT="$withval"; fi],
570         [SSLPORT=443])
571
572 DTRACE=true
573 AC_ARG_ENABLE(dtrace,APACHE_HELP_STRING(--enable-dtrace,Enable DTrace probes),
574 [
575   enable_dtrace=$enableval
576   if test "$enableval" = "yes"; then
577     APR_ADDTO(CPPFLAGS, -DAPR_DTRACE_PROVIDER)
578     AC_MSG_ERROR('DTrace Support in the build system is not complete. Patches Welcome!')
579   fi
580 ],
581 [
582   enable_dtrace=no
583 ])
584
585 dnl Disabled dtrace build for now.
586 enable_dtrace=no
587
588 case $host in
589   *-solaris2*)
590     if test $enable_dtrace = "yes" -a "$ac_cv_header_sys_sdt_h" = "yes"; then
591         AC_DEFINE(AP_ENABLE_DTRACE, 1,
592                   [Enable DTrace probes])
593         DTRACE="/usr/sbin/dtrace $DTRACEFLAGS"
594         test -f include/apache_probes.h || $DTRACE -h -s apache_probes.d -o include/apache_probes.h
595     fi
596     ;;
597 esac
598
599 APACHE_SUBST(DTRACE)
600
601 AC_ARG_ENABLE(hook-probes,APACHE_HELP_STRING(--enable-hook-probes,Enable APR hook probes),
602 [
603     if test "$enableval" = "yes"; then
604         AC_DEFINE(AP_HOOK_PROBES_ENABLED, 1,
605                   [Enable the APR hook probes capability, reading from ap_hook_probes.h])
606         APR_ADDTO(INTERNAL_CPPFLAGS, -DAP_HOOK_PROBES_ENABLED)
607     fi
608 ])dnl
609
610 AC_ARG_ENABLE(exception-hook,APACHE_HELP_STRING(--enable-exception-hook,Enable fatal exception hook),
611 [
612     if test "$enableval" = "yes"; then
613         AC_DEFINE(AP_ENABLE_EXCEPTION_HOOK, 1,
614                   [Allow modules to run hook after a fatal exception])
615     fi
616 ])dnl
617
618 AC_ARG_ENABLE(load-all-modules,APACHE_HELP_STRING(--enable-load-all-modules,Load all modules),
619 [
620   LOAD_ALL_MODULES=$enableval
621   AC_MSG_NOTICE([Setting "LOAD_ALL_MODULES" to $LOAD_ALL_MODULES])
622 ],
623 [
624   LOAD_ALL_MODULES="no"
625 ])
626
627 AC_ARG_ENABLE(maintainer-mode,APACHE_HELP_STRING(--enable-maintainer-mode,Turn on debugging and compile time warnings and load all compiled modules),
628 [
629   if test "$enableval" = "yes"; then
630     APR_ADDTO(CPPFLAGS, -DAP_DEBUG)
631     if test "$GCC" = "yes"; then
632       APR_ADDTO(CFLAGS,[-Wall -Wmissing-prototypes -Wstrict-prototypes -Wmissing-declarations -Wpointer-arith])
633       APACHE_ADD_GCC_CFLAG([-Wdeclaration-after-statement])
634       APACHE_ADD_GCC_CFLAG([-Werror=declaration-after-statement])
635       APACHE_ADD_GCC_CFLAG([-Wformat])
636       APACHE_ADD_GCC_CFLAG([-Wformat-security])
637       APACHE_ADD_GCC_CFLAG([-Werror=format-security])
638     elif test "$AIX_XLC" = "yes"; then
639       APR_ADDTO(CFLAGS,-qfullpath -qinitauto=FE -qcheck=all -qinfo=pro)
640     fi
641     if test "x$enable_load_all_modules" = "x"; then
642       LOAD_ALL_MODULES=yes
643       AC_MSG_NOTICE([Maintainer mode setting "LOAD_ALL_MODULES" to $LOAD_ALL_MODULES])
644     fi
645     if test "x$enable_bucketeer" = "x"; then
646       enable_bucketeer=yes
647       AC_MSG_NOTICE([Maintainer mode setting "enable_bucketeer" to yes])
648     fi
649   fi
650 ])dnl
651
652 AC_ARG_ENABLE(debugger-mode,APACHE_HELP_STRING(--enable-debugger-mode,Turn on debugging and compile time warnings and turn off optimization),
653 [
654   if test "$enableval" = "yes"; then
655     APR_ADDTO(CPPFLAGS, -DAP_DEBUG)
656     if test "$GCC" = "yes"; then
657       APR_ADDTO(CFLAGS,[-Wall -Wmissing-prototypes -Wstrict-prototypes -Wmissing-declarations -Wpointer-arith -O0])
658       APACHE_ADD_GCC_CFLAG([-Wdeclaration-after-statement])
659       APACHE_ADD_GCC_CFLAG([-Werror=declaration-after-statement])
660       APACHE_ADD_GCC_CFLAG([-Wformat])
661       APACHE_ADD_GCC_CFLAG([-Wformat-security])
662       APACHE_ADD_GCC_CFLAG([-Werror=format-security])
663     elif test "$AIX_XLC" = "yes"; then
664       APR_ADDTO(CFLAGS,-qfullpath -qinitauto=FE -qcheck=all -qinfo=pro)
665     fi
666   fi
667 ])dnl
668
669 dnl Conditionally enable PIE support for GNU toolchains.
670 AC_ARG_ENABLE(pie,APACHE_HELP_STRING(--enable-pie,Build httpd as a Position Independent Executable))
671 if test "$enable_pie" = "yes"; then
672    AC_CACHE_CHECK([whether $CC accepts PIE flags], [ap_cv_cc_pie], [
673      save_CFLAGS=$CFLAGS
674      save_LDFLAGS=$LDFLAGS
675      CFLAGS="$CFLAGS -fPIE"
676      LDFLAGS="$LDFLAGS -pie"
677      AC_TRY_RUN([static int foo[30000]; int main () { return 0; }],
678       [ap_cv_cc_pie=yes], [ap_cv_cc_pie=no], [ap_cv_cc_pie=yes])
679      CFLAGS=$save_CFLAGS
680      LDFLAGS=$save_LDFLAGS
681    ])
682    if test "$ap_cv_cc_pie" = "yes"; then
683      PICFLAGS="-fPIE"
684      PILDFLAGS="-pie"
685    else
686      AC_ERROR([--enable-pie requested but $CC failed using PIE flags])
687    fi
688 fi
689 APACHE_SUBST(PICFLAGS)
690 APACHE_SUBST(PILDFLAGS)
691
692 AC_ARG_WITH(valgrind,
693   [  --with-valgrind[[=DIR]]   Enable code to reduce valgrind false positives
694                           (optionally: set path to valgrind headers) ],
695   [ if test "$withval" != no; then
696       if test "$withval" = yes; then
697         withval=/usr/include/valgrind
698       fi
699       APR_ADDTO(CPPFLAGS, -I$withval)
700       AC_CHECK_HEADERS(valgrind.h memcheck.h)
701       APR_IFALLYES(header:valgrind.h header:memcheck.h,
702         [AC_DEFINE(HAVE_VALGRIND, 1, [Compile in valgrind support]) ],
703         [AC_MSG_ERROR(valgrind headers not found) ]
704       )
705     fi ]
706 )
707
708 prefix="$orig_prefix"
709 APACHE_ENABLE_MODULES
710
711 dnl reading config stubs
712 esyscmd(./build/config-stubs .)
713
714 APACHE_SUBST(progname)
715 APACHE_SUBST(OS)
716 APACHE_SUBST(OS_DIR)
717 APACHE_SUBST(BUILTIN_LIBS)
718 APACHE_SUBST(SHLIBPATH_VAR)
719 APACHE_SUBST(OS_SPECIFIC_VARS)
720 APACHE_SUBST(HTTPD_LIBS)
721
722 PRE_SHARED_CMDS='echo ""'
723 POST_SHARED_CMDS='echo ""'
724
725 dnl apache_need_shared tells us if Apache modules are being built as DSOs
726
727 if test "$apache_need_shared" = "yes"; then
728   if test -f $ac_aux_dir/ltconfig; then
729     $SHELL $ac_aux_dir/ltconfig --output=shlibtool --disable-static --srcdir=$ac_aux_dir --cache-file=./config.cache $ac_aux_dir/ltmain.sh
730   fi
731   shared_build="shared-build"
732 fi
733
734 dnl enable_so tells us if *any* modules can be built as DSOs
735
736 if test "$enable_so" = "yes" -o "$enable_so" = "static"; then
737   case $host in
738     *-ibm-aix*)
739       APR_ADDTO(HTTPD_LDFLAGS, [-Wl,-uXML_Parse -Wl,-bE:$abs_builddir/server/httpd.exp])
740       APR_ADDTO(SH_LDFLAGS, [\$(EXTRA_LDFLAGS) \$(EXTRA_LIBS)])
741       APR_ADDTO(UTIL_LDFLAGS, [-Wl,-uXML_Parse])
742       ;;
743     *os390)
744       APR_ADDTO(HTTPD_LDFLAGS, [--main=$abs_srcdir/server/main.o --core-dll=$abs_srcdir/apachecore.dll])
745       APR_ADDTO(SH_LDFLAGS, [--core-dll=$abs_srcdir/apachecore.dll])
746   esac
747   MOD_SO_ENABLED=yes
748 fi
749 AC_SUBST(MOD_SO_ENABLED)
750
751 APACHE_SUBST(PRE_SHARED_CMDS)
752 APACHE_SUBST(POST_SHARED_CMDS)
753 APACHE_SUBST(shared_build)
754
755 AC_ARG_WITH(program-name,
756 APACHE_HELP_STRING(--with-program-name,alternate executable name),[
757   progname="$withval" ], [
758   progname="httpd"] )
759
760 # SuExec parameters
761 AC_ARG_WITH(suexec-bin,
762 APACHE_HELP_STRING(--with-suexec-bin,Path to suexec binary),[
763   AC_DEFINE_UNQUOTED(SUEXEC_BIN, "$withval", [Path to suexec binary] )
764 ] )
765
766 AC_ARG_WITH(suexec-caller,
767 APACHE_HELP_STRING(--with-suexec-caller,User allowed to call SuExec),[
768   AC_DEFINE_UNQUOTED(AP_HTTPD_USER, "$withval", [User allowed to call SuExec] ) ] )
769
770 AC_ARG_WITH(suexec-userdir,
771 APACHE_HELP_STRING(--with-suexec-userdir,User subdirectory),[
772   AC_DEFINE_UNQUOTED(AP_USERDIR_SUFFIX, "$withval", [User subdirectory] ) ] )
773
774 AC_ARG_WITH(suexec-docroot,
775 APACHE_HELP_STRING(--with-suexec-docroot,SuExec root directory),[
776   AC_DEFINE_UNQUOTED(AP_DOC_ROOT, "$withval", [SuExec root directory] ) ] )
777
778 AC_ARG_WITH(suexec-uidmin,
779 APACHE_HELP_STRING(--with-suexec-uidmin,Minimal allowed UID),[
780   AC_DEFINE_UNQUOTED(AP_UID_MIN, $withval, [Minimum allowed UID] ) ] )
781
782 AC_ARG_WITH(suexec-gidmin,
783 APACHE_HELP_STRING(--with-suexec-gidmin,Minimal allowed GID),[
784   AC_DEFINE_UNQUOTED(AP_GID_MIN, $withval, [Minimum allowed GID] ) ] )
785
786 AC_ARG_WITH(suexec-logfile,
787 APACHE_HELP_STRING(--with-suexec-logfile,Set the logfile),[
788   if test "x$withval" = "xyes"; then
789     AC_MSG_ERROR([log filename required for --with-suexec-logfile option])
790   elif test "x$withval" != "xno"; then
791     AC_DEFINE_UNQUOTED(AP_LOG_EXEC, "$withval", [SuExec log file])
792   fi
793 ])
794
795 AC_ARG_WITH(suexec-syslog,
796 APACHE_HELP_STRING(--with-suexec-syslog,Set the logfile),[
797   if test $withval = "yes"; then
798     if test "x${with_suexec_logfile}" != "xno"; then
799       AC_MSG_NOTICE([hint: use "--without-suexec-logfile --with-suexec-syslog"])
800       AC_MSG_ERROR([suexec does not support both logging to file and syslog])
801     fi
802     AC_CHECK_FUNCS([vsyslog], [], [
803        AC_MSG_ERROR([cannot support syslog from suexec without vsyslog()])])
804     AC_DEFINE(AP_LOG_SYSLOG, 1, [SuExec log to syslog])
805   fi    
806 ])
807
808
809 AC_ARG_WITH(suexec-safepath,
810 APACHE_HELP_STRING(--with-suexec-safepath,Set the safepath),[
811   AC_DEFINE_UNQUOTED(AP_SAFE_PATH, "$withval", [safe shell path for SuExec] ) ] )
812
813 AC_ARG_WITH(suexec-umask,
814 APACHE_HELP_STRING(--with-suexec-umask,umask for suexec'd process),[
815   AC_DEFINE_UNQUOTED(AP_SUEXEC_UMASK, 0$withval, [umask for suexec'd process] ) ] )
816
817 INSTALL_SUEXEC=setuid
818 AC_ARG_ENABLE([suexec-capabilities], 
819 APACHE_HELP_STRING(--enable-suexec-capabilities,Use Linux capability bits not setuid root suexec), [
820   if test "$enableval" = "yes"; then
821     INSTALL_SUEXEC=caps
822     AC_DEFINE(AP_SUEXEC_CAPABILITIES, 1, 
823               [Enable if suexec is installed with Linux capabilities, not setuid])
824   fi
825 ])
826 APACHE_SUBST(INSTALL_SUEXEC)
827
828 dnl APR should go after the other libs, so the right symbols can be picked up
829 if test x${apu_found} != xobsolete; then
830   AP_LIBS="$AP_LIBS `$apu_config --avoid-ldap --link-libtool --libs`"
831 fi
832 AP_LIBS="$AP_LIBS `$apr_config --link-libtool --libs`" 
833 APACHE_SUBST(AP_LIBS)
834 APACHE_SUBST(AP_BUILD_SRCLIB_DIRS)
835 APACHE_SUBST(AP_CLEAN_SRCLIB_DIRS)
836
837 AC_DEFINE(AP_USING_AUTOCONF, 1,
838                 [Using autoconf to configure Apache])
839
840 if test "$SINGLE_LISTEN_UNSERIALIZED_ACCEPT" = "1"; then
841     AC_DEFINE(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, 1, 
842               [This platform doesn't suffer from the thundering herd problem])
843 fi
844
845 if test "$AP_NONBLOCK_WHEN_MULTI_LISTEN" = "1"; then
846     AC_DEFINE(AP_NONBLOCK_WHEN_MULTI_LISTEN, 1, 
847               [Listening sockets are non-blocking when there are more than 1])
848 fi
849
850 APR_CHECK_APR_DEFINE(APR_HAVE_IPV6)
851
852 AC_ARG_ENABLE(v4-mapped,APACHE_HELP_STRING(--enable-v4-mapped,Allow IPv6 sockets to handle IPv4 connections),
853
854   v4mapped=$enableval
855 ],
856 [
857     case $host in
858     *freebsd[1234].*)
859         v4mapped=yes
860         ;;
861     *freebsd*|*netbsd*|*openbsd*)
862         v4mapped=no
863         ;;
864     *)
865         v4mapped=yes
866         ;;
867     esac
868     if ap_mpm_is_enabled winnt; then
869         dnl WinNT MPM doesn't support this.
870         v4mapped=no
871     fi
872 ])
873
874 if test $v4mapped = "yes" -a $ac_cv_define_APR_HAVE_IPV6 = "yes"; then
875     AC_DEFINE(AP_ENABLE_V4_MAPPED, 1,
876               [Allow IPv4 connections on IPv6 listening sockets])
877 fi
878
879 AC_ARG_ENABLE(bsd-makefiles,APACHE_HELP_STRING(--enable-bsd-makefiles,use BSD Makefile syntax),
880 [
881   FORCE_BSD_MAKEFILE=$enableval
882   AC_MSG_NOTICE([Setting "FORCE_BSD_MAKEFILE" to $FORCE_BSD_MAKEFILE])
883 ],
884 [
885   FORCE_BSD_MAKEFILE="auto"
886 ])
887
888 APACHE_FAST_OUTPUT(Makefile modules/Makefile srclib/Makefile) 
889 APACHE_FAST_OUTPUT(os/Makefile server/Makefile)
890 APACHE_FAST_OUTPUT(support/Makefile)
891
892 if test -d ./test; then
893     APACHE_FAST_OUTPUT(test/Makefile)
894 fi
895
896 dnl ## Finalize the variables
897 AC_MSG_NOTICE([])
898 AC_MSG_NOTICE([Restore user-defined environment settings...])
899 AC_MSG_NOTICE([])
900
901 APR_RESTORE_THE_ENVIRONMENT(CPPFLAGS, EXTRA_)
902 APR_RESTORE_THE_ENVIRONMENT(CFLAGS, EXTRA_)
903 APR_RESTORE_THE_ENVIRONMENT(CXXFLAGS, EXTRA_)
904 APR_RESTORE_THE_ENVIRONMENT(LDFLAGS, EXTRA_)
905 APR_RESTORE_THE_ENVIRONMENT(LIBS, EXTRA_)
906 APR_RESTORE_THE_ENVIRONMENT(INCLUDES, EXTRA_)
907
908 AC_MSG_NOTICE([])
909 AC_MSG_NOTICE([Construct makefiles and header files...])
910 AC_MSG_NOTICE([])
911
912 APACHE_GEN_CONFIG_VARS
913
914 dnl ## Build modules.c
915 rm -f modules.c
916 echo $MODLIST | $AWK -f $srcdir/build/build-modules-c.awk > modules.c
917
918 APR_EXPAND_VAR(ap_prefix, $prefix)
919 AC_DEFINE_UNQUOTED(HTTPD_ROOT, "${ap_prefix}",
920         [Root directory of the Apache install area])
921 AC_DEFINE_UNQUOTED(SERVER_CONFIG_FILE, "${rel_sysconfdir}/${progname}.conf",
922         [Location of the config file, relative to the Apache root directory])
923 AC_DEFINE_UNQUOTED(AP_TYPES_CONFIG_FILE, "${rel_sysconfdir}/mime.types",
924         [Location of the MIME types config file, relative to the Apache root directory])
925
926 perlbin=`$ac_aux_dir/PrintPath perl`
927 if test "x$perlbin" = "x"; then
928     perlbin="/replace/with/path/to/perl/interpreter"
929 fi
930 AC_SUBST(perlbin)
931
932 dnl If we are running on a BSD variant, see if we need to use the BSD .include syntax.
933
934 ap_make_include=include
935 ap_make_ifdef=ifdef
936 ap_make_else=else
937 ap_make_endif=endif
938 ap_make_delimiter=' '
939 if test "x$FORCE_BSD_MAKEFILE" = "xno"; then
940   BSD_MAKEFILE=no
941 elif test "x$FORCE_BSD_MAKEFILE" = "xyes"; then
942   BSD_MAKEFILE=yes
943 else
944   case $host in
945   *bsd*)
946       # Check whether they've installed GNU make
947       if make --version > /dev/null 2>&1; then
948           BSD_MAKEFILE=no
949       else
950           BSD_MAKEFILE=yes
951       fi
952       ;;
953   *)
954       BSD_MAKEFILE=no
955       ;;
956   esac
957 fi
958 if test "x$BSD_MAKEFILE" = "xyes"; then
959   ap_make_include=.include
960   ap_make_ifdef=.ifdef
961   ap_make_else=.else
962   ap_make_endif=.endif
963   ap_make_delimiter='"'
964 fi
965 AC_MSG_NOTICE([using BSD Makefile syntax... $BSD_MAKEFILE])
966
967 AC_SUBST(ap_make_include)
968 AC_SUBST(ap_make_ifdef)
969 AC_SUBST(ap_make_else)
970 AC_SUBST(ap_make_endif)
971 AC_SUBST(ap_make_delimiter)
972
973 dnl Ensure that docs/conf is created.
974 test -d docs/conf||$mkdir_p docs/conf
975
976 AC_OUTPUT($APACHE_OUTPUT_FILES docs/conf/httpd.conf docs/conf/extra/httpd-autoindex.conf docs/conf/extra/httpd-dav.conf docs/conf/extra/httpd-default.conf docs/conf/extra/httpd-info.conf docs/conf/extra/httpd-languages.conf docs/conf/extra/httpd-manual.conf docs/conf/extra/httpd-mpm.conf docs/conf/extra/httpd-multilang-errordoc.conf docs/conf/extra/httpd-policy.conf docs/conf/extra/httpd-ssl.conf docs/conf/extra/httpd-userdir.conf docs/conf/extra/httpd-vhosts.conf docs/conf/extra/proxy-html.conf include/ap_config_layout.h support/apxs support/apachectl support/dbmmanage support/envvars-std support/log_server_status support/logresolve.pl support/phf_abuse_log.cgi support/split-logfile build/rules.mk build/pkg/pkginfo build/config_vars.sh,[true],[
977   APACHE_GEN_MAKEFILES
978 ])