]> granicus.if.org Git - apache/blob - configure.in
apr_file_gets returns an apr_status_t not a char* and it returns
[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 case $host in
52     *-ibm-aix*)
53         disable_shared="--disable-shared"
54       ;;
55     *)
56         disable_shared=""
57 esac
58
59 orig_prefix="$prefix"
60
61 echo $ac_n "${nl}Configuring Apache Portable Runtime library ...${nl}"
62
63 APR_SUBDIR_CONFIG(srclib/apr, "$apache_apr_flags --prefix=$prefix $disable_shared")
64
65 echo $ac_n "${nl}Configuring Apache Portable Runtime Utility library...${nl}"
66
67 APR_SUBDIR_CONFIG(srclib/apr-util, "--with-apr=../apr --prefix=$prefix $disable_shared")
68
69 echo $ac_n "${nl}Configuring PCRE regular expression library ...${nl}"
70
71 APR_SUBDIR_CONFIG(srclib/pcre, "--prefix=$prefix")
72
73 echo $ac_n "${nl}Configuring Apache httpd ...${nl}"
74
75 echo $ac_n "obtaining flag settings from the sub-configures...${nl}"
76 . ./srclib/apr/APRVARS
77
78 dnl Now that we have APR's EXTRA_flags in our environment, move them over
79 dnl to the normal variables to avoid duplications and use them for testing.
80 dnl We ignore EXTRA_INCLUDES because our own includes will encompass them.
81 dnl
82 APR_ADDTO(CFLAGS, $EXTRA_CFLAGS)
83 APR_ADDTO(CPPFLAGS, $EXTRA_CPPFLAGS)
84 APR_ADDTO(LDFLAGS, $EXTRA_LDFLAGS)
85 APR_ADDTO(LIBS, $EXTRA_LIBS)
86 EXTRA_CFLAGS=
87 EXTRA_CPPFLAGS=
88 EXTRA_LDFLAGS=
89 EXTRA_LIBS=
90 EXTRA_INCLUDES=
91
92 dnl Absolute source/build directory
93 abs_srcdir=`(cd $srcdir && pwd)`
94 abs_builddir=`pwd`
95
96 dnl If the source dir is not equal to the build dir, 
97 dnl then we are running in VPATH mode.
98
99 if test "$abs_builddir" != "$abs_srcdir"; then
100   USE_VPATH=1
101   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])
102 else
103   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])
104 fi
105
106 echo $ac_n "${nl}Applying OS-specific hints for httpd ...${nl}"
107
108 case $host in
109   *os2*)
110       # Use a custom made libtool replacement
111       echo "using aplibtool"
112       LIBTOOL="$abs_srcdir/srclib/apr/build/aplibtool"
113       SH_LIBTOOL="$LIBTOOL --shared --export-all"
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       ;;
179   *cygwin*)
180       APR_SETVAR(APACHE_MPM, [prefork])
181       APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1])
182       ;;
183 esac
184
185 dnl
186 dnl Process command line arguments. This is done early in the process so the
187 dnl user can get feedback quickly in case of an error.
188 dnl
189 dnl ### need to move some of the arguments "up here"
190
191 dnl ## Check for programs
192
193 AC_PATH_PROG(RM, rm)
194 AC_PROG_AWK
195 AC_PROG_CC
196 AC_PROG_CPP
197 AC_PROG_INSTALL
198 AC_PROG_LN_S
199 AC_CHECK_TOOL(RANLIB, ranlib, true)
200 dnl AC_PATH_PROG(PERL_PATH, perl)
201
202 dnl various OS checks that apparently set required flags
203 AC_AIX
204 AC_ISC_POSIX
205 AC_MINIX
206
207 dnl ## Check for libraries
208
209 dnl ## Check for header files
210
211 dnl I think these are just used all over the place, so just check for
212 dnl them at the base of the tree. If some are specific to a single
213 dnl directory, they should be moved (Comment #Spoon)
214
215 dnl Regarding standard header files: AC_HEADER_STDC doesn't set symbols
216 dnl HAVE_STRING_H, HAVE_STDLIB_H, etc., so those are checked for
217 dnl explicitly so that the normal HAVE_xxx_H symbol is defined.
218
219 AC_HEADER_STDC
220 AC_CHECK_HEADERS( \
221 string.h \
222 limits.h \
223 unistd.h \
224 sys/socket.h \
225 pwd.h \
226 grp.h \
227 strings.h \
228 sys/processor.h \
229 sys/sem.h
230 )
231 AC_HEADER_SYS_WAIT
232
233 dnl ## Check for typedefs, structures, and compiler characteristics.
234
235 AC_C_CONST
236 if test "$ac_cv_prog_gcc" = "yes"; then
237   APR_ADDTO(NOTEST_CPPFLAGS,-DAP_HAVE_DESIGNATED_INITIALIZER)
238 fi
239
240 dnl ## Check for library functions
241
242 dnl See Comment #Spoon
243
244 AC_CHECK_FUNCS( \
245 getpwnam \
246 getgrnam \
247 initgroups \
248 bindprocessor \
249 )
250
251 AC_ARG_WITH(port,APACHE_HELP_STRING(--with-port=PORT,Port on which to listen (default is 80)),
252         [if test "$withval" = "yes"; then AC_MSG_ERROR('option --with-port requires a value (the TCP port number)'); else PORT="$withval"; fi],
253         [PORT=80])
254
255 AC_ARG_ENABLE(maintainer-mode,APACHE_HELP_STRING(--enable-maintainer-mode,Turn on debugging and compile time warnings),
256 [
257   APR_ADDTO(CPPFLAGS, -DAP_DEBUG)
258 ])dnl
259
260 APACHE_ENABLE_LAYOUT
261 prefix="$orig_prefix"
262 APACHE_ENABLE_MODULES
263
264 dnl reading config stubs
265 esyscmd(./build/config-stubs .)
266
267 APACHE_SUBST(progname)
268 APACHE_SUBST(MPM_LIB)
269 APACHE_SUBST(OS)
270 APACHE_SUBST(OS_DIR)
271 APACHE_SUBST(BUILTIN_LIBS)
272
273 PRE_SHARED_CMDS='echo ""'
274 POST_SHARED_CMDS='echo ""'
275
276 if test "$apache_need_shared" = "yes"; then
277   if test -f $ac_aux_dir/ltconfig; then
278     $SHELL $ac_aux_dir/ltconfig --output=shlibtool --disable-static --srcdir=$ac_aux_dir --cache-file=./config.cache $ac_aux_dir/ltmain.sh
279   fi
280   case $host in
281     *-ibm-aix*)
282       HTTPD_LDFLAGS="$HTTPD_LDFLAGS -Wl,-bE:$abs_builddir/server/httpd.exp"
283       SH_LDFLAGS="$SH_LDFLAGS -Wl,-bI:$abs_builddir/server/httpd.exp"
284       ;;
285     *beos)
286       SH_LDFLAGS='$(top_builddir)/_APP_'
287       PRE_SHARED_CMDS='ln -s $(top_builddir)/httpd $(top_builddir)/_APP_'
288       POST_SHARED_CMDS='rm $(top_builddir)/_APP_'
289       ;;
290     *os390)
291       HTTPD_LDFLAGS="$HTTPD_LDFLAGS --main=$abs_srcdir/server/main.o --core-dll=$abs_srcdir/apachecore.dll"
292       SH_LDFLAGS="$SH_LDFLAGS --core-dll=$abs_srcdir/apachecore.dll"
293   esac
294   shared_build="shared-build"
295 fi
296
297 APACHE_SUBST(PRE_SHARED_CMDS)
298 APACHE_SUBST(POST_SHARED_CMDS)
299 APACHE_SUBST(shared_build)
300
301 AC_ARG_WITH(program-name,
302 APACHE_HELP_STRING(--with-program-name,alternate executable name),[
303   progname="$withval" ], [
304   progname="httpd"] )
305
306 # SuExec parameters
307 AC_ARG_WITH(suexec-caller,
308 APACHE_HELP_STRING(--with-suexec-caller,User allowed to call SuExec),[
309   AC_DEFINE_UNQUOTED(AP_HTTPD_USER, "$withval", [User allowed to call SuExec] ) ] )
310
311 AC_ARG_WITH(suexec-userdir,
312 APACHE_HELP_STRING(--with-suexec-userdir,User subdirectory),[
313   AC_DEFINE_UNQUOTED(AP_USERDIR_SUFFIX, "$withval", [User subdirectory] ) ] )
314
315 AC_ARG_WITH(suexec-docroot,
316 APACHE_HELP_STRING(--with-suexec-docroot,SuExec root directory),[
317   AC_DEFINE_UNQUOTED(AP_DOC_ROOT, "$withval", [SuExec root directory] ) ] )
318
319 AC_ARG_WITH(suexec-uidmin,
320 APACHE_HELP_STRING(--with-suexec-uidmin,Minimal allowed UID),[
321   AC_DEFINE_UNQUOTED(AP_UID_MIN, $withval, [Minimum allowed UID] ) ] )
322
323 AC_ARG_WITH(suexec-gidmin,
324 APACHE_HELP_STRING(--with-suexec-gidmin,Minimal allowed GID),[
325   AC_DEFINE_UNQUOTED(AP_GID_MIN, $withval, [Minimum allowed GID] ) ] )
326
327 AC_ARG_WITH(suexec-logfile,
328 APACHE_HELP_STRING(--with-suexec-logfile,Set the logfile),[
329   AC_DEFINE_UNQUOTED(AP_LOG_EXEC, "$withval", [SuExec log file] ) ] )
330
331 AC_ARG_WITH(suexec-safepath,
332 APACHE_HELP_STRING(--with-suexec-safepath,Set the safepath),[
333   AC_DEFINE_UNQUOTED(AP_SAFE_PATH, "$withval", [safe shell path for SuExec] ) ] )
334
335 AC_ARG_WITH(suexec-umask,
336 APACHE_HELP_STRING(--with-suexec-umask,umask for suexec'd process),[
337   AC_DEFINE_UNQUOTED(AP_SUEXEC_UMASK, 0$withval, [umask for suexec'd process] ) ] )
338
339 dnl AP_LIB_DIRS specifies the additional libs from srclib/ that we need
340 dnl AP_LIBS specifies the actual libraries. note we have some required libs.
341 AP_LIBS="$abs_builddir/srclib/pcre/libpcre.la $abs_builddir/srclib/apr-util/libaprutil.la $AP_LIBS"
342
343 dnl APR should go after the other libs, so the right symbols can be picked up
344 AP_LIBS="$AP_LIBS $abs_builddir/srclib/apr/libapr.la"
345 APACHE_SUBST(AP_LIB_DIRS)
346 APACHE_SUBST(AP_LIBS)
347
348 AC_DEFINE(AP_USING_AUTOCONF, 1,
349                 [Using autoconf to configure Apache])
350
351 if test "$SINGLE_LISTEN_UNSERIALIZED_ACCEPT" = "1"; then
352     AC_DEFINE(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, 1, 
353               [This platform doesn't suffer from the thundering herd problem])
354 fi
355
356 AC_DEFINE_UNQUOTED(AP_SIG_GRACEFUL, SIG$AP_SIG_GRACEFUL, [Signal used to gracefully restart])
357 AC_DEFINE_UNQUOTED(AP_SIG_GRACEFUL_STRING, "SIG$AP_SIG_GRACEFUL", [Signal used to gracefully restart (as a quoted string)])
358 AC_DEFINE_UNQUOTED(AP_SIG_GRACEFUL_SHORT, $AP_SIG_GRACEFUL, [Signal used to gracefully restart (without SIG prefix)])
359 AP_SIG_GRACEFUL_SHORT=$AP_SIG_GRACEFUL
360 AP_SIG_GRACEFUL=SIG$AP_SIG_GRACEFUL_SHORT
361 AC_SUBST(AP_SIG_GRACEFUL)
362 AC_SUBST(AP_SIG_GRACEFUL_STRING)
363 AC_SUBST(AP_SIG_GRACEFUL_SHORT)
364
365 dnl check for endianness
366 if test "$cross_compiling" = "no"; then
367   AC_C_BIGENDIAN
368 else
369   AC_DEFINE(AP_UNKNOWN_BYTE_ORDER,1,
370                 [byte order is unknown due to cross-compilation])
371 fi
372
373 APACHE_FAST_OUTPUT(Makefile modules/Makefile srclib/Makefile) 
374 APACHE_FAST_OUTPUT(os/beos/Makefile os/os2/Makefile os/Makefile)
375 APACHE_FAST_OUTPUT(os/unix/Makefile server/Makefile)
376 APACHE_FAST_OUTPUT(support/Makefile srclib/pcre/Makefile)
377 for i in $AP_LIB_DIRS; do
378   APACHE_FAST_OUTPUT(srclib/$i/Makefile)
379 done
380
381 if test -d ./test; then
382     APACHE_FAST_OUTPUT(test/Makefile)
383 fi
384
385 dnl get the exported vars from APRUTIL
386 . ./srclib/apr-util/export_vars.sh
387 APR_ADDTO(LIBS, $APRUTIL_EXPORT_LIBS)
388 AP_LIBS="$AP_LIBS $LIBTOOL_LIBS"
389
390 dnl ## Finalize the variables
391 echo $ac_n "${nl}Restore user-defined environment settings...${nl}"
392
393 APR_RESTORE_THE_ENVIRONMENT(CPPFLAGS, EXTRA_)
394 APR_RESTORE_THE_ENVIRONMENT(CFLAGS, EXTRA_)
395 APR_RESTORE_THE_ENVIRONMENT(CXXFLAGS, EXTRA_)
396 APR_RESTORE_THE_ENVIRONMENT(LDFLAGS, EXTRA_)
397 APR_RESTORE_THE_ENVIRONMENT(LIBS, EXTRA_)
398 APR_RESTORE_THE_ENVIRONMENT(INCLUDES, EXTRA_)
399
400 echo $ac_n "${nl}Construct makefiles and header files...${nl}"
401
402 APACHE_GEN_CONFIG_VARS
403
404 dnl ## Build modules.c
405 rm -f modules.c
406 echo $MODLIST | $AWK -f $srcdir/build/build-modules-c.awk > modules.c
407
408 AC_DEFINE_UNQUOTED(HTTPD_ROOT, "$prefix",
409         [Root directory of the Apache install area])
410 AC_DEFINE_UNQUOTED(SERVER_CONFIG_FILE, "conf/$progname.conf",
411         [Location of the config file, relative to the Apache root directory])
412 AC_DEFINE_UNQUOTED(APACHE_MPM_DIR, "$MPM_DIR",
413         [Location of the source for the current MPM])
414
415 perlbin=`$ac_aux_dir/PrintPath perl`
416 if test "x$perlbin" = "x"; then
417     perlbin="/replace/with/path/to/perl/interpreter"
418 fi
419 AC_SUBST(perlbin)
420
421 dnl If we are running on BSD/OS, we need to use the BSD .include syntax.
422
423 BSD_MAKEFILE=no
424 case $host in
425 *bsdi*)
426     # Check whether they've installed GNU make
427     if make --version > /dev/null 2>&1; then
428         true
429     else
430         BSD_MAKEFILE=yes
431     fi
432     ;;
433 esac
434
435 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,,[
436   APACHE_GEN_MAKEFILES
437 ])
438