]> granicus.if.org Git - apache/blob - configure.in
update Japanese translations
[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 save_CPPFLAGS="$CPPFLAGS"
276 CPPFLAGS="$CPPFLAGS $PCRE_INCLUDES"
277 AC_EGREP_CPP(yes,
278 [
279 #include <pcre.h>
280 #ifdef PCRE_DUPNAMES
281 yes
282 #endif
283 ],pcre_have_dupnames=yes,pcre_have_dupnames=no)
284 if test "$pcre_have_dupnames" != "yes"; then
285     AC_MSG_ERROR([pcre version does not support PCRE_DUPNAMES])
286 fi
287 CPPFLAGS="$save_CPPFLAGS"
288
289 AC_MSG_NOTICE([])
290 AC_MSG_NOTICE([Applying OS-specific hints for httpd...])
291 AC_MSG_NOTICE([])
292
293 case $host in
294   *os2*)
295       # Use a custom made libtool replacement
296       echo "using aplibtool"
297       LIBTOOL="$abs_srcdir/srclib/apr/build/aplibtool"
298       SH_LIBTOOL="$LIBTOOL --shared --export-all"
299       SH_LIBS="\$(ALL_LIBS)"
300       CORE_IMPLIB_FILE="ApacheCoreOS2.la"
301       CORE_IMPLIB="$abs_srcdir/server/$CORE_IMPLIB_FILE"
302       MK_IMPLIB="emximp"
303       other_targets="$other_targets os2core"
304       INSTALL_PROG_FLAGS="-e .exe"
305       SHLTCFLAGS=""
306       LTCFLAGS=""
307       ;;
308   *)
309       if test "x$LTFLAGS" = "x"; then
310           LTFLAGS='--silent'
311       fi
312       my_libtool=`$apr_config --apr-libtool`
313       LIBTOOL="$my_libtool \$(LTFLAGS)"
314       libtoolversion=`$my_libtool --version`
315       case $libtoolversion in
316           *1.[[45]]* | *[[2-9]].[[0-9]]*)
317               SH_LIBTOOL='$(LIBTOOL)'
318               SHLTCFLAGS="-prefer-pic"
319               LTCFLAGS="-prefer-non-pic -static"
320               ;;
321           *)
322               SH_LIBTOOL='$(SHELL) $(top_builddir)/shlibtool $(LTFLAGS)'
323               SHLTCFLAGS=""
324               LTCFLAGS=""
325               ;;
326       esac
327       ;;
328 esac
329 APACHE_SUBST(SHLTCFLAGS)
330 APACHE_SUBST(LTCFLAGS)
331
332 case $host in
333   *-apple-aux3*)
334       APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1])
335       ;;
336   *os2-emx*)
337       APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1])
338       ;;
339   *-linux-*)
340       case `uname -r` in
341         # Unserialized accept() was not recommended until Linux 2.2.
342         [[01]].* | 2.[[01]]* )
343             ;;
344         * )
345             APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1])
346             ;;
347       esac
348       ;;
349   *486-*-bsdi* | *-netbsd* | *-freebsd* | *-apple-darwin* | *-dec-osf* | *-qnx)
350       APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1])
351       ;;
352   *-solaris2*)
353       dnl This is a hack -- we should be using AC_TRY_RUN instead
354       ap_platform_runtime_link_flag="-R"
355       dnl solaris 8 and above don't have a thundering herd
356       dnl not sure about rev's before this one.
357       case `uname -r` in
358         5.[567]*)
359             ;;
360         * )
361             APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1])
362             ;;
363       esac
364       ;;
365   *cygwin*)
366       APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1])
367       ;;
368   *mingw32*)
369       APR_ADDTO(INTERNAL_CPPFLAGS, [-DAP_DECLARE_EXPORT])
370       APR_ADDTO(INTERNAL_CPPFLAGS, [-DAPREQ_DECLARE_EXPORT])
371       APR_SETIFNULL(ac_cv_func_times, [no])
372       APR_SETIFNULL(ac_cv_func_getpwnam, [no])
373       APR_SETIFNULL(ac_cv_func_getgrnam, [no])
374       ;;
375   *aix*)
376       aixver=`echo $host | sed 's/^[[^0-9]]*//' | sed 's/\.//g'`
377       if test $aixver -ge 4320; then
378         APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1])
379       fi
380       ;;
381   *os390*)
382       APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1])
383       ;;
384 esac
385
386 APR_SETVAR(AP_NONBLOCK_WHEN_MULTI_LISTEN, [1])
387
388 dnl
389 dnl Process command line arguments. This is done early in the process so the
390 dnl user can get feedback quickly in case of an error.
391 dnl
392 dnl ### need to move some of the arguments "up here"
393
394 dnl ## Check for programs
395
396 AC_PATH_PROG(RM, rm)
397 AC_PATH_PROG(PKGCONFIG, pkg-config)
398 AC_PATH_PROG(RSYNC, rsync)
399 AC_PROG_AWK
400 AC_PROG_LN_S
401 AC_CHECK_TOOL(RANLIB, ranlib, true)
402 dnl AC_PATH_PROG(PERL_PATH, perl)
403 AC_CHECK_PROGS(LYNX_PATH,[lynx links elinks], [lynx])
404
405 # Hard-coded install programs
406 MKINSTALLDIRS="\$(abs_srcdir)/build/mkdir.sh"
407 INSTALL="\$(LIBTOOL) --mode=install \$(abs_srcdir)/build/install.sh -c"
408 APACHE_SUBST(MKINSTALLDIRS)
409 APACHE_SUBST(INSTALL)
410
411 dnl Various OS checks that apparently set required flags
412 ifdef([AC_USE_SYSTEM_EXTENSIONS], [
413 AC_USE_SYSTEM_EXTENSIONS
414 ], [
415 AC_AIX
416 AC_MINIX
417 ])
418
419 AC_ISC_POSIX
420
421 # Ensure that satisfactory versions of apr and apr-util are 
422 # found if external copies are configured.
423 if test "${apr_found}" = "yes"; then
424   # Require at least APR 1.3.x otherwise fail
425   APACHE_CHECK_APxVER([apr], 1, 3)
426 fi
427
428 if test "${apu_found}" = "yes"; then
429   # Require at least APR-util 1.3.x otherwise fail
430   if test "${apr_found}" = "yes"; then
431     # we need to add the APR includes to CPPFLAGS
432     apu_ckver_CPPFLAGS="$CPPFLAGS"
433     CPPFLAGS="$CPPFLAGS `$apr_config --includes`"
434     APACHE_CHECK_APxVER([apu], 1, 3)
435     CPPFLAGS="$apu_ckver_CPPFLAGS"
436   else
437     APACHE_CHECK_APxVER([apu], 1, 3)
438   fi
439 fi
440
441 dnl Check for what we can generate dependency files with
442 APR_CHECK_DEPEND
443
444 dnl ## Check for libraries
445
446 dnl ## Check for header files
447
448 dnl I think these are just used all over the place, so just check for
449 dnl them at the base of the tree. If some are specific to a single
450 dnl directory, they should be moved (Comment #Spoon)
451
452 dnl Regarding standard header files: AC_HEADER_STDC doesn't set symbols
453 dnl HAVE_STRING_H, HAVE_STDLIB_H, etc., so those are checked for
454 dnl explicitly so that the normal HAVE_xxx_H symbol is defined.
455
456 AC_HEADER_STDC
457 AC_CHECK_HEADERS( \
458 string.h \
459 limits.h \
460 unistd.h \
461 sys/socket.h \
462 pwd.h \
463 grp.h \
464 strings.h \
465 sys/prctl.h \
466 sys/processor.h \
467 sys/sem.h \
468 sys/sdt.h \
469 sys/loadavg.h
470 )
471 AC_HEADER_SYS_WAIT
472
473 dnl ## Check for typedefs, structures, and compiler characteristics.
474
475 AC_C_CONST
476
477 dnl ## Check for library functions
478 dnl ## sqrt() only needed in support/ab.c
479 saved_LIBS="$LIBS"
480 LIBS=""
481 AC_SEARCH_LIBS(sqrt, m)
482 MATH_LIBS="$LIBS"
483 APACHE_SUBST(MATH_LIBS)
484 LIBS="$saved_LIBS"
485
486 saved_LIBS="$LIBS"
487 LIBS=""
488 AC_SEARCH_LIBS(crypt, crypt)
489 CRYPT_LIBS="$LIBS"
490 APACHE_SUBST(CRYPT_LIBS)
491 LIBS="$saved_LIBS"
492
493 dnl See Comment #Spoon
494
495 AC_CHECK_FUNCS( \
496 getpwnam \
497 getgrnam \
498 initgroups \
499 bindprocessor \
500 prctl \
501 timegm \
502 getpgid \
503 fopen64 \
504 getloadavg
505 )
506
507 dnl confirm that a void pointer is large enough to store a long integer
508 APACHE_CHECK_VOID_PTR_LEN
509
510 AC_CACHE_CHECK([for gettid()], ac_cv_gettid,
511 [AC_TRY_RUN(#define _GNU_SOURCE
512 #include <unistd.h>
513 #include <sys/syscall.h>
514 #include <sys/types.h>
515 int main(int argc, char **argv) {
516 pid_t t = syscall(SYS_gettid); return t == -1 ? 1 : 0; },
517 [ac_cv_gettid=yes], [ac_cv_gettid=no], [ac_cv_gettid=no])])
518 if test "$ac_cv_gettid" = "yes"; then
519     AC_DEFINE(HAVE_GETTID, 1, [Define if you have gettid()])
520 fi
521
522 dnl ## Check for the tm_gmtoff field in struct tm to get the timezone diffs
523 AC_CACHE_CHECK([for tm_gmtoff in struct tm], ac_cv_struct_tm_gmtoff,
524 [AC_TRY_COMPILE([#include <sys/types.h>
525 #include <time.h>], [struct tm tm; tm.tm_gmtoff;],
526   ac_cv_struct_tm_gmtoff=yes, ac_cv_struct_tm_gmtoff=no)])
527 if test "$ac_cv_struct_tm_gmtoff" = "yes"; then
528     AC_DEFINE(HAVE_GMTOFF, 1, [Define if struct tm has a tm_gmtoff field])
529 fi
530
531 dnl Check for systemd support for listen.c's socket activation.
532 case $host in
533 *-linux-*)
534       AC_CHECK_LIB(systemd-daemon, sd_notify, SYSTEMD_LIBS="-lsystemd-daemon")
535       AC_CHECK_HEADERS(systemd/sd-daemon.h)
536       if test "${ac_cv_header_systemd_sd_daemon_h}" = "no" || test -z "${SYSTEMD_LIBS}"; then
537         AC_MSG_WARN([Your system does not support systemd.])
538       else
539         APR_ADDTO(HTTPD_LIBS, [$SYSTEMD_LIBS])
540         AC_DEFINE(HAVE_SYSTEMD, 1, [Define if systemd is supported])
541       fi
542 esac
543
544 dnl ## Set up any appropriate OS-specific environment variables for apachectl
545
546 case $host in
547     *aix*)
548         # for 32-bit builds, increase MAXDATA to allow lots of threads
549         if test x$OBJECT_MODE != x64; then
550             OS_SPECIFIC_VARS="LDR_CNTRL=\"MAXDATA=0x80000000\" ; export LDR_CNTRL ;"
551         fi
552         OS_SPECIFIC_VARS="$OS_SPECIFIC_VARS AIXTHREAD_SCOPE=S ; export AIXTHREAD_SCOPE"
553         OS_SPECIFIC_VARS="$OS_SPECIFIC_VARS ; AIXTHREAD_MUTEX_DEBUG=OFF ; export AIXTHREAD_MUTEX_DEBUG"
554         OS_SPECIFIC_VARS="$OS_SPECIFIC_VARS ; AIXTHREAD_RWLOCK_DEBUG=OFF ; export AIXTHREAD_RWLOCK_DEBUG"
555         OS_SPECIFIC_VARS="$OS_SPECIFIC_VARS ; AIXTHREAD_COND_DEBUG=OFF ; export AIXTHREAD_COND_DEBUG"
556         OS_SPECIFIC_VARS="$OS_SPECIFIC_VARS ; SPINLOOPTIME=1000 ; export SPINLOOPTIME"
557         OS_SPECIFIC_VARS="$OS_SPECIFIC_VARS ; YIELDLOOPTIME=8 ; export YIELDLOOPTIME"
558         OS_SPECIFIC_VARS="$OS_SPECIFIC_VARS ; MALLOCMULTIHEAP=considersize,heaps:8 ; export MALLOCMULTIHEAP"
559         ;;
560     *os390*)
561         OS_SPECIFIC_VARS="export _CEE_RUNOPTS=\"STACK(,,ANY)\" ; export _EDC_ADD_ERRNO2=1"
562         ;;
563     *)
564         OS_SPECIFIC_VARS=""
565 esac
566       
567 AC_ARG_WITH(port,APACHE_HELP_STRING(--with-port=PORT,Port on which to listen (default is 80)),
568         [if test "$withval" = "yes"; then AC_MSG_ERROR('option --with-port requires a value (the TCP port number)'); else PORT="$withval"; fi],
569         [PORT=80])
570
571 AC_ARG_WITH(sslport,APACHE_HELP_STRING(--with-sslport=SSLPORT,Port on which to securelisten (default is 443)),
572         [if test "$withval" = "yes"; then AC_MSG_ERROR('option --with-sslport requires a value (the SSL TCP port number)'); else SSLPORT="$withval"; fi],
573         [SSLPORT=443])
574
575 DTRACE=true
576 AC_ARG_ENABLE(dtrace,APACHE_HELP_STRING(--enable-dtrace,Enable DTrace probes),
577 [
578   enable_dtrace=$enableval
579   if test "$enableval" = "yes"; then
580     APR_ADDTO(CPPFLAGS, -DAPR_DTRACE_PROVIDER)
581     AC_MSG_ERROR('DTrace Support in the build system is not complete. Patches Welcome!')
582   fi
583 ],
584 [
585   enable_dtrace=no
586 ])
587
588 dnl Disabled dtrace build for now.
589 enable_dtrace=no
590
591 case $host in
592   *-solaris2*)
593     if test $enable_dtrace = "yes" -a "$ac_cv_header_sys_sdt_h" = "yes"; then
594         AC_DEFINE(AP_ENABLE_DTRACE, 1,
595                   [Enable DTrace probes])
596         DTRACE="/usr/sbin/dtrace $DTRACEFLAGS"
597         test -f include/apache_probes.h || $DTRACE -h -s apache_probes.d -o include/apache_probes.h
598     fi
599     ;;
600 esac
601
602 APACHE_SUBST(DTRACE)
603
604 AC_ARG_ENABLE(hook-probes,APACHE_HELP_STRING(--enable-hook-probes,Enable APR hook probes),
605 [
606     if test "$enableval" = "yes"; then
607         AC_DEFINE(AP_HOOK_PROBES_ENABLED, 1,
608                   [Enable the APR hook probes capability, reading from ap_hook_probes.h])
609         APR_ADDTO(INTERNAL_CPPFLAGS, -DAP_HOOK_PROBES_ENABLED)
610     fi
611 ])dnl
612
613 AC_ARG_ENABLE(exception-hook,APACHE_HELP_STRING(--enable-exception-hook,Enable fatal exception hook),
614 [
615     if test "$enableval" = "yes"; then
616         AC_DEFINE(AP_ENABLE_EXCEPTION_HOOK, 1,
617                   [Allow modules to run hook after a fatal exception])
618     fi
619 ])dnl
620
621 AC_ARG_ENABLE(load-all-modules,APACHE_HELP_STRING(--enable-load-all-modules,Load all modules),
622 [
623   LOAD_ALL_MODULES=$enableval
624   AC_MSG_NOTICE([Setting "LOAD_ALL_MODULES" to $LOAD_ALL_MODULES])
625 ],
626 [
627   LOAD_ALL_MODULES="no"
628 ])
629
630 AC_ARG_ENABLE(maintainer-mode,APACHE_HELP_STRING(--enable-maintainer-mode,Turn on debugging and compile time warnings and load all compiled modules),
631 [
632   if test "$enableval" = "yes"; then
633     APR_ADDTO(CPPFLAGS, -DAP_DEBUG)
634     if test "$GCC" = "yes"; then
635       APR_ADDTO(CFLAGS,[-Wall -Wmissing-prototypes -Wstrict-prototypes -Wmissing-declarations -Wpointer-arith])
636       APACHE_ADD_GCC_CFLAG([-Wdeclaration-after-statement])
637       APACHE_ADD_GCC_CFLAG([-Werror=declaration-after-statement])
638       APACHE_ADD_GCC_CFLAG([-Wformat])
639       APACHE_ADD_GCC_CFLAG([-Wformat-security])
640       APACHE_ADD_GCC_CFLAG([-Werror=format-security])
641     elif test "$AIX_XLC" = "yes"; then
642       APR_ADDTO(CFLAGS,-qfullpath -qinitauto=FE -qcheck=all -qinfo=pro)
643     fi
644     if test "x$enable_load_all_modules" = "x"; then
645       LOAD_ALL_MODULES=yes
646       AC_MSG_NOTICE([Maintainer mode setting "LOAD_ALL_MODULES" to $LOAD_ALL_MODULES])
647     fi
648     if test "x$enable_bucketeer" = "x"; then
649       enable_bucketeer=yes
650       AC_MSG_NOTICE([Maintainer mode setting "enable_bucketeer" to yes])
651     fi
652   fi
653 ])dnl
654
655 AC_ARG_ENABLE(debugger-mode,APACHE_HELP_STRING(--enable-debugger-mode,Turn on debugging and compile time warnings and turn off optimization),
656 [
657   if test "$enableval" = "yes"; then
658     APR_ADDTO(CPPFLAGS, -DAP_DEBUG)
659     if test "$GCC" = "yes"; then
660       APR_ADDTO(CFLAGS,[-Wall -Wmissing-prototypes -Wstrict-prototypes -Wmissing-declarations -Wpointer-arith -O0])
661       APACHE_ADD_GCC_CFLAG([-Wdeclaration-after-statement])
662       APACHE_ADD_GCC_CFLAG([-Werror=declaration-after-statement])
663       APACHE_ADD_GCC_CFLAG([-Wformat])
664       APACHE_ADD_GCC_CFLAG([-Wformat-security])
665       APACHE_ADD_GCC_CFLAG([-Werror=format-security])
666     elif test "$AIX_XLC" = "yes"; then
667       APR_ADDTO(CFLAGS,-qfullpath -qinitauto=FE -qcheck=all -qinfo=pro)
668     fi
669   fi
670 ])dnl
671
672 dnl Conditionally enable PIE support for GNU toolchains.
673 AC_ARG_ENABLE(pie,APACHE_HELP_STRING(--enable-pie,Build httpd as a Position Independent Executable))
674 if test "$enable_pie" = "yes"; then
675    AC_CACHE_CHECK([whether $CC accepts PIE flags], [ap_cv_cc_pie], [
676      save_CFLAGS=$CFLAGS
677      save_LDFLAGS=$LDFLAGS
678      CFLAGS="$CFLAGS -fPIE"
679      LDFLAGS="$LDFLAGS -pie"
680      AC_TRY_RUN([static int foo[30000]; int main () { return 0; }],
681       [ap_cv_cc_pie=yes], [ap_cv_cc_pie=no], [ap_cv_cc_pie=yes])
682      CFLAGS=$save_CFLAGS
683      LDFLAGS=$save_LDFLAGS
684    ])
685    if test "$ap_cv_cc_pie" = "yes"; then
686      PICFLAGS="-fPIE"
687      PILDFLAGS="-pie"
688    else
689      AC_ERROR([--enable-pie requested but $CC failed using PIE flags])
690    fi
691 fi
692 APACHE_SUBST(PICFLAGS)
693 APACHE_SUBST(PILDFLAGS)
694
695 AC_ARG_WITH(valgrind,
696   [  --with-valgrind[[=DIR]]   Enable code to reduce valgrind false positives
697                           (optionally: set path to valgrind headers) ],
698   [ if test "$withval" != no; then
699       if test "$withval" = yes; then
700         withval=/usr/include/valgrind
701       fi
702       APR_ADDTO(CPPFLAGS, -I$withval)
703       AC_CHECK_HEADERS(valgrind.h memcheck.h)
704       APR_IFALLYES(header:valgrind.h header:memcheck.h,
705         [AC_DEFINE(HAVE_VALGRIND, 1, [Compile in valgrind support]) ],
706         [AC_MSG_ERROR(valgrind headers not found) ]
707       )
708     fi ]
709 )
710
711 prefix="$orig_prefix"
712 APACHE_ENABLE_MODULES
713
714 dnl reading config stubs
715 esyscmd(./build/config-stubs .)
716
717 APACHE_SUBST(progname)
718 APACHE_SUBST(OS)
719 APACHE_SUBST(OS_DIR)
720 APACHE_SUBST(BUILTIN_LIBS)
721 APACHE_SUBST(SHLIBPATH_VAR)
722 APACHE_SUBST(OS_SPECIFIC_VARS)
723 APACHE_SUBST(HTTPD_LIBS)
724
725 PRE_SHARED_CMDS='echo ""'
726 POST_SHARED_CMDS='echo ""'
727
728 dnl apache_need_shared tells us if Apache modules are being built as DSOs
729
730 if test "$apache_need_shared" = "yes"; then
731   if test -f $ac_aux_dir/ltconfig; then
732     $SHELL $ac_aux_dir/ltconfig --output=shlibtool --disable-static --srcdir=$ac_aux_dir --cache-file=./config.cache $ac_aux_dir/ltmain.sh
733   fi
734   shared_build="shared-build"
735 fi
736
737 dnl enable_so tells us if *any* modules can be built as DSOs
738
739 if test "$enable_so" = "yes" -o "$enable_so" = "static"; then
740   case $host in
741     *-ibm-aix*)
742       APR_ADDTO(HTTPD_LDFLAGS, [-Wl,-uXML_Parse -Wl,-bE:$abs_builddir/server/httpd.exp])
743       APR_ADDTO(SH_LDFLAGS, [\$(EXTRA_LDFLAGS) \$(EXTRA_LIBS)])
744       APR_ADDTO(UTIL_LDFLAGS, [-Wl,-uXML_Parse])
745       ;;
746     *os390)
747       APR_ADDTO(HTTPD_LDFLAGS, [--main=$abs_srcdir/server/main.o --core-dll=$abs_srcdir/apachecore.dll])
748       APR_ADDTO(SH_LDFLAGS, [--core-dll=$abs_srcdir/apachecore.dll])
749   esac
750   MOD_SO_ENABLED=yes
751 fi
752 AC_SUBST(MOD_SO_ENABLED)
753
754 APACHE_SUBST(PRE_SHARED_CMDS)
755 APACHE_SUBST(POST_SHARED_CMDS)
756 APACHE_SUBST(shared_build)
757
758 AC_ARG_WITH(program-name,
759 APACHE_HELP_STRING(--with-program-name,alternate executable name),[
760   progname="$withval" ], [
761   progname="httpd"] )
762
763 # SuExec parameters
764 AC_ARG_WITH(suexec-bin,
765 APACHE_HELP_STRING(--with-suexec-bin,Path to suexec binary),[
766   AC_DEFINE_UNQUOTED(SUEXEC_BIN, "$withval", [Path to suexec binary] )
767 ] )
768
769 AC_ARG_WITH(suexec-caller,
770 APACHE_HELP_STRING(--with-suexec-caller,User allowed to call SuExec),[
771   AC_DEFINE_UNQUOTED(AP_HTTPD_USER, "$withval", [User allowed to call SuExec] ) ] )
772
773 AC_ARG_WITH(suexec-userdir,
774 APACHE_HELP_STRING(--with-suexec-userdir,User subdirectory),[
775   AC_DEFINE_UNQUOTED(AP_USERDIR_SUFFIX, "$withval", [User subdirectory] ) ] )
776
777 AC_ARG_WITH(suexec-docroot,
778 APACHE_HELP_STRING(--with-suexec-docroot,SuExec root directory),[
779   AC_DEFINE_UNQUOTED(AP_DOC_ROOT, "$withval", [SuExec root directory] ) ] )
780
781 AC_ARG_WITH(suexec-uidmin,
782 APACHE_HELP_STRING(--with-suexec-uidmin,Minimal allowed UID),[
783   AC_DEFINE_UNQUOTED(AP_UID_MIN, $withval, [Minimum allowed UID] ) ] )
784
785 AC_ARG_WITH(suexec-gidmin,
786 APACHE_HELP_STRING(--with-suexec-gidmin,Minimal allowed GID),[
787   AC_DEFINE_UNQUOTED(AP_GID_MIN, $withval, [Minimum allowed GID] ) ] )
788
789 AC_ARG_WITH(suexec-logfile,
790 APACHE_HELP_STRING(--with-suexec-logfile,Set the logfile),[
791   if test "x$withval" = "xyes"; then
792     AC_MSG_ERROR([log filename required for --with-suexec-logfile option])
793   elif test "x$withval" != "xno"; then
794     AC_DEFINE_UNQUOTED(AP_LOG_EXEC, "$withval", [SuExec log file])
795   fi
796 ])
797
798 AC_ARG_WITH(suexec-syslog,
799 APACHE_HELP_STRING(--with-suexec-syslog,Set the logfile),[
800   if test $withval = "yes"; then
801     if test "x${with_suexec_logfile}" != "xno"; then
802       AC_MSG_NOTICE([hint: use "--without-suexec-logfile --with-suexec-syslog"])
803       AC_MSG_ERROR([suexec does not support both logging to file and syslog])
804     fi
805     AC_CHECK_FUNCS([vsyslog], [], [
806        AC_MSG_ERROR([cannot support syslog from suexec without vsyslog()])])
807     AC_DEFINE(AP_LOG_SYSLOG, 1, [SuExec log to syslog])
808   fi    
809 ])
810
811
812 AC_ARG_WITH(suexec-safepath,
813 APACHE_HELP_STRING(--with-suexec-safepath,Set the safepath),[
814   AC_DEFINE_UNQUOTED(AP_SAFE_PATH, "$withval", [safe shell path for SuExec] ) ] )
815
816 AC_ARG_WITH(suexec-umask,
817 APACHE_HELP_STRING(--with-suexec-umask,umask for suexec'd process),[
818   AC_DEFINE_UNQUOTED(AP_SUEXEC_UMASK, 0$withval, [umask for suexec'd process] ) ] )
819
820 INSTALL_SUEXEC=setuid
821 AC_ARG_ENABLE([suexec-capabilities], 
822 APACHE_HELP_STRING(--enable-suexec-capabilities,Use Linux capability bits not setuid root suexec), [
823   if test "$enableval" = "yes"; then
824     INSTALL_SUEXEC=caps
825     AC_DEFINE(AP_SUEXEC_CAPABILITIES, 1, 
826               [Enable if suexec is installed with Linux capabilities, not setuid])
827   fi
828 ])
829 APACHE_SUBST(INSTALL_SUEXEC)
830
831 dnl APR should go after the other libs, so the right symbols can be picked up
832 if test x${apu_found} != xobsolete; then
833   AP_LIBS="$AP_LIBS `$apu_config --avoid-ldap --link-libtool --libs`"
834 fi
835 AP_LIBS="$AP_LIBS `$apr_config --link-libtool --libs`" 
836 APACHE_SUBST(AP_LIBS)
837 APACHE_SUBST(AP_BUILD_SRCLIB_DIRS)
838 APACHE_SUBST(AP_CLEAN_SRCLIB_DIRS)
839
840 AC_DEFINE(AP_USING_AUTOCONF, 1,
841                 [Using autoconf to configure Apache])
842
843 if test "$SINGLE_LISTEN_UNSERIALIZED_ACCEPT" = "1"; then
844     AC_DEFINE(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, 1, 
845               [This platform doesn't suffer from the thundering herd problem])
846 fi
847
848 if test "$AP_NONBLOCK_WHEN_MULTI_LISTEN" = "1"; then
849     AC_DEFINE(AP_NONBLOCK_WHEN_MULTI_LISTEN, 1, 
850               [Listening sockets are non-blocking when there are more than 1])
851 fi
852
853 APR_CHECK_APR_DEFINE(APR_HAVE_IPV6)
854
855 AC_ARG_ENABLE(v4-mapped,APACHE_HELP_STRING(--enable-v4-mapped,Allow IPv6 sockets to handle IPv4 connections),
856
857   v4mapped=$enableval
858 ],
859 [
860     case $host in
861     *freebsd[1234].*)
862         v4mapped=yes
863         ;;
864     *freebsd*|*netbsd*|*openbsd*)
865         v4mapped=no
866         ;;
867     *)
868         v4mapped=yes
869         ;;
870     esac
871     if ap_mpm_is_enabled winnt; then
872         dnl WinNT MPM doesn't support this.
873         v4mapped=no
874     fi
875 ])
876
877 if test $v4mapped = "yes" -a $ac_cv_define_APR_HAVE_IPV6 = "yes"; then
878     AC_DEFINE(AP_ENABLE_V4_MAPPED, 1,
879               [Allow IPv4 connections on IPv6 listening sockets])
880 fi
881
882 AC_ARG_ENABLE(bsd-makefiles,APACHE_HELP_STRING(--enable-bsd-makefiles,use BSD Makefile syntax),
883 [
884   FORCE_BSD_MAKEFILE=$enableval
885   AC_MSG_NOTICE([Setting "FORCE_BSD_MAKEFILE" to $FORCE_BSD_MAKEFILE])
886 ],
887 [
888   FORCE_BSD_MAKEFILE="auto"
889 ])
890
891 APACHE_FAST_OUTPUT(Makefile modules/Makefile srclib/Makefile) 
892 APACHE_FAST_OUTPUT(os/Makefile server/Makefile)
893 APACHE_FAST_OUTPUT(support/Makefile)
894
895 if test -d ./test; then
896     APACHE_FAST_OUTPUT(test/Makefile)
897 fi
898
899 dnl ## Finalize the variables
900 AC_MSG_NOTICE([])
901 AC_MSG_NOTICE([Restore user-defined environment settings...])
902 AC_MSG_NOTICE([])
903
904 APR_RESTORE_THE_ENVIRONMENT(CPPFLAGS, EXTRA_)
905 APR_RESTORE_THE_ENVIRONMENT(CFLAGS, EXTRA_)
906 APR_RESTORE_THE_ENVIRONMENT(CXXFLAGS, EXTRA_)
907 APR_RESTORE_THE_ENVIRONMENT(LDFLAGS, EXTRA_)
908 APR_RESTORE_THE_ENVIRONMENT(LIBS, EXTRA_)
909 APR_RESTORE_THE_ENVIRONMENT(INCLUDES, EXTRA_)
910
911 AC_MSG_NOTICE([])
912 AC_MSG_NOTICE([Construct makefiles and header files...])
913 AC_MSG_NOTICE([])
914
915 APACHE_GEN_CONFIG_VARS
916
917 dnl ## Build modules.c
918 rm -f modules.c
919 echo $MODLIST | $AWK -f $srcdir/build/build-modules-c.awk > modules.c
920
921 APR_EXPAND_VAR(ap_prefix, $prefix)
922 AC_DEFINE_UNQUOTED(HTTPD_ROOT, "${ap_prefix}",
923         [Root directory of the Apache install area])
924 AC_DEFINE_UNQUOTED(SERVER_CONFIG_FILE, "${rel_sysconfdir}/${progname}.conf",
925         [Location of the config file, relative to the Apache root directory])
926 AC_DEFINE_UNQUOTED(AP_TYPES_CONFIG_FILE, "${rel_sysconfdir}/mime.types",
927         [Location of the MIME types config file, relative to the Apache root directory])
928
929 perlbin=`$ac_aux_dir/PrintPath perl`
930 if test "x$perlbin" = "x"; then
931     perlbin="/replace/with/path/to/perl/interpreter"
932 fi
933 AC_SUBST(perlbin)
934
935 dnl If we are running on a BSD variant, see if we need to use the BSD .include syntax.
936
937 ap_make_include=include
938 ap_make_ifdef=ifdef
939 ap_make_else=else
940 ap_make_endif=endif
941 ap_make_delimiter=' '
942 if test "x$FORCE_BSD_MAKEFILE" = "xno"; then
943   BSD_MAKEFILE=no
944 elif test "x$FORCE_BSD_MAKEFILE" = "xyes"; then
945   BSD_MAKEFILE=yes
946 else
947   case $host in
948   *bsd*)
949       # Check whether they've installed GNU make
950       if make --version > /dev/null 2>&1; then
951           BSD_MAKEFILE=no
952       else
953           BSD_MAKEFILE=yes
954       fi
955       ;;
956   *)
957       BSD_MAKEFILE=no
958       ;;
959   esac
960 fi
961 if test "x$BSD_MAKEFILE" = "xyes"; then
962   ap_make_include=.include
963   ap_make_ifdef=.ifdef
964   ap_make_else=.else
965   ap_make_endif=.endif
966   ap_make_delimiter='"'
967 fi
968 AC_MSG_NOTICE([using BSD Makefile syntax... $BSD_MAKEFILE])
969
970 AC_SUBST(ap_make_include)
971 AC_SUBST(ap_make_ifdef)
972 AC_SUBST(ap_make_else)
973 AC_SUBST(ap_make_endif)
974 AC_SUBST(ap_make_delimiter)
975
976 dnl Ensure that docs/conf is created.
977 test -d docs/conf||$mkdir_p docs/conf
978
979 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],[
980   APACHE_GEN_MAKEFILES
981 ])