]> granicus.if.org Git - apache/blob - configure.in
Add a comment about an assumption we make in our keepalive buffering.
[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(srclib/apr/build/apr_hints.m4)
20 sinclude(srclib/apr/build/libtool.m4)
21 sinclude(hints.m4)
22 sinclude(acinclude.m4)
23
24 dnl Save user-defined environment settings for later restoration
25 dnl
26 APR_SAVE_THE_ENVIRONMENT(CPPFLAGS)
27 APR_SAVE_THE_ENVIRONMENT(CFLAGS)
28 APR_SAVE_THE_ENVIRONMENT(CXXFLAGS)
29 APR_SAVE_THE_ENVIRONMENT(LDFLAGS)
30 APR_SAVE_THE_ENVIRONMENT(LIBS)
31 APR_SAVE_THE_ENVIRONMENT(INCLUDES)
32
33 dnl Generate ./config.nice for reproducing runs of configure
34 dnl
35 APR_CONFIG_NICE(config.nice)
36
37 nl='
38 '
39 dnl ## Run configure for packages Apache uses
40
41 echo $ac_n "${nl}Configuring Apache Portable Runtime library ...${nl}"
42
43 APR_SUBDIR_CONFIG(srclib/apr, "$apache_apr_flags --disable-shared")
44
45 echo $ac_n "${nl}Configuring Apache Portable Runtime Utility library...${nl}"
46
47 APR_SUBDIR_CONFIG(srclib/apr-util, "--with-apr=../apr --disable-shared")
48
49 echo $ac_n "${nl}Configuring PCRE regular expression library ...${nl}"
50
51 APR_SUBDIR_CONFIG(srclib/pcre)
52
53 echo $ac_n "${nl}Configuring Apache httpd ...${nl}"
54
55 echo $ac_n "obtaining flag settings from the sub-configures...${nl}"
56 . ./srclib/apr/APRVARS
57
58 dnl Now that we have APR's EXTRA_flags in our environment, move them over
59 dnl to the normal variables to avoid duplications and use them for testing.
60 dnl We ignore EXTRA_INCLUDES because our own includes will encompass them.
61 dnl
62 APR_ADDTO(CFLAGS, $EXTRA_CFLAGS)
63 APR_ADDTO(CPPFLAGS, $EXTRA_CPPFLAGS)
64 APR_ADDTO(LDFLAGS, $EXTRA_LDFLAGS)
65 APR_ADDTO(LIBS, $EXTRA_LIBS)
66 EXTRA_CFLAGS=
67 EXTRA_CPPFLAGS=
68 EXTRA_LDFLAGS=
69 EXTRA_LIBS=
70 EXTRA_INCLUDES=
71
72 dnl XXX we can't just use AC_PREFIX_DEFAULT because that isn't subbed in
73 dnl by configure until it is too late.  Is that how it should be or not?
74 dnl Something seems broken here.
75 AC_PREFIX_DEFAULT(/usr/local/apache2)
76 test "$prefix" = "NONE" && prefix='/usr/local/apache2'
77 test "$exec_prefix" = "NONE" && exec_prefix='${prefix}'
78
79 dnl Absolute source/build directory
80 abs_srcdir=`(cd $srcdir && pwd)`
81 abs_builddir=`pwd`
82
83 dnl If the source dir is not equal to the build dir, 
84 dnl then we are running in VPATH mode.
85
86 if test "$abs_builddir" != "$abs_srcdir"; then
87   USE_VPATH=1
88   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_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])
89 else
90   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)/include -I\$(top_srcdir)/srclib/apr/include -I\$(top_srcdir)/srclib/apr-util/include])
91 fi
92
93 AC_CANONICAL_SYSTEM
94
95 case "$host_alias" in
96   *os2*)
97       # Use a custom made libtool replacement
98       echo "using aplibtool"
99       LIBTOOL="$abs_srcdir/srclib/apr/build/aplibtool"
100       SH_LIBTOOL="$LIBTOOL --shared --export-all"
101       CORE_IMPLIB_FILE="ApacheCoreOS2.la"
102       CORE_IMPLIB="$abs_srcdir/server/$CORE_IMPLIB_FILE"
103       MK_IMPLIB="emximp"
104       other_targets="$other_targets os2core"
105       ;;
106   *)
107       SH_LIBTOOL='$(SHELL) $(top_builddir)/shlibtool --silent'
108       ;;
109 esac
110
111 dnl
112 dnl ## Preload our OS configuration
113 APR_PRELOAD
114 APACHE_PRELOAD
115
116 dnl
117 dnl Process command line arguments. This is done early in the process so the
118 dnl user can get feedback quickly in case of an error.
119 dnl
120 dnl ### need to move some of the arguments "up here"
121
122 dnl ## Check for programs
123
124 AC_PATH_PROG(RM, rm)
125 AC_PROG_AWK
126 AC_PROG_CC
127 AC_PROG_CPP
128 AC_PROG_INSTALL
129 AC_PROG_LN_S
130 AC_CHECK_TOOL(RANLIB, ranlib, true)
131 dnl AC_PATH_PROG(PERL_PATH, perl)
132
133 dnl various OS checks that apparently set required flags
134 AC_AIX
135 AC_ISC_POSIX
136 AC_MINIX
137
138 dnl ## Check for libraries
139
140 dnl ## Check for header files
141
142 dnl I think these are just used all over the place, so just check for
143 dnl them at the base of the tree. If some are specific to a single
144 dnl directory, they should be moved (Comment #Spoon)
145
146 dnl Regarding standard header files: AC_HEADER_STDC doesn't set symbols
147 dnl HAVE_STRING_H, HAVE_STDLIB_H, etc., so those are checked for
148 dnl explicitly so that the normal HAVE_xxx_H symbol is defined.
149
150 AC_HEADER_STDC
151 AC_CHECK_HEADERS( \
152 string.h \
153 limits.h \
154 unistd.h \
155 sys/socket.h \
156 pwd.h \
157 grp.h \
158 strings.h
159 )
160 AC_HEADER_SYS_WAIT
161
162 dnl ## Check for typedefs, structures, and compiler characteristics.
163
164 AC_C_CONST
165
166 dnl ## Check for library functions
167
168 dnl See Comment #Spoon
169
170 AC_CHECK_FUNCS( \
171 initgroups \
172 )
173
174 AC_CHECK_LIB(nsl, gethostbyname)
175 AC_CHECK_LIB(nsl, gethostname)
176 AC_CHECK_LIB(socket, socket)
177
178 AC_ARG_WITH(port,[  --with-port=PORT        Port on which to listen (default is 80)],
179         [if test "$withval" = "yes"; then AC_MSG_ERROR('option --with-port requires a value (the TCP port number)'); else PORT="$withval"; fi],
180         [PORT=80])
181
182 AC_ARG_ENABLE(debug,[  --enable-debug            Turn on debugging and compile time warnings],
183   [APR_ADDTO(CFLAGS,-g)
184    if test "$GCC" = "yes"; then
185      APR_ADDTO(CFLAGS,-Wall)
186    fi
187 ])dnl
188
189 AC_ARG_ENABLE(maintainer-mode,[  --enable-maintainer-mode  Turn on debugging and compile time warnings],
190   [APR_ADDTO(CFLAGS,-g)
191    if test "$GCC" = "yes"; then
192      APR_ADDTO(CFLAGS,[-Wall -Wmissing-prototypes -Wstrict-prototypes -Wmissing-declarations -DAP_DEBUG])
193    fi
194 ])dnl
195
196 APACHE_ENABLE_LAYOUT
197 APACHE_ENABLE_MODULES
198
199 dnl reading config stubs
200 esyscmd(./build/config-stubs .)
201
202 APACHE_SUBST(progname)
203 APACHE_SUBST(MPM_LIB)
204 APACHE_SUBST(OS)
205 APACHE_SUBST(OS_DIR)
206 APACHE_SUBST(BUILTIN_LIBS)
207
208 AM_DISABLE_SHARED
209 if test -z "$LIBTOOL"; then
210   AM_PROG_LIBTOOL
211   APACHE_LIBTOOL_SILENT
212 fi
213
214 PRE_SHARED_CMDS='echo ""'
215 POST_SHARED_CMDS='echo ""'
216
217 if test "$apache_need_shared" = "yes"; then
218   $SHELL $ac_aux_dir/ltconfig --output=shlibtool --disable-static --srcdir=$ac_aux_dir --cache-file=./config.cache $ac_aux_dir/ltmain.sh
219   case $PLATFORM in
220     *-ibm-aix*)
221       HTTPD_LDFLAGS="$HTTPD_LDFLAGS -Wl,-bE:$abs_srcdir/support/httpd.exp"
222       SH_LDFLAGS="$SH_LDFLAGS -Wl,-bI:$abs_srcdir/support/httpd.exp"
223       ;;
224     *beos)
225       SH_LDFLAGS='$(top_builddir)/_APP_'
226       PRE_SHARED_CMDS='ln -s $(top_builddir)/httpd $(top_builddir)/_APP_'
227       POST_SHARED_CMDS='rm $(top_builddir)/_APP_'
228       ;;
229     *os390)
230       APR_ADDTO(CFLAGS, [-Wc,DLL,EXPORTALL])
231       ;;
232   esac
233   shared_build="shared-modules"
234 fi
235
236 APACHE_SUBST(PRE_SHARED_CMDS)
237 APACHE_SUBST(POST_SHARED_CMDS)
238 APACHE_SUBST(shared_build)
239
240 AC_ARG_WITH(program-name,
241 [  --with-program-name     alternate executable name],[
242   progname="$withval" ], [
243   progname="httpd"] )
244
245 # SuExec parameters
246 AC_ARG_WITH(suexec-caller,
247 [  --with-suexec-caller    User allowed to call SuExec],[
248   AC_DEFINE_UNQUOTED(AP_HTTPD_USER, "$withval", [User allowed to call SuExec] ) ] )
249
250 AC_ARG_WITH(suexec-userdir,
251 [  --with-suexec-userdir   User subdirectory],[
252   AC_DEFINE_UNQUOTED(AP_USERDIR_SUFFIX, "$withval", [User subdirectory] ) ] )
253
254 AC_ARG_WITH(suexec-docroot,
255 [  --with-suexec-docroot   SuExec root directory],[
256   AC_DEFINE_UNQUOTED(AP_DOC_ROOT, "$withval", [SuExec root directory] ) ] )
257
258 AC_ARG_WITH(suexec-uidmin,
259 [  --with-suexec-uidmin    Minimal allowed UID],[
260   AC_DEFINE_UNQUOTED(AP_UID_MIN, $withval, [Minimum allowed UID] ) ] )
261
262 AC_ARG_WITH(suexec-gidmin,
263 [  --with-suexec-gidmin    Minimal allowed GID],[
264   AC_DEFINE_UNQUOTED(AP_GID_MIN, $withval, [Minimum allowed GID] ) ] )
265
266 AC_ARG_WITH(suexec-logfile,
267 [  --with-suexec-logfile   Set the logfile],[
268   AC_DEFINE_UNQUOTED(AP_LOG_EXEC, "$withval", [SuExec log file] ) ] )
269
270 AC_ARG_WITH(suexec-safepath,
271 [  --with-suexec-safepath  Set the safepath],[
272   AC_DEFINE_UNQUOTED(AP_SAFE_PATH, "$withval", [safe shell path for SuExec] ) ] )
273
274 AC_ARG_WITH(suexec-umask,
275 [  --with-suexec-umask     umask for suexec'd process],[
276   AC_DEFINE_UNQUOTED(AP_SUEXEC_UMASK, 0$withval, [umask for suexec'd process] ) ] )
277
278 dnl AP_LIB_DIRS specifies the additional libs from srclib/ that we need
279 dnl AP_LIBS specifies the actual libraries. note we have some required libs.
280 AP_LIBS="srclib/pcre/libpcre.la srclib/apr-util/libaprutil.la $AP_LIBS"
281
282 dnl APR should go after the other libs, so the right symbols can be picked up
283 AP_LIBS="$AP_LIBS srclib/apr/libapr.la"
284 APACHE_SUBST(AP_LIB_DIRS)
285 APACHE_SUBST(AP_LIBS)
286
287 AC_DEFINE(AP_USING_AUTOCONF, 1,
288                 [Using autoconf to configure Apache])
289
290 if test "$SINGLE_LISTEN_UNSERIALIZED_ACCEPT" = "1"; then
291     AC_DEFINE(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, 1, 
292               [This platform doesn't suffer from the thundering herd problem])
293 fi
294
295 dnl check for endianness
296 if test "$cross_compiling" = "no"; then
297   AC_C_BIGENDIAN
298 else
299   AC_DEFINE(AP_UNKNOWN_BYTE_ORDER,1,
300                 [byte order is unknown due to cross-compilation])
301 fi
302
303 APACHE_FAST_OUTPUT(Makefile modules/Makefile srclib/Makefile) 
304 APACHE_FAST_OUTPUT(os/beos/Makefile os/os2/Makefile os/Makefile)
305 APACHE_FAST_OUTPUT(os/unix/Makefile server/Makefile)
306 APACHE_FAST_OUTPUT(support/Makefile srclib/pcre/Makefile)
307 for i in $AP_LIB_DIRS; do
308   APACHE_FAST_OUTPUT(srclib/$i/Makefile)
309 done
310
311 if test -d ./test; then
312     APACHE_FAST_OUTPUT(test/Makefile)
313 fi
314
315 dnl get the exported vars from APRUTIL
316 . ./srclib/apr-util/export_vars.sh
317 APR_ADDTO(LIBS, $APRUTIL_EXPORT_LIBS)
318 AP_LIBS="$AP_LIBS $LIBTOOL_LIBS"
319
320 dnl ## Finalize the variables
321 echo $ac_n "${nl}Restore user-defined environment settings...${nl}"
322
323 APR_RESTORE_THE_ENVIRONMENT(CPPFLAGS, EXTRA_)
324 APR_RESTORE_THE_ENVIRONMENT(CFLAGS, EXTRA_)
325 APR_RESTORE_THE_ENVIRONMENT(CXXFLAGS, EXTRA_)
326 APR_RESTORE_THE_ENVIRONMENT(LDFLAGS, EXTRA_)
327 APR_RESTORE_THE_ENVIRONMENT(LIBS, EXTRA_)
328 APR_RESTORE_THE_ENVIRONMENT(INCLUDES, EXTRA_)
329
330 echo $ac_n "${nl}Construct makefiles and header files...${nl}"
331
332 APACHE_GEN_CONFIG_VARS
333
334 dnl ## Build modules.c
335 rm -f modules.c
336 echo $MODLIST | $AWK -f $srcdir/build/build-modules-c.awk > modules.c
337
338 AC_DEFINE_UNQUOTED(HTTPD_ROOT, "$prefix",
339         [Root directory of the Apache install area])
340 AC_DEFINE_UNQUOTED(SERVER_CONFIG_FILE, "conf/$progname.conf",
341         [Location of the config file, relative to the Apache root directory])
342 AC_DEFINE_UNQUOTED(APACHE_MPM_DIR, "$MPM_DIR",
343         [Location of the source for the current MPM])
344
345 perlbin=`$ac_aux_dir/PrintPath perl`
346 if test "x$perlbin" = "x"; then
347     perlbin="/replace/with/path/to/perl/interpreter"
348 fi
349 AC_SUBST(perlbin)
350
351 dnl If we are running on BSD/OS, we need to use the BSD .include syntax.
352
353 BSD_MAKEFILE=no
354 case "$host_alias" in
355 *bsdi*)
356     # Check whether they've installed GNU make
357     if make --version > /dev/null 2>&1; then
358         true
359     else
360         BSD_MAKEFILE=yes
361     fi
362     ;;
363 esac
364
365 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,,[
366   APACHE_GEN_MAKEFILES
367 ])
368