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