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