]> granicus.if.org Git - apache/blob - configure.in
This baffled .mak exported build targets for mod_ssl/abs. They will
[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 Get the layout here, so we can pass the required variables to apr
22 dnl APACHE_ENABLE_LAYOUT
23 AC_MSG_CHECKING(for chosen layout)
24 AC_ARG_ENABLE(layout,
25 APACHE_HELP_STRING(--enable-layout=LAYOUT,Default file layout),[
26   LAYOUT=$enableval
27   APACHE_LAYOUT($srcdir/config.layout, $LAYOUT)
28   AC_MSG_RESULT($LAYOUT)
29 ], [
30   AC_MSG_RESULT([Autoconf Defaults])
31 ])
32
33 dnl Save user-defined environment settings for later restoration
34 dnl
35 APR_SAVE_THE_ENVIRONMENT(CPPFLAGS)
36 APR_SAVE_THE_ENVIRONMENT(CFLAGS)
37 APR_SAVE_THE_ENVIRONMENT(CXXFLAGS)
38 APR_SAVE_THE_ENVIRONMENT(LDFLAGS)
39 APR_SAVE_THE_ENVIRONMENT(LIBS)
40 APR_SAVE_THE_ENVIRONMENT(INCLUDES)
41
42 dnl Generate ./config.nice for reproducing runs of configure
43 dnl
44 APR_CONFIG_NICE(config.nice)
45
46 nl='
47 '
48
49 dnl XXX we can't just use AC_PREFIX_DEFAULT because that isn't subbed in
50 dnl by configure until it is too late.  Is that how it should be or not?
51 dnl Something seems broken here.
52 AC_PREFIX_DEFAULT(/usr/local/apache2)
53 test "$prefix" = "NONE" && prefix='/usr/local/apache2'
54 test "$exec_prefix" = "NONE" && exec_prefix='${prefix}'
55
56 dnl ## Run configure for packages Apache uses
57
58 dnl shared library support for these packages doesn't currently
59 dnl work on some platforms
60
61 AC_CANONICAL_SYSTEM
62
63 orig_prefix="$prefix"
64
65 echo $ac_n "${nl}Configuring Apache Portable Runtime library ...${nl}"
66
67 APR_SUBDIR_CONFIG(srclib/apr, "$apache_apr_flags --prefix=$prefix --exec-prefix=$exec_prefix --libdir=$libdir --bindir=$bindir")
68
69 echo $ac_n "${nl}Configuring Apache Portable Runtime Utility library...${nl}"
70
71 APR_SUBDIR_CONFIG(srclib/apr-util, "--with-apr=../apr --prefix=$prefix --exec-prefix=$exec_prefix --libdir=$libdir --bindir=$bindir")
72
73 echo $ac_n "${nl}Configuring PCRE regular expression library ...${nl}"
74
75 APR_SUBDIR_CONFIG(srclib/pcre, "--prefix=$prefix --exec-prefix=$exec_prefix --libdir=$libdir --bindir=$bindir")
76
77 echo $ac_n "${nl}Configuring Apache httpd ...${nl}"
78
79 echo $ac_n "obtaining flag settings from the sub-configures...${nl}"
80 . ./srclib/apr/APRVARS
81
82 dnl Now that we have APR's EXTRA_flags in our environment, move them over
83 dnl to the normal variables to avoid duplications and use them for testing.
84 dnl We ignore EXTRA_INCLUDES because our own includes will encompass them.
85 dnl
86 APR_ADDTO(CFLAGS, $EXTRA_CFLAGS)
87 APR_ADDTO(CPPFLAGS, $EXTRA_CPPFLAGS)
88 APR_ADDTO(LDFLAGS, $EXTRA_LDFLAGS)
89 APR_ADDTO(LIBS, $EXTRA_LIBS)
90 EXTRA_CFLAGS=
91 EXTRA_CPPFLAGS=
92 EXTRA_LDFLAGS=
93 EXTRA_LIBS=
94 EXTRA_INCLUDES=
95
96 dnl Absolute source/build directory
97 abs_srcdir=`(cd $srcdir && pwd)`
98 abs_builddir=`pwd`
99
100 dnl If the source dir is not equal to the build dir, 
101 dnl then we are running in VPATH mode.
102
103 if test "$abs_builddir" != "$abs_srcdir"; then
104   USE_VPATH=1
105   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])
106 else
107   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])
108 fi
109
110 echo $ac_n "${nl}Applying OS-specific hints for httpd ...${nl}"
111
112 case $host in
113   *os2*)
114       # Use a custom made libtool replacement
115       echo "using aplibtool"
116       LIBTOOL="$abs_srcdir/srclib/apr/build/aplibtool"
117       SH_LIBTOOL="$LIBTOOL --shared --export-all"
118       SH_LIBS="\$(ALL_LIBS)"
119       CORE_IMPLIB_FILE="ApacheCoreOS2.la"
120       CORE_IMPLIB="$abs_srcdir/server/$CORE_IMPLIB_FILE"
121       MK_IMPLIB="emximp"
122       other_targets="$other_targets os2core"
123       INSTALL_PROG_FLAGS="-e .exe"
124       SHLTCFLAGS=""
125       LTCFLAGS=""
126       ;;
127   *)
128       if test "x$LTFLAGS" = "x"; then
129           LTFLAGS='--silent'
130       fi
131       LIBTOOL='$(SHELL) $(top_builddir)/srclib/apr/libtool $(LTFLAGS)'
132       libtoolversion=`$abs_builddir/srclib/apr/libtool --version`
133       case $libtoolversion in
134           *1.4*)
135               SH_LIBTOOL='$(LIBTOOL)'
136               SHLTCFLAGS="-prefer-pic"
137               LTCFLAGS="-prefer-non-pic -static"
138               ;;
139           *)
140               SH_LIBTOOL='$(SHELL) $(top_builddir)/shlibtool $(LTFLAGS)'
141               SHLTCFLAGS=""
142               LTCFLAGS=""
143               ;;
144       esac
145       ;;
146 esac
147 APACHE_SUBST(SHLTCFLAGS)
148 APACHE_SUBST(LTCFLAGS)
149
150 AP_SIG_GRACEFUL=USR1
151
152 case $host in
153   *-apple-aux3*)
154       APR_SETVAR(APACHE_MPM, [prefork])
155       APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1])
156       ;;
157   *-beos*)
158       APR_SETVAR(APACHE_MPM, [beos])
159       APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1])
160       ;;
161   *os2_emx*)
162       APR_SETVAR(APACHE_MPM, [mpmt_os2])
163       APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1])
164       ;;
165   *-linux-*)
166       case `uname -r` in
167         2.0* ) 
168             AP_SIG_GRACEFUL=WINCH
169             ;;
170         2.[[2-9]]* ) 
171             APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1])
172             ;;
173         * )
174             ;;
175       esac
176       ;;
177   *486-*-bsdi* | *-netbsd* | *-freebsd* | *-apple-darwin* | *-dec-osf* | *-qnx)
178       APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1])
179       ;;
180   *-solaris2*)
181       dnl  This is a hack -- we should be using AC_TRY_RUN instead
182       ap_platform_runtime_link_flag="-R"
183       ;;
184   *cygwin*)
185       APR_SETVAR(APACHE_MPM, [prefork])
186       APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1])
187       ;;
188 esac
189
190 dnl
191 dnl Process command line arguments. This is done early in the process so the
192 dnl user can get feedback quickly in case of an error.
193 dnl
194 dnl ### need to move some of the arguments "up here"
195
196 dnl ## Check for programs
197
198 AC_PATH_PROG(RM, rm)
199 AC_PROG_AWK
200 AC_PROG_CC
201 AC_PROG_CPP
202 AC_PROG_INSTALL
203 AC_PROG_LN_S
204 AC_CHECK_TOOL(RANLIB, ranlib, true)
205 dnl AC_PATH_PROG(PERL_PATH, perl)
206
207 dnl various OS checks that apparently set required flags
208 AC_AIX
209 AC_ISC_POSIX
210 AC_MINIX
211
212 dnl ## Check for libraries
213
214 dnl ## Check for header files
215
216 dnl I think these are just used all over the place, so just check for
217 dnl them at the base of the tree. If some are specific to a single
218 dnl directory, they should be moved (Comment #Spoon)
219
220 dnl Regarding standard header files: AC_HEADER_STDC doesn't set symbols
221 dnl HAVE_STRING_H, HAVE_STDLIB_H, etc., so those are checked for
222 dnl explicitly so that the normal HAVE_xxx_H symbol is defined.
223
224 AC_HEADER_STDC
225 AC_CHECK_HEADERS( \
226 string.h \
227 limits.h \
228 unistd.h \
229 sys/socket.h \
230 pwd.h \
231 grp.h \
232 strings.h \
233 sys/processor.h \
234 sys/sem.h
235 )
236 AC_HEADER_SYS_WAIT
237
238 dnl ## Check for typedefs, structures, and compiler characteristics.
239
240 AC_C_CONST
241 if test "$ac_cv_prog_gcc" = "yes"; then
242   APR_ADDTO(NOTEST_CPPFLAGS,-DAP_HAVE_DESIGNATED_INITIALIZER)
243 fi
244
245 dnl ## Check for library functions
246
247 dnl See Comment #Spoon
248
249 AC_CHECK_FUNCS( \
250 getpwnam \
251 getgrnam \
252 initgroups \
253 bindprocessor \
254 timegm \
255 )
256
257 dnl ## Check for the tm_gmtoff field in struct tm to get the timezone diffs
258 AC_CACHE_CHECK([for tm_gmtoff in struct tm], ac_cv_struct_tm_gmtoff,
259 [AC_TRY_COMPILE([#include <sys/types.h>
260 #include <time.h>], [struct tm tm; tm.tm_gmtoff;],
261   ac_cv_struct_tm_gmtoff=yes, ac_cv_struct_tm_gmtoff=no)])
262 if test "$ac_cv_struct_tm_gmtoff" = "yes"; then
263     AC_DEFINE(HAVE_GMTOFF)
264 fi
265
266 dnl ## Set up any appropriate OS-specific environment variables for apachectl
267
268 case $host in
269     *aix*)
270         # for 32-bit builds, increase MAXDATA to allow lots of threads
271         if test x$COMPILE_MODE != 64; then
272             OS_SPECIFIC_VARS="set LDR_CNTRL=\"MAXDATA=0x80000000\" ; export LDR_CNTRL ;"
273         fi
274         OS_SPECIFIC_VARS="$OS_SPECIFIC_VARS set AIXTHREAD_SCOPE=S ; export AIXTHREAD_SCOPE"
275         ;;
276     *os390*)
277         OS_SPECIFIC_VARS="export _CEE_RUNOPTS=\"STACK(,,ANY)\" ; export _EDC_ADD_ERRNO2=1"
278         ;;
279     *)
280         OS_SPECIFIC_VARS=""
281 esac
282       
283 AC_ARG_WITH(port,APACHE_HELP_STRING(--with-port=PORT,Port on which to listen (default is 80)),
284         [if test "$withval" = "yes"; then AC_MSG_ERROR('option --with-port requires a value (the TCP port number)'); else PORT="$withval"; fi],
285         [PORT=80])
286
287 AC_ARG_ENABLE(maintainer-mode,APACHE_HELP_STRING(--enable-maintainer-mode,Turn on debugging and compile time warnings),
288 [
289   APR_ADDTO(CPPFLAGS, -DAP_DEBUG)
290 ])dnl
291
292 prefix="$orig_prefix"
293 APACHE_ENABLE_MODULES
294
295 dnl reading config stubs
296 esyscmd(./build/config-stubs .)
297
298 APACHE_SUBST(progname)
299 APACHE_SUBST(MPM_LIB)
300 APACHE_SUBST(OS)
301 APACHE_SUBST(OS_DIR)
302 APACHE_SUBST(BUILTIN_LIBS)
303 APACHE_SUBST(SHLIBPATH_VAR)
304 APACHE_SUBST(OS_SPECIFIC_VARS)
305
306 PRE_SHARED_CMDS='echo ""'
307 POST_SHARED_CMDS='echo ""'
308
309 dnl apache_need_shared tells us if Apache modules are being built as DSOs
310
311 if test "$apache_need_shared" = "yes"; then
312   if test -f $ac_aux_dir/ltconfig; then
313     $SHELL $ac_aux_dir/ltconfig --output=shlibtool --disable-static --srcdir=$ac_aux_dir --cache-file=./config.cache $ac_aux_dir/ltmain.sh
314   fi
315   shared_build="shared-build"
316 fi
317
318 dnl enable_so tells us if *any* modules can be built as DSOs
319
320 if test "$enable_so" = "yes"; then
321   case $host in
322     *-ibm-aix*)
323       HTTPD_LDFLAGS="$HTTPD_LDFLAGS -Wl,-uXML_Parse -Wl,-bE:$abs_builddir/server/httpd.exp"
324       SH_LDFLAGS="$SH_LDFLAGS \$(EXTRA_LDFLAGS) \$(EXTRA_LIBS)"
325       UTIL_LDFLAGS="$UTIL_LDFLAGS -Wl,-uXML_Parse"
326       ;;
327     *beos)
328       SH_LDFLAGS='$(top_builddir)/_APP_'
329       PRE_SHARED_CMDS='ln -s $(top_builddir)/httpd $(top_builddir)/_APP_'
330       POST_SHARED_CMDS='rm $(top_builddir)/_APP_'
331       ;;
332     *os390)
333       HTTPD_LDFLAGS="$HTTPD_LDFLAGS --main=$abs_srcdir/server/main.o --core-dll=$abs_srcdir/apachecore.dll"
334       SH_LDFLAGS="$SH_LDFLAGS --core-dll=$abs_srcdir/apachecore.dll"
335   esac
336 fi
337
338 APACHE_SUBST(PRE_SHARED_CMDS)
339 APACHE_SUBST(POST_SHARED_CMDS)
340 APACHE_SUBST(shared_build)
341
342 AC_ARG_WITH(program-name,
343 APACHE_HELP_STRING(--with-program-name,alternate executable name),[
344   progname="$withval" ], [
345   progname="httpd"] )
346
347 # SuExec parameters
348 AC_ARG_WITH(suexec-bin,
349 APACHE_HELP_STRING(--with-suexec-bin,Path to suexec binary),[
350   AC_DEFINE_UNQUOTED(SUEXEC_BIN, "$withval", [Path to suexec binary] )
351 ] )
352
353 AC_ARG_WITH(suexec-caller,
354 APACHE_HELP_STRING(--with-suexec-caller,User allowed to call SuExec),[
355   AC_DEFINE_UNQUOTED(AP_HTTPD_USER, "$withval", [User allowed to call SuExec] ) ] )
356
357 AC_ARG_WITH(suexec-userdir,
358 APACHE_HELP_STRING(--with-suexec-userdir,User subdirectory),[
359   AC_DEFINE_UNQUOTED(AP_USERDIR_SUFFIX, "$withval", [User subdirectory] ) ] )
360
361 AC_ARG_WITH(suexec-docroot,
362 APACHE_HELP_STRING(--with-suexec-docroot,SuExec root directory),[
363   AC_DEFINE_UNQUOTED(AP_DOC_ROOT, "$withval", [SuExec root directory] ) ] )
364
365 AC_ARG_WITH(suexec-uidmin,
366 APACHE_HELP_STRING(--with-suexec-uidmin,Minimal allowed UID),[
367   AC_DEFINE_UNQUOTED(AP_UID_MIN, $withval, [Minimum allowed UID] ) ] )
368
369 AC_ARG_WITH(suexec-gidmin,
370 APACHE_HELP_STRING(--with-suexec-gidmin,Minimal allowed GID),[
371   AC_DEFINE_UNQUOTED(AP_GID_MIN, $withval, [Minimum allowed GID] ) ] )
372
373 AC_ARG_WITH(suexec-logfile,
374 APACHE_HELP_STRING(--with-suexec-logfile,Set the logfile),[
375   AC_DEFINE_UNQUOTED(AP_LOG_EXEC, "$withval", [SuExec log file] ) ] )
376
377 AC_ARG_WITH(suexec-safepath,
378 APACHE_HELP_STRING(--with-suexec-safepath,Set the safepath),[
379   AC_DEFINE_UNQUOTED(AP_SAFE_PATH, "$withval", [safe shell path for SuExec] ) ] )
380
381 AC_ARG_WITH(suexec-umask,
382 APACHE_HELP_STRING(--with-suexec-umask,umask for suexec'd process),[
383   AC_DEFINE_UNQUOTED(AP_SUEXEC_UMASK, 0$withval, [umask for suexec'd process] ) ] )
384
385 dnl AP_LIBS specifies the actual libraries. note we have some required libs.
386 AP_LIBS="$abs_builddir/srclib/pcre/libpcre.la $abs_builddir/srclib/apr-util/libaprutil.la $AP_LIBS"
387
388 dnl APR should go after the other libs, so the right symbols can be picked up
389 AP_LIBS="$AP_LIBS $abs_builddir/srclib/apr/libapr.la"
390 APACHE_SUBST(AP_LIBS)
391
392 AC_DEFINE(AP_USING_AUTOCONF, 1,
393                 [Using autoconf to configure Apache])
394
395 if test "$SINGLE_LISTEN_UNSERIALIZED_ACCEPT" = "1"; then
396     AC_DEFINE(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, 1, 
397               [This platform doesn't suffer from the thundering herd problem])
398 fi
399
400 AC_DEFINE_UNQUOTED(AP_SIG_GRACEFUL, SIG$AP_SIG_GRACEFUL, [Signal used to gracefully restart])
401 AC_DEFINE_UNQUOTED(AP_SIG_GRACEFUL_STRING, "SIG$AP_SIG_GRACEFUL", [Signal used to gracefully restart (as a quoted string)])
402 AC_DEFINE_UNQUOTED(AP_SIG_GRACEFUL_SHORT, $AP_SIG_GRACEFUL, [Signal used to gracefully restart (without SIG prefix)])
403 AP_SIG_GRACEFUL_SHORT=$AP_SIG_GRACEFUL
404 AP_SIG_GRACEFUL=SIG$AP_SIG_GRACEFUL_SHORT
405 AC_SUBST(AP_SIG_GRACEFUL)
406 AC_SUBST(AP_SIG_GRACEFUL_STRING)
407 AC_SUBST(AP_SIG_GRACEFUL_SHORT)
408
409 dnl check for endianness
410 if test "$cross_compiling" = "no"; then
411   AC_C_BIGENDIAN
412 else
413   AC_DEFINE(AP_UNKNOWN_BYTE_ORDER,1,
414                 [byte order is unknown due to cross-compilation])
415 fi
416
417 APACHE_FAST_OUTPUT(Makefile modules/Makefile srclib/Makefile) 
418 APACHE_FAST_OUTPUT(os/beos/Makefile os/os2/Makefile os/Makefile)
419 APACHE_FAST_OUTPUT(os/unix/Makefile server/Makefile)
420 APACHE_FAST_OUTPUT(support/Makefile srclib/pcre/Makefile)
421
422 if test -d ./test; then
423     APACHE_FAST_OUTPUT(test/Makefile)
424 fi
425
426 dnl get the exported vars from APRUTIL
427 . ./srclib/apr-util/export_vars.sh
428 APR_ADDTO(LIBS, $APRUTIL_EXPORT_LIBS)
429 APR_ADDTO(INCLUDES, $APRUTIL_EXPORT_INCLUDES)
430 APR_ADDTO(LDFLAGS, $APRUTIL_LDFLAGS)
431 AP_LIBS="$AP_LIBS $LIBTOOL_LIBS"
432
433 dnl ## Finalize the variables
434 echo $ac_n "${nl}Restore user-defined environment settings...${nl}"
435
436 APR_RESTORE_THE_ENVIRONMENT(CPPFLAGS, EXTRA_)
437 APR_RESTORE_THE_ENVIRONMENT(CFLAGS, EXTRA_)
438 APR_RESTORE_THE_ENVIRONMENT(CXXFLAGS, EXTRA_)
439 APR_RESTORE_THE_ENVIRONMENT(LDFLAGS, EXTRA_)
440 APR_RESTORE_THE_ENVIRONMENT(LIBS, EXTRA_)
441 APR_RESTORE_THE_ENVIRONMENT(INCLUDES, EXTRA_)
442
443 echo $ac_n "${nl}Construct makefiles and header files...${nl}"
444
445 APACHE_GEN_CONFIG_VARS
446
447 dnl ## Build modules.c
448 rm -f modules.c
449 echo $MODLIST | $AWK -f $srcdir/build/build-modules-c.awk > modules.c
450
451 AC_DEFINE_UNQUOTED(HTTPD_ROOT, "$prefix",
452         [Root directory of the Apache install area])
453 AC_DEFINE_UNQUOTED(SERVER_CONFIG_FILE, "conf/$progname.conf",
454         [Location of the config file, relative to the Apache root directory])
455 AC_DEFINE_UNQUOTED(APACHE_MPM_DIR, "$MPM_DIR",
456         [Location of the source for the current MPM])
457
458 perlbin=`$ac_aux_dir/PrintPath perl`
459 if test "x$perlbin" = "x"; then
460     perlbin="/replace/with/path/to/perl/interpreter"
461 fi
462 AC_SUBST(perlbin)
463
464 dnl If we are running on BSD/OS, we need to use the BSD .include syntax.
465
466 BSD_MAKEFILE=no
467 case $host in
468 *bsdi*)
469     # Check whether they've installed GNU make
470     if make --version > /dev/null 2>&1; then
471         true
472     else
473         BSD_MAKEFILE=yes
474     fi
475     ;;
476 esac
477
478 AC_OUTPUT($APACHE_OUTPUT_FILES support/apxs support/apachectl support/dbmmanage support/envvars-std support/log_server_status support/logresolve.pl support/phf_abuse_log.cgi support/split-logfile build/rules.mk,[true],[
479   APACHE_GEN_MAKEFILES
480 ])
481