]> granicus.if.org Git - apache/blob - configure.in
Fix RedirectMatch so it won't emit invalid Location fields.
[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(srclib/apr/build)
12
13 dnl #
14 dnl # Include our own M4 macros along with those for APR and libtool
15 dnl #
16 sinclude(srclib/apr/build/apr_common.m4)
17 sinclude(srclib/apr/build/apr_network.m4)
18 sinclude(srclib/apr/build/apr_threads.m4)
19 sinclude(acinclude.m4)
20
21 dnl Save user-defined environment settings for later restoration
22 dnl
23 APR_SAVE_THE_ENVIRONMENT(CPPFLAGS)
24 APR_SAVE_THE_ENVIRONMENT(CFLAGS)
25 APR_SAVE_THE_ENVIRONMENT(CXXFLAGS)
26 APR_SAVE_THE_ENVIRONMENT(LDFLAGS)
27 APR_SAVE_THE_ENVIRONMENT(LIBS)
28 APR_SAVE_THE_ENVIRONMENT(INCLUDES)
29
30 dnl Generate ./config.nice for reproducing runs of configure
31 dnl
32 APR_CONFIG_NICE(config.nice)
33
34 nl='
35 '
36
37 dnl XXX we can't just use AC_PREFIX_DEFAULT because that isn't subbed in
38 dnl by configure until it is too late.  Is that how it should be or not?
39 dnl Something seems broken here.
40 AC_PREFIX_DEFAULT(/usr/local/apache2)
41 test "$prefix" = "NONE" && prefix='/usr/local/apache2'
42 test "$exec_prefix" = "NONE" && exec_prefix='${prefix}'
43
44 dnl ## Run configure for packages Apache uses
45
46 dnl shared library support for these packages doesn't currently
47 dnl work on some platforms
48
49 AC_CANONICAL_SYSTEM
50
51 orig_prefix="$prefix"
52
53 echo $ac_n "${nl}Configuring Apache Portable Runtime library ...${nl}"
54
55 APR_SUBDIR_CONFIG(srclib/apr, "$apache_apr_flags --prefix=$prefix")
56
57 echo $ac_n "${nl}Configuring Apache Portable Runtime Utility library...${nl}"
58
59 APR_SUBDIR_CONFIG(srclib/apr-util, "--with-apr=../apr --prefix=$prefix")
60
61 echo $ac_n "${nl}Configuring PCRE regular expression library ...${nl}"
62
63 APR_SUBDIR_CONFIG(srclib/pcre, "--prefix=$prefix")
64
65 echo $ac_n "${nl}Configuring Apache httpd ...${nl}"
66
67 echo $ac_n "obtaining flag settings from the sub-configures...${nl}"
68 . ./srclib/apr/APRVARS
69
70 dnl Now that we have APR's EXTRA_flags in our environment, move them over
71 dnl to the normal variables to avoid duplications and use them for testing.
72 dnl We ignore EXTRA_INCLUDES because our own includes will encompass them.
73 dnl
74 APR_ADDTO(CFLAGS, $EXTRA_CFLAGS)
75 APR_ADDTO(CPPFLAGS, $EXTRA_CPPFLAGS)
76 APR_ADDTO(LDFLAGS, $EXTRA_LDFLAGS)
77 APR_ADDTO(LIBS, $EXTRA_LIBS)
78 EXTRA_CFLAGS=
79 EXTRA_CPPFLAGS=
80 EXTRA_LDFLAGS=
81 EXTRA_LIBS=
82 EXTRA_INCLUDES=
83
84 dnl Absolute source/build directory
85 abs_srcdir=`(cd $srcdir && pwd)`
86 abs_builddir=`pwd`
87
88 dnl If the source dir is not equal to the build dir, 
89 dnl then we are running in VPATH mode.
90
91 if test "$abs_builddir" != "$abs_srcdir"; then
92   USE_VPATH=1
93   APR_ADDTO(INCLUDES, [-I. -I\$(srcdir) -I\$(top_builddir)/os/\$(OS_DIR) -I\$(top_srcdir)/os/\$(OS_DIR) -I\$(top_builddir)/server/mpm/\$(MPM_NAME) -I\$(top_srcdir)/server/mpm/\$(MPM_NAME) -I\$(top_builddir)/modules/http -I\$(top_srcdir)/modules/http -I\$(top_srcdir)/modules/proxy -I\$(top_builddir)/include -I\$(top_srcdir)/include -I\$(top_builddir)/srclib/apr/include -I\$(top_srcdir)/srclib/apr/include -I\$(top_builddir)/srclib/apr-util/include -I\$(top_srcdir)/srclib/apr-util/include])
94 else
95   APR_ADDTO(INCLUDES, [-I. -I\$(top_srcdir)/os/\$(OS_DIR) -I\$(top_srcdir)/server/mpm/\$(MPM_NAME) -I\$(top_srcdir)/modules/http -I\$(top_srcdir)/modules/proxy -I\$(top_srcdir)/include -I\$(top_srcdir)/srclib/apr/include -I\$(top_srcdir)/srclib/apr-util/include])
96 fi
97
98 echo $ac_n "${nl}Applying OS-specific hints for httpd ...${nl}"
99
100 case $host in
101   *os2*)
102       # Use a custom made libtool replacement
103       echo "using aplibtool"
104       LIBTOOL="$abs_srcdir/srclib/apr/build/aplibtool"
105       SH_LIBTOOL="$LIBTOOL --shared --export-all"
106       SH_LIBS="\$(ALL_LIBS)"
107       CORE_IMPLIB_FILE="ApacheCoreOS2.la"
108       CORE_IMPLIB="$abs_srcdir/server/$CORE_IMPLIB_FILE"
109       MK_IMPLIB="emximp"
110       other_targets="$other_targets os2core"
111       INSTALL_PROG_FLAGS="-e .exe"
112       SHLTCFLAGS=""
113       LTCFLAGS=""
114       ;;
115   *)
116       if test "x$LTFLAGS" = "x"; then
117           LTFLAGS='--silent'
118       fi
119       LIBTOOL='$(SHELL) $(top_builddir)/srclib/apr/libtool $(LTFLAGS)'
120       libtoolversion=`$abs_builddir/srclib/apr/libtool --version`
121       case $libtoolversion in
122           *1.4*)
123               SH_LIBTOOL='$(LIBTOOL)'
124               SHLTCFLAGS="-prefer-pic"
125               LTCFLAGS="-prefer-non-pic -static"
126               ;;
127           *)
128               SH_LIBTOOL='$(SHELL) $(top_builddir)/shlibtool $(LTFLAGS)'
129               SHLTCFLAGS=""
130               LTCFLAGS=""
131               ;;
132       esac
133       ;;
134 esac
135 APACHE_SUBST(SHLTCFLAGS)
136 APACHE_SUBST(LTCFLAGS)
137
138 AP_SIG_GRACEFUL=USR1
139
140 case $host in
141   *-apple-aux3*)
142       APR_SETVAR(APACHE_MPM, [prefork])
143       APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1])
144       ;;
145   *-beos*)
146       APR_SETVAR(APACHE_MPM, [beos])
147       APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1])
148       ;;
149   *os2_emx*)
150       APR_SETVAR(APACHE_MPM, [mpmt_os2])
151       APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1])
152       ;;
153   *-linux-*)
154       case `uname -r` in
155         2.0* ) 
156             AP_SIG_GRACEFUL=WINCH
157             ;;
158         2.[[2-9]]* ) 
159             APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1])
160             ;;
161         * )
162             ;;
163       esac
164       ;;
165   *486-*-bsdi* | *-netbsd* | *-freebsd* | *-apple-darwin* | *-dec-osf* | *-qnx)
166       APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1])
167       ;;
168   *-solaris2*)
169       dnl  This is a hack -- we should be using AC_TRY_RUN instead
170       ap_platform_runtime_link_flag="-R"
171       ;;
172   *cygwin*)
173       APR_SETVAR(APACHE_MPM, [prefork])
174       APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1])
175       ;;
176 esac
177
178 dnl
179 dnl Process command line arguments. This is done early in the process so the
180 dnl user can get feedback quickly in case of an error.
181 dnl
182 dnl ### need to move some of the arguments "up here"
183
184 dnl ## Check for programs
185
186 AC_PATH_PROG(RM, rm)
187 AC_PROG_AWK
188 AC_PROG_CC
189 AC_PROG_CPP
190 AC_PROG_INSTALL
191 AC_PROG_LN_S
192 AC_CHECK_TOOL(RANLIB, ranlib, true)
193 dnl AC_PATH_PROG(PERL_PATH, perl)
194
195 dnl various OS checks that apparently set required flags
196 AC_AIX
197 AC_ISC_POSIX
198 AC_MINIX
199
200 dnl ## Check for libraries
201
202 dnl ## Check for header files
203
204 dnl I think these are just used all over the place, so just check for
205 dnl them at the base of the tree. If some are specific to a single
206 dnl directory, they should be moved (Comment #Spoon)
207
208 dnl Regarding standard header files: AC_HEADER_STDC doesn't set symbols
209 dnl HAVE_STRING_H, HAVE_STDLIB_H, etc., so those are checked for
210 dnl explicitly so that the normal HAVE_xxx_H symbol is defined.
211
212 AC_HEADER_STDC
213 AC_CHECK_HEADERS( \
214 string.h \
215 limits.h \
216 unistd.h \
217 sys/socket.h \
218 pwd.h \
219 grp.h \
220 strings.h \
221 sys/processor.h \
222 sys/sem.h
223 )
224 AC_HEADER_SYS_WAIT
225
226 dnl ## Check for typedefs, structures, and compiler characteristics.
227
228 AC_C_CONST
229 if test "$ac_cv_prog_gcc" = "yes"; then
230   APR_ADDTO(NOTEST_CPPFLAGS,-DAP_HAVE_DESIGNATED_INITIALIZER)
231 fi
232
233 dnl ## Check for library functions
234
235 dnl See Comment #Spoon
236
237 AC_CHECK_FUNCS( \
238 getpwnam \
239 getgrnam \
240 initgroups \
241 bindprocessor \
242 timegm \
243 )
244
245 dnl ## Check for the tm_gmtoff field in struct tm to get the timezone diffs
246 AC_CACHE_CHECK([for tm_gmtoff in struct tm], ac_cv_struct_tm_gmtoff,
247 [AC_TRY_COMPILE([#include <sys/types.h>
248 #include <time.h>], [struct tm tm; tm.tm_gmtoff;],
249   ac_cv_struct_tm_gmtoff=yes, ac_cv_struct_tm_gmtoff=no)])
250 if test "$ac_cv_struct_tm_gmtoff" = "yes"; then
251     AC_DEFINE(HAVE_GMTOFF)
252 fi
253
254 dnl ## Set up any appropriate OS-specific environment variables for apachectl
255
256 case $host in
257     *aix*)
258         # for 32-bit builds, increase MAXDATA to allow lots of threads
259         if test x$COMPILE_MODE != 64; then
260             OS_SPECIFIC_VARS="set LDR_CNTRL=\"MAXDATA=0x80000000\" ; export LDR_CNTRL ;"
261         fi
262         OS_SPECIFIC_VARS="$OS_SPECIFIC_VARS set AIXTHREAD_SCOPE=S ; export AIXTHREAD_SCOPE"
263         ;;
264     *os390*)
265         OS_SPECIFIC_VARS="export _CEE_RUNOPTS=\"STACK(,,ANY)\" ; export _EDC_ADD_ERRNO2=1"
266         ;;
267     *)
268         OS_SPECIFIC_VARS=""
269 esac
270       
271 AC_ARG_WITH(port,APACHE_HELP_STRING(--with-port=PORT,Port on which to listen (default is 80)),
272         [if test "$withval" = "yes"; then AC_MSG_ERROR('option --with-port requires a value (the TCP port number)'); else PORT="$withval"; fi],
273         [PORT=80])
274
275 AC_ARG_ENABLE(maintainer-mode,APACHE_HELP_STRING(--enable-maintainer-mode,Turn on debugging and compile time warnings),
276 [
277   APR_ADDTO(CPPFLAGS, -DAP_DEBUG)
278 ])dnl
279
280 APACHE_ENABLE_LAYOUT
281 prefix="$orig_prefix"
282 APACHE_ENABLE_MODULES
283
284 dnl reading config stubs
285 esyscmd(./build/config-stubs .)
286
287 APACHE_SUBST(progname)
288 APACHE_SUBST(MPM_LIB)
289 APACHE_SUBST(OS)
290 APACHE_SUBST(OS_DIR)
291 APACHE_SUBST(BUILTIN_LIBS)
292 APACHE_SUBST(SHLIBPATH_VAR)
293 APACHE_SUBST(OS_SPECIFIC_VARS)
294
295 PRE_SHARED_CMDS='echo ""'
296 POST_SHARED_CMDS='echo ""'
297
298 dnl apache_need_shared tells us if Apache modules are being built as DSOs
299
300 if test "$apache_need_shared" = "yes"; then
301   if test -f $ac_aux_dir/ltconfig; then
302     $SHELL $ac_aux_dir/ltconfig --output=shlibtool --disable-static --srcdir=$ac_aux_dir --cache-file=./config.cache $ac_aux_dir/ltmain.sh
303   fi
304   shared_build="shared-build"
305 fi
306
307 dnl enable_so tells us if *any* modules can be built as DSOs
308
309 if test "$enable_so" = "yes"; then
310   case $host in
311     *-ibm-aix*)
312       HTTPD_LDFLAGS="$HTTPD_LDFLAGS -Wl,-uXML_Parse -Wl,-bE:$abs_builddir/server/httpd.exp"
313       SH_LDFLAGS="$SH_LDFLAGS \$(EXTRA_LDFLAGS) \$(EXTRA_LIBS)"
314       UTIL_LDFLAGS="$UTIL_LDFLAGS -Wl,-uXML_Parse"
315       ;;
316     *beos)
317       SH_LDFLAGS='$(top_builddir)/_APP_'
318       PRE_SHARED_CMDS='ln -s $(top_builddir)/httpd $(top_builddir)/_APP_'
319       POST_SHARED_CMDS='rm $(top_builddir)/_APP_'
320       ;;
321     *os390)
322       HTTPD_LDFLAGS="$HTTPD_LDFLAGS --main=$abs_srcdir/server/main.o --core-dll=$abs_srcdir/apachecore.dll"
323       SH_LDFLAGS="$SH_LDFLAGS --core-dll=$abs_srcdir/apachecore.dll"
324   esac
325 fi
326
327 APACHE_SUBST(PRE_SHARED_CMDS)
328 APACHE_SUBST(POST_SHARED_CMDS)
329 APACHE_SUBST(shared_build)
330
331 AC_ARG_WITH(program-name,
332 APACHE_HELP_STRING(--with-program-name,alternate executable name),[
333   progname="$withval" ], [
334   progname="httpd"] )
335
336 # SuExec parameters
337 AC_ARG_WITH(suexec-bin,
338 APACHE_HELP_STRING(--with-suexec-bin,Path to suexec binary),[
339   AC_DEFINE_UNQUOTED(SUEXEC_BIN, "$withval", [Path to suexec binary] )
340 ] )
341
342 AC_ARG_WITH(suexec-caller,
343 APACHE_HELP_STRING(--with-suexec-caller,User allowed to call SuExec),[
344   AC_DEFINE_UNQUOTED(AP_HTTPD_USER, "$withval", [User allowed to call SuExec] ) ] )
345
346 AC_ARG_WITH(suexec-userdir,
347 APACHE_HELP_STRING(--with-suexec-userdir,User subdirectory),[
348   AC_DEFINE_UNQUOTED(AP_USERDIR_SUFFIX, "$withval", [User subdirectory] ) ] )
349
350 AC_ARG_WITH(suexec-docroot,
351 APACHE_HELP_STRING(--with-suexec-docroot,SuExec root directory),[
352   AC_DEFINE_UNQUOTED(AP_DOC_ROOT, "$withval", [SuExec root directory] ) ] )
353
354 AC_ARG_WITH(suexec-uidmin,
355 APACHE_HELP_STRING(--with-suexec-uidmin,Minimal allowed UID),[
356   AC_DEFINE_UNQUOTED(AP_UID_MIN, $withval, [Minimum allowed UID] ) ] )
357
358 AC_ARG_WITH(suexec-gidmin,
359 APACHE_HELP_STRING(--with-suexec-gidmin,Minimal allowed GID),[
360   AC_DEFINE_UNQUOTED(AP_GID_MIN, $withval, [Minimum allowed GID] ) ] )
361
362 AC_ARG_WITH(suexec-logfile,
363 APACHE_HELP_STRING(--with-suexec-logfile,Set the logfile),[
364   AC_DEFINE_UNQUOTED(AP_LOG_EXEC, "$withval", [SuExec log file] ) ] )
365
366 AC_ARG_WITH(suexec-safepath,
367 APACHE_HELP_STRING(--with-suexec-safepath,Set the safepath),[
368   AC_DEFINE_UNQUOTED(AP_SAFE_PATH, "$withval", [safe shell path for SuExec] ) ] )
369
370 AC_ARG_WITH(suexec-umask,
371 APACHE_HELP_STRING(--with-suexec-umask,umask for suexec'd process),[
372   AC_DEFINE_UNQUOTED(AP_SUEXEC_UMASK, 0$withval, [umask for suexec'd process] ) ] )
373
374 dnl AP_LIBS specifies the actual libraries. note we have some required libs.
375 AP_LIBS="$abs_builddir/srclib/pcre/libpcre.la $abs_builddir/srclib/apr-util/libaprutil.la $AP_LIBS"
376
377 dnl APR should go after the other libs, so the right symbols can be picked up
378 AP_LIBS="$AP_LIBS $abs_builddir/srclib/apr/libapr.la"
379 APACHE_SUBST(AP_LIBS)
380
381 AC_DEFINE(AP_USING_AUTOCONF, 1,
382                 [Using autoconf to configure Apache])
383
384 if test "$SINGLE_LISTEN_UNSERIALIZED_ACCEPT" = "1"; then
385     AC_DEFINE(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, 1, 
386               [This platform doesn't suffer from the thundering herd problem])
387 fi
388
389 AC_DEFINE_UNQUOTED(AP_SIG_GRACEFUL, SIG$AP_SIG_GRACEFUL, [Signal used to gracefully restart])
390 AC_DEFINE_UNQUOTED(AP_SIG_GRACEFUL_STRING, "SIG$AP_SIG_GRACEFUL", [Signal used to gracefully restart (as a quoted string)])
391 AC_DEFINE_UNQUOTED(AP_SIG_GRACEFUL_SHORT, $AP_SIG_GRACEFUL, [Signal used to gracefully restart (without SIG prefix)])
392 AP_SIG_GRACEFUL_SHORT=$AP_SIG_GRACEFUL
393 AP_SIG_GRACEFUL=SIG$AP_SIG_GRACEFUL_SHORT
394 AC_SUBST(AP_SIG_GRACEFUL)
395 AC_SUBST(AP_SIG_GRACEFUL_STRING)
396 AC_SUBST(AP_SIG_GRACEFUL_SHORT)
397
398 dnl check for endianness
399 if test "$cross_compiling" = "no"; then
400   AC_C_BIGENDIAN
401 else
402   AC_DEFINE(AP_UNKNOWN_BYTE_ORDER,1,
403                 [byte order is unknown due to cross-compilation])
404 fi
405
406 APACHE_FAST_OUTPUT(Makefile modules/Makefile srclib/Makefile) 
407 APACHE_FAST_OUTPUT(os/beos/Makefile os/os2/Makefile os/Makefile)
408 APACHE_FAST_OUTPUT(os/unix/Makefile server/Makefile)
409 APACHE_FAST_OUTPUT(support/Makefile srclib/pcre/Makefile)
410
411 if test -d ./test; then
412     APACHE_FAST_OUTPUT(test/Makefile)
413 fi
414
415 dnl get the exported vars from APRUTIL
416 . ./srclib/apr-util/export_vars.sh
417 APR_ADDTO(LIBS, $APRUTIL_EXPORT_LIBS)
418 APR_ADDTO(INCLUDES, $APRUTIL_EXPORT_INCLUDES)
419 APR_ADDTO(LDFLAGS, $APRUTIL_LDFLAGS)
420 AP_LIBS="$AP_LIBS $LIBTOOL_LIBS"
421
422 dnl ## Finalize the variables
423 echo $ac_n "${nl}Restore user-defined environment settings...${nl}"
424
425 APR_RESTORE_THE_ENVIRONMENT(CPPFLAGS, EXTRA_)
426 APR_RESTORE_THE_ENVIRONMENT(CFLAGS, EXTRA_)
427 APR_RESTORE_THE_ENVIRONMENT(CXXFLAGS, EXTRA_)
428 APR_RESTORE_THE_ENVIRONMENT(LDFLAGS, EXTRA_)
429 APR_RESTORE_THE_ENVIRONMENT(LIBS, EXTRA_)
430 APR_RESTORE_THE_ENVIRONMENT(INCLUDES, EXTRA_)
431
432 echo $ac_n "${nl}Construct makefiles and header files...${nl}"
433
434 APACHE_GEN_CONFIG_VARS
435
436 dnl ## Build modules.c
437 rm -f modules.c
438 echo $MODLIST | $AWK -f $srcdir/build/build-modules-c.awk > modules.c
439
440 AC_DEFINE_UNQUOTED(HTTPD_ROOT, "$prefix",
441         [Root directory of the Apache install area])
442 AC_DEFINE_UNQUOTED(SERVER_CONFIG_FILE, "conf/$progname.conf",
443         [Location of the config file, relative to the Apache root directory])
444 AC_DEFINE_UNQUOTED(APACHE_MPM_DIR, "$MPM_DIR",
445         [Location of the source for the current MPM])
446
447 perlbin=`$ac_aux_dir/PrintPath perl`
448 if test "x$perlbin" = "x"; then
449     perlbin="/replace/with/path/to/perl/interpreter"
450 fi
451 AC_SUBST(perlbin)
452
453 dnl If we are running on BSD/OS, we need to use the BSD .include syntax.
454
455 BSD_MAKEFILE=no
456 case $host in
457 *bsdi*)
458     # Check whether they've installed GNU make
459     if make --version > /dev/null 2>&1; then
460         true
461     else
462         BSD_MAKEFILE=yes
463     fi
464     ;;
465 esac
466
467 AC_OUTPUT($APACHE_OUTPUT_FILES 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,,[
468   APACHE_GEN_MAKEFILES
469 ])
470