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