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