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