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