]> granicus.if.org Git - apache/blob - acinclude.m4
Rebuids various transformations.
[apache] / acinclude.m4
1
2 dnl APACHE_HELP_STRING(LHS, RHS)
3 dnl Autoconf 2.50 can not handle substr correctly.  It does have 
4 dnl AC_HELP_STRING, so let's try to call it if we can.
5 dnl Note: this define must be on one line so that it can be properly returned
6 dnl as the help string.
7 AC_DEFUN(APACHE_HELP_STRING,[ifelse(regexp(AC_ACVERSION, 2\.1), -1, AC_HELP_STRING($1,$2),[  ]$1 substr([                       ],len($1))$2)])dnl
8
9 dnl APACHE_SUBST(VARIABLE)
10 dnl Makes VARIABLE available in generated files
11 dnl (do not use @variable@ in Makefiles, but $(variable))
12 AC_DEFUN(APACHE_SUBST,[
13   APACHE_VAR_SUBST="$APACHE_VAR_SUBST $1"
14   AC_SUBST($1)
15 ])
16
17 dnl APACHE_FAST_OUTPUT(FILENAME)
18 dnl Perform substitutions on FILENAME (Makefiles only)
19 AC_DEFUN(APACHE_FAST_OUTPUT,[
20   APACHE_FAST_OUTPUT_FILES="$APACHE_FAST_OUTPUT_FILES $1"
21 ])
22
23 dnl APACHE_GEN_CONFIG_VARS
24 dnl Creates config_vars.mk
25 AC_DEFUN(APACHE_GEN_CONFIG_VARS,[
26   APACHE_SUBST(abs_srcdir)
27   APACHE_SUBST(bindir)
28   APACHE_SUBST(sbindir)
29   APACHE_SUBST(cgidir)
30   APACHE_SUBST(logfiledir)
31   APACHE_SUBST(exec_prefix)
32   APACHE_SUBST(datadir)
33   APACHE_SUBST(localstatedir)
34   APACHE_SUBST(mandir)
35   APACHE_SUBST(libdir)
36   APACHE_SUBST(libexecdir)
37   APACHE_SUBST(htdocsdir)
38   APACHE_SUBST(manualdir)
39   APACHE_SUBST(includedir)
40   APACHE_SUBST(errordir)
41   APACHE_SUBST(iconsdir)
42   APACHE_SUBST(sysconfdir)
43   APACHE_SUBST(installbuilddir)
44   APACHE_SUBST(runtimedir)
45   APACHE_SUBST(proxycachedir)
46   APACHE_SUBST(other_targets)
47   APACHE_SUBST(progname)
48   APACHE_SUBST(prefix)
49   APACHE_SUBST(AWK)
50   APACHE_SUBST(CC)
51   APACHE_SUBST(CPP)
52   APACHE_SUBST(CXX)
53   APACHE_SUBST(CPPFLAGS)
54   APACHE_SUBST(CFLAGS)
55   APACHE_SUBST(CXXFLAGS)
56   APACHE_SUBST(LTFLAGS)
57   APACHE_SUBST(LDFLAGS)
58   APACHE_SUBST(LT_LDFLAGS)
59   APACHE_SUBST(SH_LDFLAGS)
60   APACHE_SUBST(HTTPD_LDFLAGS)
61   APACHE_SUBST(UTIL_LDFLAGS)
62   APACHE_SUBST(LIBS)
63   APACHE_SUBST(DEFS)
64   APACHE_SUBST(INCLUDES)
65   APACHE_SUBST(NOTEST_CPPFLAGS)
66   APACHE_SUBST(NOTEST_CFLAGS)
67   APACHE_SUBST(NOTEST_CXXFLAGS)
68   APACHE_SUBST(NOTEST_LDFLAGS)
69   APACHE_SUBST(NOTEST_LIBS)
70   APACHE_SUBST(EXTRA_CPPFLAGS)
71   APACHE_SUBST(EXTRA_CFLAGS)
72   APACHE_SUBST(EXTRA_CXXFLAGS)
73   APACHE_SUBST(EXTRA_LDFLAGS)
74   APACHE_SUBST(EXTRA_LIBS)
75   APACHE_SUBST(EXTRA_INCLUDES)
76   APACHE_SUBST(INTERNAL_CPPFLAGS)
77   APACHE_SUBST(LIBTOOL)
78   APACHE_SUBST(SHELL)
79   APACHE_SUBST(RSYNC)
80   APACHE_SUBST(MODULE_DIRS)
81   APACHE_SUBST(MODULE_CLEANDIRS)
82   APACHE_SUBST(PORT)
83   APACHE_SUBST(SSLPORT)
84   APACHE_SUBST(CORE_IMPLIB_FILE)
85   APACHE_SUBST(CORE_IMPLIB)
86   APACHE_SUBST(SH_LIBS)
87   APACHE_SUBST(SH_LIBTOOL)
88   APACHE_SUBST(MK_IMPLIB)
89   APACHE_SUBST(MKDEP)
90   APACHE_SUBST(INSTALL_PROG_FLAGS)
91   APACHE_SUBST(DSO_MODULES)
92   APACHE_SUBST(ENABLED_DSO_MODULES)
93   APACHE_SUBST(LOAD_ALL_MODULES)
94   APACHE_SUBST(APR_BINDIR)
95   APACHE_SUBST(APR_INCLUDEDIR)
96   APACHE_SUBST(APR_VERSION)
97   APACHE_SUBST(APR_CONFIG)
98   APACHE_SUBST(APU_BINDIR)
99   APACHE_SUBST(APU_INCLUDEDIR)
100   APACHE_SUBST(APU_VERSION)
101   APACHE_SUBST(APU_CONFIG)
102   APACHE_SUBST(APREQ_MAJOR_VERSION)
103   APACHE_SUBST(APREQ_LIBTOOL_VERSION)
104
105   abs_srcdir="`(cd $srcdir && pwd)`"
106
107   echo creating config_vars.mk
108   test -d build || $mkdir_p build
109   > build/config_vars.mk
110   for i in $APACHE_VAR_SUBST; do
111     eval echo "$i = \$$i" >> build/config_vars.mk
112   done
113 ])
114
115 dnl APACHE_GEN_MAKEFILES
116 dnl Creates Makefiles
117 AC_DEFUN(APACHE_GEN_MAKEFILES,[
118   $SHELL $srcdir/build/fastgen.sh $srcdir $ac_cv_mkdir_p $BSD_MAKEFILE $APACHE_FAST_OUTPUT_FILES
119 ])
120
121 dnl ## APACHE_OUTPUT(file)
122 dnl ## adds "file" to the list of files generated by AC_OUTPUT
123 dnl ## This macro can be used several times.
124 AC_DEFUN(APACHE_OUTPUT, [
125   APACHE_OUTPUT_FILES="$APACHE_OUTPUT_FILES $1"
126 ])
127
128 dnl
129 dnl APACHE_TYPE_RLIM_T
130 dnl
131 dnl If rlim_t is not defined, define it to int
132 dnl
133 AC_DEFUN(APACHE_TYPE_RLIM_T, [
134   AC_CACHE_CHECK([for rlim_t], ac_cv_type_rlim_t, [
135     AC_TRY_COMPILE([
136 #include <sys/types.h>
137 #include <sys/time.h>
138 #include <sys/resource.h>
139 ], [rlim_t spoon;], [
140       ac_cv_type_rlim_t=yes
141     ],[ac_cv_type_rlim_t=no
142     ])
143   ])
144   if test "$ac_cv_type_rlim_t" = "no" ; then
145       AC_DEFINE(rlim_t, int,
146           [Define to 'int' if <sys/resource.h> doesn't define it for us])
147   fi
148 ])
149
150 dnl APACHE_MODPATH_INIT(modpath)
151 AC_DEFUN(APACHE_MODPATH_INIT,[
152   current_dir=$1
153   modpath_current=modules/$1
154   modpath_static=
155   modpath_shared=
156   test -d $1 || $srcdir/build/mkdir.sh $modpath_current
157   > $modpath_current/modules.mk
158 ])dnl
159 dnl
160 AC_DEFUN(APACHE_MODPATH_FINISH,[
161   echo "DISTCLEAN_TARGETS = modules.mk" >> $modpath_current/modules.mk
162   echo "static = $modpath_static" >> $modpath_current/modules.mk
163   echo "shared = $modpath_shared" >> $modpath_current/modules.mk
164   if test ! -z "$modpath_static" -o ! -z "$modpath_shared"; then
165     MODULE_DIRS="$MODULE_DIRS $current_dir"
166   else
167     MODULE_CLEANDIRS="$MODULE_CLEANDIRS $current_dir"
168   fi
169   APACHE_FAST_OUTPUT($modpath_current/Makefile)
170 ])dnl
171 dnl
172 dnl APACHE_MODPATH_ADD(name[, shared[, objects [, ldflags[, libs]]]])
173 AC_DEFUN(APACHE_MODPATH_ADD,[
174   if test -z "$3"; then
175     objects="mod_$1.lo"
176   else
177     objects="$3"
178   fi
179
180   if test -z "$module_standalone"; then
181     if test -z "$2"; then
182       # The filename of a convenience library must have a "lib" prefix:
183       libname="libmod_$1.la"
184       BUILTIN_LIBS="$BUILTIN_LIBS $modpath_current/$libname"
185       modpath_static="$modpath_static $libname"
186       cat >>$modpath_current/modules.mk<<EOF
187 $libname: $objects
188         \$(MOD_LINK) $objects $5
189 EOF
190       if test ! -z "$5"; then
191         APR_ADDTO(AP_LIBS, [$5])
192       fi
193     else
194       apache_need_shared=yes
195       libname="mod_$1.la"
196       shobjects=`echo $objects | sed 's/\.lo/.slo/g'`
197       modpath_shared="$modpath_shared $libname"
198       cat >>$modpath_current/modules.mk<<EOF
199 $libname: $shobjects
200         \$(SH_LINK) -rpath \$(libexecdir) -module -avoid-version $4 $objects $5
201 EOF
202     fi
203   fi
204 ])dnl
205
206 dnl
207 dnl APACHE_MPM_MODULE(name[, shared[, objects[, config[, path[, libs]]]]])
208 dnl
209 dnl Provide information for building the MPM.  (Enablement is handled using
210 dnl --with-mpm/--enable-mpms-shared.)
211 dnl
212 dnl name     -- name of MPM, same as MPM directory name
213 dnl shared   -- "shared" to indicate shared module build, empty string otherwise
214 dnl objects  -- one or more .lo files to link into the MPM module (default: mpmname.lo)
215 dnl config   -- configuration logic to run if the MPM is enabled
216 dnl path     -- relative path to MPM (default: server/mpm/mpmname)
217 dnl libs     -- libs needed by this MPM
218 dnl
219 AC_DEFUN(APACHE_MPM_MODULE,[
220     if ap_mpm_is_enabled $1; then
221         if test -z "$3"; then
222             objects="$1.lo"
223         else
224             objects="$3"
225         fi
226
227         if test -z "$5"; then
228             mpmpath="server/mpm/$1"
229         else
230             mpmpath=$5
231         fi
232
233         dnl VPATH support
234         test -d $mpmpath || $srcdir/build/mkdir.sh $mpmpath
235
236         APACHE_FAST_OUTPUT($mpmpath/Makefile)
237
238         if test -z "$2"; then
239             APR_ADDTO(AP_LIBS, [$6])
240             libname="lib$1.la"
241             cat >$mpmpath/modules.mk<<EOF
242 $libname: $objects
243         \$(MOD_LINK) $objects
244 DISTCLEAN_TARGETS = modules.mk
245 static = $libname
246 shared =
247 EOF
248         else
249             apache_need_shared=yes
250             libname="mod_mpm_$1.la"
251             shobjects=`echo $objects | sed 's/\.lo/.slo/g'`
252             cat >$mpmpath/modules.mk<<EOF
253 $libname: $shobjects
254         \$(SH_LINK) -rpath \$(libexecdir) -module -avoid-version $objects $6
255 DISTCLEAN_TARGETS = modules.mk
256 static =
257 shared = $libname
258 EOF
259             # add default MPM to LoadModule list
260             if test $1 = $default_mpm; then
261                 DSO_MODULES="$DSO_MODULES mpm_$1"
262                 ENABLED_DSO_MODULES="${ENABLED_DSO_MODULES},mpm_$1"
263             fi
264         fi
265         $4
266     fi
267 ])dnl
268
269 dnl
270 dnl APACHE_MODULE(name, helptext[, objects[, structname[, default[, config[, prereq_module]]]]])
271 dnl
272 dnl default is one of:
273 dnl   yes    -- enabled by default. user must explicitly disable.
274 dnl   no     -- disabled under default, most, all. user must explicitly enable.
275 dnl   most   -- disabled by default. enabled explicitly or with most or all.
276 dnl   static -- enabled as static by default, must be explicitly changed.
277 dnl   ""     -- disabled under default, most. enabled explicitly or with all.
278 dnl             XXX: The arg must really be empty here. Passing an empty shell
279 dnl             XXX: variable doesn't work for some reason. This should be
280 dnl             XXX: fixed.
281 dnl
282 dnl basically: yes/no is a hard setting. "most" means follow the "most"
283 dnl            setting. otherwise, fall under the "all" setting.
284 dnl            explicit yes/no always overrides, except if the user selects
285 dnl            "reallyall".
286 dnl
287 dnl prereq_module is a module (without the "mod_" prefix) that must be enabled
288 dnl   if the current module is enabled.  If the current module is built
289 dnl   statically, prereq_module must be built statically, too.  If these
290 dnl   conditions are not fulfilled, configure will abort if the current module
291 dnl   has been enabled explicitly. Otherwise, configure will disable the
292 dnl   current module.
293 dnl   prereq_module's APACHE_MODULE() statement must have been processed
294 dnl   before the current APACHE_MODULE() statement.
295 dnl
296 AC_DEFUN(APACHE_MODULE,[
297   AC_MSG_CHECKING(whether to enable mod_$1)
298   define([optname],[--]ifelse($5,yes,disable,enable)[-]translit($1,_,-))dnl
299   AC_ARG_ENABLE(translit($1,_,-),APACHE_HELP_STRING(optname(),$2),force_$1=$enableval,enable_$1=ifelse($5,,maybe-all,$5))
300   undefine([optname])dnl
301   _apmod_extra_msg=""
302   dnl When --enable-modules=most or --enable-modules=(really)all is set and the
303   dnl module was not explicitly requested, allow a module to disable itself if
304   dnl its pre-reqs fail.
305   case "$enable_$1" in
306     yes|static|shared)
307       _apmod_required="yes"
308       ;;
309     *)
310       case "$module_selection" in
311       reallyall|all|most)
312         _apmod_required="no"
313         ;;
314       *)
315         _apmod_required="yes"
316         ;;
317       esac
318   esac
319   if test "$enable_$1" = "static"; then
320     enable_$1=static
321   elif test "$enable_$1" = "yes"; then
322     enable_$1=$module_default
323   elif test "$enable_$1" = "most"; then
324     if test "$module_selection" = "most" -o "$module_selection" = "all" -o \
325             "$module_selection" = "reallyall"
326     then
327       enable_$1=$module_default
328     elif test "$module_selection" = "few" -o "$module_selection" = "none"; then
329       enable_$1=no
330     fi
331     _apmod_extra_msg=" ($module_selection)"
332   elif test "$enable_$1" = "maybe-all"; then
333     if test "$module_selection" = "all" -o "$module_selection" = "reallyall"
334     then
335       enable_$1=$module_default
336       _apmod_extra_msg=" ($module_selection)"
337     else
338       enable_$1=no
339     fi
340   elif test "$enable_$1" = "no" -a "$module_selection" = "reallyall" -a \
341             "$force_$1" != "no" ; then
342       enable_$1=$module_default
343       _apmod_extra_msg=" ($module_selection)"
344   fi
345   if test "$enable_$1" != "no"; then
346     dnl If we plan to enable it, allow the module to run some autoconf magic
347     dnl that may disable it because of missing dependencies.
348     ifelse([$6$7],,:,
349            [AC_MSG_RESULT([checking dependencies])
350             ifelse([$7],,:,[if test "$enable_$7" = "no" ; then
351                               enable_$1=no
352                               AC_MSG_WARN("mod_$7 is disabled but required for mod_$1")
353                             elif test "$enable_$1" = "static" && test "$enable_$7" != "static" ; then
354                               enable_$1=no
355                               AC_MSG_WARN("cannot build mod_$1 statically if mod_$7 is built shared")
356                             else])
357             ifelse([$6],,:,[  $6])
358             ifelse([$7],,:,[fi])
359             AC_MSG_CHECKING(whether to enable mod_$1)
360             if test "$enable_$1" = "no"; then
361               if test "$_apmod_required" = "no"; then
362                 _apmod_extra_msg=" (disabled)"
363               else
364                 AC_MSG_ERROR([mod_$1 has been requested but can not be built due to prerequisite failures])
365               fi
366             fi])
367   fi
368   AC_MSG_RESULT($enable_$1$_apmod_extra_msg)
369   if test "$enable_$1" != "no"; then
370     case "$enable_$1" in
371     static*)
372       MODLIST="$MODLIST ifelse($4,,$1,$4)"
373       if test "$1" = "so"; then
374           sharedobjs=yes
375       fi
376       shared="";;
377     *)
378       enable_$1=`echo $enable_$1|sed 's/shared,*//'`
379       sharedobjs=yes
380       shared=yes
381       DSO_MODULES="$DSO_MODULES $1"
382       if test "$5" = "yes" ; then
383         ENABLED_DSO_MODULES="${ENABLED_DSO_MODULES},$1"
384       fi
385       ;;
386     esac
387     define([modprefix], [MOD_]translit($1, [a-z-], [A-Z_]))
388     APACHE_MODPATH_ADD($1, $shared, $3,, [\$(]modprefix[_LDADD)])
389     APACHE_SUBST(modprefix[_LDADD])
390     undefine([modprefix])
391   fi
392 ])dnl
393
394 dnl
395 dnl APACHE_ENABLE_MODULES
396 dnl
397 AC_DEFUN(APACHE_ENABLE_MODULES,[
398   module_selection=most
399   module_default=shared
400
401   dnl Check whether we have DSO support.
402   dnl If "yes", we build shared modules by default.
403   APR_CHECK_APR_DEFINE(APR_HAS_DSO)
404
405   if test $ac_cv_define_APR_HAS_DSO = "no"; then
406     AC_MSG_WARN([Missing DSO support - building static modules by default.])
407     module_default=static
408   fi
409
410
411   AC_ARG_ENABLE(modules,
412   APACHE_HELP_STRING(--enable-modules=MODULE-LIST,Space-separated list of modules to enable | "all" | "most" | "few" | "none" | "reallyall"),[
413     if test "$enableval" = "none"; then
414        module_default=no
415        module_selection=none
416     else
417       for i in $enableval; do
418         if test "$i" = "all" -o "$i" = "most" -o "$i" = "few" -o "$i" = "reallyall"
419         then
420           module_selection=$i
421         else
422           i=`echo $i | sed 's/-/_/g'`
423           eval "enable_$i=shared"
424         fi
425       done
426     fi
427   ])
428   
429   AC_ARG_ENABLE(mods-shared,
430   APACHE_HELP_STRING(--enable-mods-shared=MODULE-LIST,Space-separated list of shared modules to enable | "all" | "most" | "few" | "reallyall"),[
431     for i in $enableval; do
432       if test "$i" = "all" -o "$i" = "most" -o "$i" = "few" -o "$i" = "reallyall"
433       then
434         module_selection=$i
435         module_default=shared
436       else
437         i=`echo $i | sed 's/-/_/g'`
438         eval "enable_$i=shared"
439       fi
440     done
441   ])
442   
443   AC_ARG_ENABLE(mods-static,
444   APACHE_HELP_STRING(--enable-mods-static=MODULE-LIST,Space-separated list of static modules to enable | "all" | "most" | "few" | "reallyall"),[
445     for i in $enableval; do
446       if test "$i" = "all" -o "$i" = "most" -o "$i" = "few" -o "$i" = "reallyall"; then
447         module_selection=$i
448         module_default=static
449       else
450         i=`echo $i | sed 's/-/_/g'`
451         eval "enable_$i=static"
452       fi
453     done
454   ])
455 ])
456
457 AC_DEFUN(APACHE_REQUIRE_CXX,[
458   if test -z "$apache_cxx_done"; then
459     AC_PROG_CXX
460     AC_PROG_CXXCPP
461     apache_cxx_done=yes
462   fi
463 ])
464
465 dnl
466 dnl APACHE_CHECK_OPENSSL
467 dnl
468 dnl Configure for OpenSSL, giving preference to
469 dnl "--with-ssl=<path>" if it was specified.
470 dnl
471 AC_DEFUN(APACHE_CHECK_OPENSSL,[
472   AC_CACHE_CHECK([for OpenSSL], [ac_cv_openssl], [
473     dnl initialise the variables we use
474     ac_cv_openssl=no
475     ap_openssl_found=""
476     ap_openssl_base=""
477     ap_openssl_libs=""
478
479     dnl Determine the OpenSSL base directory, if any
480     AC_MSG_CHECKING([for user-provided OpenSSL base directory])
481     AC_ARG_WITH(ssl, APACHE_HELP_STRING(--with-ssl=DIR,OpenSSL base directory), [
482       dnl If --with-ssl specifies a directory, we use that directory
483       if test "x$withval" != "xyes" -a "x$withval" != "x"; then
484         dnl This ensures $withval is actually a directory and that it is absolute
485         ap_openssl_base="`cd $withval ; pwd`"
486       fi
487     ])
488     if test "x$ap_openssl_base" = "x"; then
489       AC_MSG_RESULT(none)
490     else
491       AC_MSG_RESULT($ap_openssl_base)
492     fi
493
494     dnl Run header and version checks
495     saved_CPPFLAGS="$CPPFLAGS"
496     saved_LIBS="$LIBS"
497     saved_LDFLAGS="$LDFLAGS"
498     SSL_LIBS=""
499
500     dnl Before doing anything else, load in pkg-config variables
501     if test -n "$PKGCONFIG"; then
502       saved_PKG_CONFIG_PATH="$PKG_CONFIG_PATH"
503       if test "x$ap_openssl_base" != "x" -a \
504               -f "${ap_openssl_base}/lib/pkgconfig/openssl.pc"; then
505         dnl Ensure that the given path is used by pkg-config too, otherwise
506         dnl the system openssl.pc might be picked up instead.
507         PKG_CONFIG_PATH="${ap_openssl_base}/lib/pkgconfig${PKG_CONFIG_PATH+:}${PKG_CONFIG_PATH}"
508         export PKG_CONFIG_PATH
509       fi
510       ap_openssl_libs="`$PKGCONFIG --libs-only-l openssl 2>&1`"
511       if test $? -eq 0; then
512         ap_openssl_found="yes"
513         pkglookup="`$PKGCONFIG --cflags-only-I openssl`"
514         APR_ADDTO(CPPFLAGS, [$pkglookup])
515         APR_ADDTO(INCLUDES, [$pkglookup])
516         pkglookup="`$PKGCONFIG --libs-only-L --libs-only-other openssl`"
517         APR_ADDTO(LDFLAGS, [$pkglookup])
518         APR_ADDTO(SSL_LIBS, [$pkglookup])
519       fi
520       PKG_CONFIG_PATH="$saved_PKG_CONFIG_PATH"
521     fi
522
523     dnl fall back to the user-supplied directory if not found via pkg-config
524     if test "x$ap_openssl_base" != "x" -a "x$ap_openssl_found" = "x"; then
525       APR_ADDTO(CPPFLAGS, [-I$ap_openssl_base/include])
526       APR_ADDTO(INCLUDES, [-I$ap_openssl_base/include])
527       APR_ADDTO(LDFLAGS, [-L$ap_openssl_base/lib])
528       APR_ADDTO(SSL_LIBS, [-L$ap_openssl_base/lib])
529       if test "x$ap_platform_runtime_link_flag" != "x"; then
530         APR_ADDTO(LDFLAGS, [$ap_platform_runtime_link_flag$ap_openssl_base/lib])
531         APR_ADDTO(SSL_LIBS, [$ap_platform_runtime_link_flag$ap_openssl_base/lib])
532       fi
533     fi
534
535     AC_MSG_CHECKING([for OpenSSL version >= 0.9.7])
536     AC_TRY_COMPILE([#include <openssl/opensslv.h>],[
537 #if !defined(OPENSSL_VERSION_NUMBER)
538 #error "Missing OpenSSL version"
539 #endif
540 #if OPENSSL_VERSION_NUMBER < 0x0090700f
541 #error "Unsupported OpenSSL version " OPENSSL_VERSION_TEXT
542 #endif],
543       [AC_MSG_RESULT(OK)
544        ac_cv_openssl=yes],
545       [AC_MSG_RESULT(FAILED)])
546
547     if test "x$ac_cv_openssl" = "xyes"; then
548       ap_openssl_libs="-lssl -lcrypto `$apr_config --libs`"
549       APR_ADDTO(SSL_LIBS, [$ap_openssl_libs])
550       APR_ADDTO(LIBS, [$ap_openssl_libs])
551       APACHE_SUBST(SSL_LIBS)
552
553       dnl Run library and function checks
554       liberrors=""
555       AC_CHECK_HEADERS([openssl/engine.h])
556       AC_CHECK_FUNCS([SSLeay_version SSL_CTX_new], [], [liberrors="yes"])
557       AC_CHECK_FUNCS([ENGINE_init ENGINE_load_builtin_engines])
558       if test "x$liberrors" != "x"; then
559         AC_MSG_WARN([OpenSSL libraries are unusable])
560       fi
561     else
562       AC_MSG_WARN([OpenSSL version is too old])
563     fi
564
565     dnl restore
566     CPPFLAGS="$saved_CPPFLAGS"
567     LIBS="$saved_LIBS"
568     LDFLAGS="$saved_LDFLAGS"
569   ])
570   if test "x$ac_cv_openssl" = "xyes"; then
571     AC_DEFINE(HAVE_OPENSSL, 1, [Define if OpenSSL is available])
572   fi
573 ])
574
575 dnl
576 dnl APACHE_CHECK_SERF
577 dnl
578 dnl Configure for the detected libserf, giving preference to
579 dnl "--with-serf=<path>" if it was specified.
580 dnl
581 AC_DEFUN([APACHE_CHECK_SERF], [
582   AC_CACHE_CHECK([for libserf], [ac_cv_serf], [
583     ac_cv_serf=no
584     serf_prefix=/usr
585     SERF_LIBS=""
586     AC_ARG_WITH(serf, APACHE_HELP_STRING([--with-serf=PREFIX],
587                                     [Serf client library]),
588     [
589         if test "$withval" = "yes" ; then
590           serf_prefix=/usr
591         else
592           serf_prefix=$withval
593         fi
594     ])
595
596     if test "$serf_prefix" != "no" ; then
597       save_cppflags="$CPPFLAGS"
598       CPPFLAGS="$CPPFLAGS $APR_INCLUDES $APU_INCLUDES -I$serf_prefix/include/serf-0"
599       AC_CHECK_HEADERS(serf.h,[
600         save_ldflags="$LDFLAGS"
601         LDFLAGS="$LDFLAGS -L$serf_prefix/lib"
602         AC_CHECK_LIB(serf-0, serf_context_create,[ac_cv_serf="yes"])
603         LDFLAGS="$save_ldflags"])
604       CPPFLAGS="$save_cppflags"
605     fi
606   ])
607
608   APACHE_SUBST(SERF_LIBS)
609   if test "$ac_cv_serf" = "yes"; then
610     AC_DEFINE(HAVE_SERF, 1, [Define if libserf is available])
611     APR_SETVAR(SERF_LIBS, [-L$serf_prefix/lib -lserf-0])
612     APR_ADDTO(INCLUDES, [-I$serf_prefix/include/serf-0])
613   fi
614 ])
615
616
617 dnl
618 dnl APACHE_EXPORT_ARGUMENTS
619 dnl Export (via APACHE_SUBST) the various path-related variables that
620 dnl apache will use while generating scripts like autoconf and apxs and
621 dnl the default config file.
622
623 AC_DEFUN(APACHE_SUBST_EXPANDED_ARG,[
624   APR_EXPAND_VAR(exp_$1, [$]$1)
625   APACHE_SUBST(exp_$1)
626   APR_PATH_RELATIVE(rel_$1, [$]exp_$1, ${prefix})
627   APACHE_SUBST(rel_$1)
628 ])
629
630 AC_DEFUN(APACHE_EXPORT_ARGUMENTS,[
631   APACHE_SUBST_EXPANDED_ARG(exec_prefix)
632   APACHE_SUBST_EXPANDED_ARG(bindir)
633   APACHE_SUBST_EXPANDED_ARG(sbindir)
634   APACHE_SUBST_EXPANDED_ARG(libdir)
635   APACHE_SUBST_EXPANDED_ARG(libexecdir)
636   APACHE_SUBST_EXPANDED_ARG(mandir)
637   APACHE_SUBST_EXPANDED_ARG(sysconfdir)
638   APACHE_SUBST_EXPANDED_ARG(datadir)
639   APACHE_SUBST_EXPANDED_ARG(installbuilddir)
640   APACHE_SUBST_EXPANDED_ARG(errordir)
641   APACHE_SUBST_EXPANDED_ARG(iconsdir)
642   APACHE_SUBST_EXPANDED_ARG(htdocsdir)
643   APACHE_SUBST_EXPANDED_ARG(manualdir)
644   APACHE_SUBST_EXPANDED_ARG(cgidir)
645   APACHE_SUBST_EXPANDED_ARG(includedir)
646   APACHE_SUBST_EXPANDED_ARG(localstatedir)
647   APACHE_SUBST_EXPANDED_ARG(runtimedir)
648   APACHE_SUBST_EXPANDED_ARG(logfiledir)
649   APACHE_SUBST_EXPANDED_ARG(proxycachedir)
650 ])
651
652 dnl 
653 dnl APACHE_CHECK_APxVER({apr|apu}, major, minor, 
654 dnl                     [actions-if-ok], [actions-if-not-ok])
655 dnl
656 dnl Checks for APR or APR-util of given major/minor version or later; 
657 dnl if so, runs actions-if-ok; otherwise runs actions-if-not-ok if given.
658 dnl If the version is not satisfactory and actions-if-not-ok is not
659 dnl given, then an error is printed and the configure script is aborted.
660 dnl
661 dnl The first argument must be [apr] or [apu].
662 dnl
663 AC_DEFUN([APACHE_CHECK_APxVER], [
664 define(ap_ckver_major, translit($1, [apru], [APRU])[_MAJOR_VERSION])
665 define(ap_ckver_minor, translit($1, [apru], [APRU])[_MINOR_VERSION])
666 define(ap_ckver_cvar, [ap_cv_$1ver$2$3])
667 define(ap_ckver_name, ifelse([$1],[apr],[APR],[APR-util]))
668
669 ap_ckver_CPPFLAGS="$CPPFLAGS"
670 CPPFLAGS="$CPPFLAGS `$[$1]_config --includes`"
671
672 AC_CACHE_CHECK([for ap_ckver_name version $2.$3.0 or later], ap_ckver_cvar, [
673 AC_EGREP_CPP([good], [
674 #include <$1_version.h>
675 #if ]ap_ckver_major[ > $2 || (]ap_ckver_major[ == $2 && ]ap_ckver_minor[ >= $3)
676 good
677 #endif
678 ], [ap_ckver_cvar=yes], [ap_ckver_cvar=no])])
679
680 if test "$ap_ckver_cvar" = "yes"; then
681   ifelse([$4],[],[:],[$4])
682 else
683   ifelse([$5],[],[AC_MSG_ERROR([ap_ckver_name version $2.$3.0 or later is required])], [$5])
684 fi
685
686 CPPFLAGS="$ap_ckver_CPPFLAGS"
687
688 undefine([ap_ckver_major])
689 undefine([ap_ckver_minor])
690 undefine([ap_ckver_cvar])
691 undefine([ap_ckver_name])
692 ])
693
694 dnl
695 dnl APACHE_CHECK_VOID_PTR_LEN
696 dnl
697 dnl Checks if the size of a void pointer is at least as big as a "long" 
698 dnl integer type.
699 dnl
700 AC_DEFUN([APACHE_CHECK_VOID_PTR_LEN], [
701
702 AC_CACHE_CHECK([for void pointer length], [ap_cv_void_ptr_lt_long],
703 [AC_TRY_RUN([
704 int main(void)
705 {
706     return sizeof(void *) < sizeof(long); 
707 }], [ap_cv_void_ptr_lt_long=no], [ap_cv_void_ptr_lt_long=yes], 
708     [ap_cv_void_ptr_lt_long=yes])])
709
710 if test "$ap_cv_void_ptr_lt_long" = "yes"; then
711     AC_MSG_ERROR([Size of "void *" is less than size of "long"])
712 fi
713 ])
714
715 dnl
716 dnl APACHE_CHECK_APR_HAS_LDAP
717 dnl
718 dnl Check if APR_HAS_LDAP is 1
719 dnl Unfortunately, we can't use APR_CHECK_APR_DEFINE (because it only includes apr.h)
720 dnl or APR_CHECK_DEFINE (because it only checks for defined'ness and not for 0/1).
721 dnl
722 AC_DEFUN([APACHE_CHECK_APR_HAS_LDAP], [
723   AC_CACHE_CHECK([for ldap support in apr/apr-util],ac_cv_APR_HAS_LDAP,[
724     apache_old_cppflags="$CPPFLAGS"
725     CPPFLAGS="$CPPFLAGS $INCLUDES"
726     AC_EGREP_CPP(YES_IS_DEFINED, [
727 #include <apr_ldap.h>
728 #if APR_HAS_LDAP
729 YES_IS_DEFINED
730 #endif
731     ], ac_cv_APR_HAS_LDAP=yes, ac_cv_APR_HAS_LDAP=no)
732     CPPFLAGS="$apache_old_cppflags"
733   ])
734 ])
735
736 dnl
737 dnl APACHE_ADD_GCC_CFLAGS
738 dnl
739 dnl Check if compiler is gcc and supports flag. If yes, add to CFLAGS.
740 dnl
741 AC_DEFUN([APACHE_ADD_GCC_CFLAG], [
742   define([ap_gcc_ckvar], [ac_cv_gcc_]translit($1, [-:.=], [____]))
743   if test "$GCC" = "yes"; then
744     AC_CACHE_CHECK([whether gcc accepts $1], ap_gcc_ckvar, [
745       save_CFLAGS="$CFLAGS"
746       CFLAGS="$CFLAGS $1"
747       AC_COMPILE_IFELSE([AC_LANG_SOURCE([int foo() { return 0; }])],
748         [ap_gcc_ckvar=yes], [ap_gcc_ckvar=no])
749       CFLAGS="$save_CFLAGS"
750     ])
751     if test "$]ap_gcc_ckvar[" = "yes" ; then
752        APR_ADDTO(CFLAGS,[$1])
753     fi
754   fi
755   undefine([ap_gcc_ckvar])
756 ])