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