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