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