]> granicus.if.org Git - apache/blob - configure.in
include/http_protocol.h
[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       CORE_IMPLIB_FILE="ApacheCoreOS2.la"
107       CORE_IMPLIB="$abs_srcdir/server/$CORE_IMPLIB_FILE"
108       MK_IMPLIB="emximp"
109       other_targets="$other_targets os2core"
110       INSTALL_PROG_FLAGS="-e .exe"
111       SHLTCFLAGS=""
112       LTCFLAGS=""
113       ;;
114   *)
115       if test "x$LTFLAGS" = "x"; then
116           LTFLAGS='--silent'
117       fi
118       LIBTOOL='$(SHELL) $(top_builddir)/srclib/apr/libtool $(LTFLAGS)'
119       libtoolversion=`$abs_builddir/srclib/apr/libtool --version`
120       case $libtoolversion in
121           *1.4*)
122               SH_LIBTOOL='$(LIBTOOL)'
123               SHLTCFLAGS="-prefer-pic"
124               LTCFLAGS="-prefer-non-pic -static"
125               ;;
126           *)
127               SH_LIBTOOL='$(SHELL) $(top_builddir)/shlibtool $(LTFLAGS)'
128               SHLTCFLAGS=""
129               LTCFLAGS=""
130               ;;
131       esac
132       ;;
133 esac
134 APACHE_SUBST(SHLTCFLAGS)
135 APACHE_SUBST(LTCFLAGS)
136
137 AP_SIG_GRACEFUL=USR1
138
139 case $host in
140   *-apple-aux3*)
141       APR_SETVAR(APACHE_MPM, [prefork])
142       APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1])
143       ;;
144   *-beos*)
145       APR_SETVAR(APACHE_MPM, [beos])
146       APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1])
147       ;;
148   *os2_emx*)
149       APR_SETVAR(APACHE_MPM, [mpmt_os2])
150       APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1])
151       ;;
152   *-linux-*)
153       case `uname -r` in
154         2.0* ) 
155             AP_SIG_GRACEFUL=WINCH
156             ;;
157         2.[[2-9]]* ) 
158             APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1])
159             ;;
160         * )
161             ;;
162       esac
163       ;;
164   *486-*-bsdi* | *-netbsd* | *-freebsd* | *-apple-darwin* | *-dec-osf* | *-qnx)
165       APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1])
166       ;;
167   *-solaris2*)
168       dnl  This is a hack -- we should be using AC_TRY_RUN instead
169       ap_platform_runtime_link_flag="-R"
170       ;;
171   *cygwin*)
172       APR_SETVAR(APACHE_MPM, [prefork])
173       APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1])
174       ;;
175 esac
176
177 dnl
178 dnl Process command line arguments. This is done early in the process so the
179 dnl user can get feedback quickly in case of an error.
180 dnl
181 dnl ### need to move some of the arguments "up here"
182
183 dnl ## Check for programs
184
185 AC_PATH_PROG(RM, rm)
186 AC_PROG_AWK
187 AC_PROG_CC
188 AC_PROG_CPP
189 AC_PROG_INSTALL
190 AC_PROG_LN_S
191 AC_CHECK_TOOL(RANLIB, ranlib, true)
192 dnl AC_PATH_PROG(PERL_PATH, perl)
193
194 dnl various OS checks that apparently set required flags
195 AC_AIX
196 AC_ISC_POSIX
197 AC_MINIX
198
199 dnl ## Check for libraries
200
201 dnl ## Check for header files
202
203 dnl I think these are just used all over the place, so just check for
204 dnl them at the base of the tree. If some are specific to a single
205 dnl directory, they should be moved (Comment #Spoon)
206
207 dnl Regarding standard header files: AC_HEADER_STDC doesn't set symbols
208 dnl HAVE_STRING_H, HAVE_STDLIB_H, etc., so those are checked for
209 dnl explicitly so that the normal HAVE_xxx_H symbol is defined.
210
211 AC_HEADER_STDC
212 AC_CHECK_HEADERS( \
213 string.h \
214 limits.h \
215 unistd.h \
216 sys/socket.h \
217 pwd.h \
218 grp.h \
219 strings.h \
220 sys/processor.h \
221 sys/sem.h
222 )
223 AC_HEADER_SYS_WAIT
224
225 dnl ## Check for typedefs, structures, and compiler characteristics.
226
227 AC_C_CONST
228 if test "$ac_cv_prog_gcc" = "yes"; then
229   APR_ADDTO(NOTEST_CPPFLAGS,-DAP_HAVE_DESIGNATED_INITIALIZER)
230 fi
231
232 dnl ## Check for library functions
233
234 dnl See Comment #Spoon
235
236 AC_CHECK_FUNCS( \
237 getpwnam \
238 getgrnam \
239 initgroups \
240 bindprocessor \
241 )
242
243 AC_ARG_WITH(port,APACHE_HELP_STRING(--with-port=PORT,Port on which to listen (default is 80)),
244         [if test "$withval" = "yes"; then AC_MSG_ERROR('option --with-port requires a value (the TCP port number)'); else PORT="$withval"; fi],
245         [PORT=80])
246
247 AC_ARG_ENABLE(maintainer-mode,APACHE_HELP_STRING(--enable-maintainer-mode,Turn on debugging and compile time warnings),
248 [
249   APR_ADDTO(CPPFLAGS, -DAP_DEBUG)
250 ])dnl
251
252 APACHE_ENABLE_LAYOUT
253 prefix="$orig_prefix"
254 APACHE_ENABLE_MODULES
255
256 dnl reading config stubs
257 esyscmd(./build/config-stubs .)
258
259 APACHE_SUBST(progname)
260 APACHE_SUBST(MPM_LIB)
261 APACHE_SUBST(OS)
262 APACHE_SUBST(OS_DIR)
263 APACHE_SUBST(BUILTIN_LIBS)
264
265 PRE_SHARED_CMDS='echo ""'
266 POST_SHARED_CMDS='echo ""'
267
268 if test "$apache_need_shared" = "yes"; then
269   if test -f $ac_aux_dir/ltconfig; then
270     $SHELL $ac_aux_dir/ltconfig --output=shlibtool --disable-static --srcdir=$ac_aux_dir --cache-file=./config.cache $ac_aux_dir/ltmain.sh
271   fi
272   case $host in
273     *-ibm-aix*)
274       HTTPD_LDFLAGS="$HTTPD_LDFLAGS -Wl,-bE:$abs_builddir/server/httpd.exp"
275       SH_LDFLAGS="$SH_LDFLAGS -Wl,-bI:$abs_builddir/server/httpd.exp -Wl,-bI:$abs_builddir/srclib/apr/apr.exp -Wl,-bI:$abs_builddir/srclib/apr-util/aprutil.exp"
276       ;;
277     *beos)
278       SH_LDFLAGS='$(top_builddir)/_APP_'
279       PRE_SHARED_CMDS='ln -s $(top_builddir)/httpd $(top_builddir)/_APP_'
280       POST_SHARED_CMDS='rm $(top_builddir)/_APP_'
281       ;;
282     *os390)
283       HTTPD_LDFLAGS="$HTTPD_LDFLAGS --main=$abs_srcdir/server/main.o --core-dll=$abs_srcdir/apachecore.dll"
284       SH_LDFLAGS="$SH_LDFLAGS --core-dll=$abs_srcdir/apachecore.dll"
285   esac
286   shared_build="shared-build"
287 fi
288
289 APACHE_SUBST(PRE_SHARED_CMDS)
290 APACHE_SUBST(POST_SHARED_CMDS)
291 APACHE_SUBST(shared_build)
292
293 AC_ARG_WITH(program-name,
294 APACHE_HELP_STRING(--with-program-name,alternate executable name),[
295   progname="$withval" ], [
296   progname="httpd"] )
297
298 # SuExec parameters
299 AC_ARG_WITH(suexec-bin,
300 APACHE_HELP_STRING(--with-suexec-bin,Path to suexec binary),[
301   AC_DEFINE_UNQUOTED(SUEXEC_BIN, "$withval", [Path to suexec binary] )
302 ] )
303
304 AC_ARG_WITH(suexec-caller,
305 APACHE_HELP_STRING(--with-suexec-caller,User allowed to call SuExec),[
306   AC_DEFINE_UNQUOTED(AP_HTTPD_USER, "$withval", [User allowed to call SuExec] ) ] )
307
308 AC_ARG_WITH(suexec-userdir,
309 APACHE_HELP_STRING(--with-suexec-userdir,User subdirectory),[
310   AC_DEFINE_UNQUOTED(AP_USERDIR_SUFFIX, "$withval", [User subdirectory] ) ] )
311
312 AC_ARG_WITH(suexec-docroot,
313 APACHE_HELP_STRING(--with-suexec-docroot,SuExec root directory),[
314   AC_DEFINE_UNQUOTED(AP_DOC_ROOT, "$withval", [SuExec root directory] ) ] )
315
316 AC_ARG_WITH(suexec-uidmin,
317 APACHE_HELP_STRING(--with-suexec-uidmin,Minimal allowed UID),[
318   AC_DEFINE_UNQUOTED(AP_UID_MIN, $withval, [Minimum allowed UID] ) ] )
319
320 AC_ARG_WITH(suexec-gidmin,
321 APACHE_HELP_STRING(--with-suexec-gidmin,Minimal allowed GID),[
322   AC_DEFINE_UNQUOTED(AP_GID_MIN, $withval, [Minimum allowed GID] ) ] )
323
324 AC_ARG_WITH(suexec-logfile,
325 APACHE_HELP_STRING(--with-suexec-logfile,Set the logfile),[
326   AC_DEFINE_UNQUOTED(AP_LOG_EXEC, "$withval", [SuExec log file] ) ] )
327
328 AC_ARG_WITH(suexec-safepath,
329 APACHE_HELP_STRING(--with-suexec-safepath,Set the safepath),[
330   AC_DEFINE_UNQUOTED(AP_SAFE_PATH, "$withval", [safe shell path for SuExec] ) ] )
331
332 AC_ARG_WITH(suexec-umask,
333 APACHE_HELP_STRING(--with-suexec-umask,umask for suexec'd process),[
334   AC_DEFINE_UNQUOTED(AP_SUEXEC_UMASK, 0$withval, [umask for suexec'd process] ) ] )
335
336 dnl AP_LIB_DIRS specifies the additional libs from srclib/ that we need
337 dnl AP_LIBS specifies the actual libraries. note we have some required libs.
338 AP_LIBS="$abs_builddir/srclib/pcre/libpcre.la $abs_builddir/srclib/apr-util/libaprutil.la $AP_LIBS"
339
340 dnl APR should go after the other libs, so the right symbols can be picked up
341 AP_LIBS="$AP_LIBS $abs_builddir/srclib/apr/libapr.la"
342 APACHE_SUBST(AP_LIB_DIRS)
343 APACHE_SUBST(AP_LIBS)
344
345 AC_DEFINE(AP_USING_AUTOCONF, 1,
346                 [Using autoconf to configure Apache])
347
348 if test "$SINGLE_LISTEN_UNSERIALIZED_ACCEPT" = "1"; then
349     AC_DEFINE(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, 1, 
350               [This platform doesn't suffer from the thundering herd problem])
351 fi
352
353 AC_DEFINE_UNQUOTED(AP_SIG_GRACEFUL, SIG$AP_SIG_GRACEFUL, [Signal used to gracefully restart])
354 AC_DEFINE_UNQUOTED(AP_SIG_GRACEFUL_STRING, "SIG$AP_SIG_GRACEFUL", [Signal used to gracefully restart (as a quoted string)])
355 AC_DEFINE_UNQUOTED(AP_SIG_GRACEFUL_SHORT, $AP_SIG_GRACEFUL, [Signal used to gracefully restart (without SIG prefix)])
356 AP_SIG_GRACEFUL_SHORT=$AP_SIG_GRACEFUL
357 AP_SIG_GRACEFUL=SIG$AP_SIG_GRACEFUL_SHORT
358 AC_SUBST(AP_SIG_GRACEFUL)
359 AC_SUBST(AP_SIG_GRACEFUL_STRING)
360 AC_SUBST(AP_SIG_GRACEFUL_SHORT)
361
362 dnl check for endianness
363 if test "$cross_compiling" = "no"; then
364   AC_C_BIGENDIAN
365 else
366   AC_DEFINE(AP_UNKNOWN_BYTE_ORDER,1,
367                 [byte order is unknown due to cross-compilation])
368 fi
369
370 APACHE_FAST_OUTPUT(Makefile modules/Makefile srclib/Makefile) 
371 APACHE_FAST_OUTPUT(os/beos/Makefile os/os2/Makefile os/Makefile)
372 APACHE_FAST_OUTPUT(os/unix/Makefile server/Makefile)
373 APACHE_FAST_OUTPUT(support/Makefile srclib/pcre/Makefile)
374 for i in $AP_LIB_DIRS; do
375   APACHE_FAST_OUTPUT(srclib/$i/Makefile)
376 done
377
378 if test -d ./test; then
379     APACHE_FAST_OUTPUT(test/Makefile)
380 fi
381
382 dnl get the exported vars from APRUTIL
383 . ./srclib/apr-util/export_vars.sh
384 APR_ADDTO(LIBS, $APRUTIL_EXPORT_LIBS)
385 AP_LIBS="$AP_LIBS $LIBTOOL_LIBS"
386
387 dnl ## Finalize the variables
388 echo $ac_n "${nl}Restore user-defined environment settings...${nl}"
389
390 APR_RESTORE_THE_ENVIRONMENT(CPPFLAGS, EXTRA_)
391 APR_RESTORE_THE_ENVIRONMENT(CFLAGS, EXTRA_)
392 APR_RESTORE_THE_ENVIRONMENT(CXXFLAGS, EXTRA_)
393 APR_RESTORE_THE_ENVIRONMENT(LDFLAGS, EXTRA_)
394 APR_RESTORE_THE_ENVIRONMENT(LIBS, EXTRA_)
395 APR_RESTORE_THE_ENVIRONMENT(INCLUDES, EXTRA_)
396
397 echo $ac_n "${nl}Construct makefiles and header files...${nl}"
398
399 APACHE_GEN_CONFIG_VARS
400
401 dnl ## Build modules.c
402 rm -f modules.c
403 echo $MODLIST | $AWK -f $srcdir/build/build-modules-c.awk > modules.c
404
405 AC_DEFINE_UNQUOTED(HTTPD_ROOT, "$prefix",
406         [Root directory of the Apache install area])
407 AC_DEFINE_UNQUOTED(SERVER_CONFIG_FILE, "conf/$progname.conf",
408         [Location of the config file, relative to the Apache root directory])
409 AC_DEFINE_UNQUOTED(APACHE_MPM_DIR, "$MPM_DIR",
410         [Location of the source for the current MPM])
411
412 perlbin=`$ac_aux_dir/PrintPath perl`
413 if test "x$perlbin" = "x"; then
414     perlbin="/replace/with/path/to/perl/interpreter"
415 fi
416 AC_SUBST(perlbin)
417
418 dnl If we are running on BSD/OS, we need to use the BSD .include syntax.
419
420 BSD_MAKEFILE=no
421 case $host in
422 *bsdi*)
423     # Check whether they've installed GNU make
424     if make --version > /dev/null 2>&1; then
425         true
426     else
427         BSD_MAKEFILE=yes
428     fi
429     ;;
430 esac
431
432 AC_OUTPUT($APACHE_OUTPUT_FILES support/apxs support/apachectl support/dbmmanage support/log_server_status support/logresolve.pl support/phf_abuse_log.cgi support/split-logfile build/rules.mk,,[
433   APACHE_GEN_MAKEFILES
434 ])
435