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