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