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