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