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