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
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"
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"
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)
32 APACHE_SUBST(logfiledir)
33 APACHE_SUBST(exec_prefix)
35 APACHE_SUBST(localstatedir)
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)
56 APACHE_SUBST(CPPFLAGS)
58 APACHE_SUBST(CXXFLAGS)
59 APACHE_SUBST(CC_FOR_BUILD)
60 APACHE_SUBST(CFLAGS_FOR_BUILD)
63 APACHE_SUBST(LT_LDFLAGS)
64 APACHE_SUBST(SH_LDFLAGS)
65 APACHE_SUBST(HTTPD_LDFLAGS)
66 APACHE_SUBST(UTIL_LDFLAGS)
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)
85 APACHE_SUBST(MODULE_DIRS)
86 APACHE_SUBST(MODULE_CLEANDIRS)
89 APACHE_SUBST(CORE_IMPLIB_FILE)
90 APACHE_SUBST(CORE_IMPLIB)
92 APACHE_SUBST(SH_LIBTOOL)
93 APACHE_SUBST(MK_IMPLIB)
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)
110 abs_srcdir="`(cd $srcdir && pwd)`"
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
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
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"
134 dnl APACHE_TYPE_RLIM_T
136 dnl If rlim_t is not defined, define it to int
138 AC_DEFUN(APACHE_TYPE_RLIM_T, [
139 AC_CACHE_CHECK([for rlim_t], ac_cv_type_rlim_t, [
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
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])
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])
160 dnl APACHE_MODPATH_INIT(modpath)
161 AC_DEFUN(APACHE_MODPATH_INIT,[
163 modpath_current=modules/$1
166 for var in mod_buildvars; do
169 test -d $1 || $srcdir/build/mkdir.sh $modpath_current
170 > $modpath_current/modules.mk
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
182 if test ! -z "$modpath_static" -o ! -z "$modpath_shared"; then
183 MODULE_DIRS="$MODULE_DIRS $current_dir"
185 MODULE_CLEANDIRS="$MODULE_CLEANDIRS $current_dir"
187 APACHE_FAST_OUTPUT($modpath_current/Makefile)
190 dnl APACHE_MODPATH_ADD(name[, shared[, objects [, ldflags[, libs]]]])
191 AC_DEFUN(APACHE_MODPATH_ADD,[
192 if test -z "$3"; then
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
206 \$(MOD_LINK) $objects $5
208 if test ! -z "$5"; then
209 APR_ADDTO(AP_LIBS, [$5])
212 apache_need_shared=yes
214 shobjects=`echo $objects | sed 's/\.lo/.slo/g'`
215 modpath_shared="$modpath_shared $libname"
216 cat >>$modpath_current/modules.mk<<EOF
218 \$(SH_LINK) -rpath \$(libexecdir) -module -avoid-version $4 $objects $5
223 dnl Same as APACHE_MODPATH_INIT/FINISH but for MPMs
224 dnl APACHE_MPMPATH_INIT(mpmpath)
225 AC_DEFUN(APACHE_MPMPATH_INIT,[
227 modpath_current=server/mpm/$1
230 for var in mod_buildvars; do
233 test -d $1 || $srcdir/build/mkdir.sh $modpath_current
234 > $modpath_current/modules.mk
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
246 dnl APACHE_MPM_MODULE(name[, shared[, objects[, config[, path[, libs]]]]])
248 dnl Provide information for building the MPM. (Enablement is handled using
249 dnl --with-mpm/--enable-mpms-shared.)
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
258 AC_DEFUN(APACHE_MPM_MODULE,[
259 if ap_mpm_is_enabled $1; then
260 if test -z "$3"; then
266 if test -z "$5"; then
267 mpmpath="server/mpm/$1"
273 test -d $mpmpath || $srcdir/build/mkdir.sh $mpmpath
275 APACHE_FAST_OUTPUT($mpmpath/Makefile)
277 if test -z "$2"; then
278 APR_ADDTO(AP_LIBS, [$6])
280 cat >>$mpmpath/modules.mk<<EOF
282 \$(MOD_LINK) $objects
283 DISTCLEAN_TARGETS = modules.mk
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
293 \$(SH_LINK) -rpath \$(libexecdir) -module -avoid-version $objects $6
294 DISTCLEAN_TARGETS = modules.mk
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"
309 dnl APACHE_MODULE(name, helptext[, objects[, structname[, default[, config[, prereq_module]]]]])
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
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
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
332 dnl prereq_module's APACHE_MODULE() statement must have been processed
333 dnl before the current APACHE_MODULE() statement.
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
341 dnl If the module was not explicitly requested, allow it to disable itself if
342 dnl its pre-reqs fail.
345 _apmod_required="yes"
351 if test "$enable_$1" = "static"; then
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"
359 enable_$1=$module_default
360 elif test "$module_selection" = "few" -o "$module_selection" = "none"; then
363 _apmod_extra_msg=" ($module_selection)"
364 elif test "$enable_$1" = "maybe-all"; then
365 if test "$module_selection" = "all" -o "$module_selection" = "reallyall"
367 enable_$1=$module_default
368 _apmod_extra_msg=" ($module_selection)"
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)"
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.
381 [AC_MSG_RESULT([checking dependencies])
382 ifelse([$7],,:,[if test "$enable_$7" = "no" ; then
384 AC_MSG_WARN("mod_$7 is disabled but required for mod_$1")
385 elif test "$enable_$1" = "static" && test "$enable_$7" != "static" ; then
387 AC_MSG_WARN("cannot build mod_$1 statically if mod_$7 is built shared")
389 ifelse([$6],,:,[ $6])
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)"
396 AC_MSG_ERROR([mod_$1 has been requested but can not be built due to prerequisite failures])
400 AC_MSG_RESULT($enable_$1$_apmod_extra_msg)
401 if test "$enable_$1" != "no"; then
404 MODLIST="$MODLIST ifelse($4,,$1,$4)"
405 if test "$1" = "so"; then
410 enable_$1=`echo $enable_$1|sed 's/shared,*//'`
413 DSO_MODULES="$DSO_MODULES $1"
414 if test "$5" = "yes" ; then
415 ENABLED_DSO_MODULES="${ENABLED_DSO_MODULES},$1"
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])
427 dnl APACHE_ENABLE_MODULES
429 AC_DEFUN(APACHE_ENABLE_MODULES,[
430 module_selection=most
431 module_default=shared
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)
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
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
447 module_selection=none
449 for i in $enableval; do
450 if test "$i" = "all" -o "$i" = "most" -o "$i" = "few" -o "$i" = "reallyall"
454 i=`echo $i | sed 's/-/_/g'`
455 eval "enable_$i=shared"
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"
467 module_default=shared
469 i=`echo $i | sed 's/-/_/g'`
470 eval "enable_$i=shared"
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
480 module_default=static
482 i=`echo $i | sed 's/-/_/g'`
483 eval "enable_$i=static"
489 AC_DEFUN(APACHE_REQUIRE_CXX,[
490 if test -z "$apache_cxx_done"; then
498 dnl APACHE_CHECK_OPENSSL
500 dnl Configure for OpenSSL, giving preference to
501 dnl "--with-ssl=<path>" if it was specified.
503 AC_DEFUN(APACHE_CHECK_OPENSSL,[
504 AC_CACHE_CHECK([for OpenSSL], [ac_cv_openssl], [
505 dnl initialise the variables we use
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`"
520 if test "x$ap_openssl_base" = "x"; then
523 AC_MSG_RESULT($ap_openssl_base)
526 dnl Run header and version checks
527 saved_CPPFLAGS="$CPPFLAGS"
529 saved_LDFLAGS="$LDFLAGS"
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
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"
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])
560 PKG_CONFIG_PATH="$saved_PKG_CONFIG_PATH"
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])
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"
581 #if OPENSSL_VERSION_NUMBER < 0x0090801f
582 #error "Unsupported OpenSSL version " OPENSSL_VERSION_TEXT
586 [AC_MSG_RESULT(FAILED)])
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)
596 dnl Run library and function checks
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])
605 AC_MSG_WARN([OpenSSL version is too old])
609 CPPFLAGS="$saved_CPPFLAGS"
611 LDFLAGS="$saved_LDFLAGS"
613 if test "x$ac_cv_openssl" = "xyes"; then
614 AC_DEFINE(HAVE_OPENSSL, 1, [Define if OpenSSL is available])
619 dnl APACHE_CHECK_SERF
621 dnl Configure for the detected libserf, giving preference to
622 dnl "--with-serf=<path>" if it was specified.
624 AC_DEFUN([APACHE_CHECK_SERF], [
625 AC_CACHE_CHECK([for libserf], [ac_cv_serf], [
629 AC_ARG_WITH(serf, APACHE_HELP_STRING([--with-serf=PATH],
630 [Serf client library]),
632 if test "$withval" = "yes" ; then
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"
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])
659 AC_DEFUN(APACHE_CHECK_SYSTEMD, [
660 dnl Check for systemd support for listen.c's socket activation.
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`
668 AC_CHECK_LIB(systemd-daemon, sd_notify, SYSTEMD_LIBS="-lsystemd-daemon")
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.])
675 APR_ADDTO(HTTPD_LIBS, [$SYSTEMD_LIBS])
676 AC_DEFINE(HAVE_SYSTEMD, 1, [Define if systemd is supported])
684 dnl APACHE_CHECK_NGHTTP2
686 dnl Configure for nghttp2, giving preference to
687 dnl "--with-nghttp2=<path>" if it was specified.
689 AC_DEFUN(APACHE_CHECK_NGHTTP2,[
690 AC_CACHE_CHECK([for nghttp2], [ac_cv_nghttp2], [
691 dnl initialise the variables we use
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`"
706 if test "x$ap_nghttp2_base" = "x"; then
709 AC_MSG_RESULT($ap_nghttp2_base)
712 dnl Run header and version checks
713 saved_CPPFLAGS="$CPPFLAGS"
715 saved_LDFLAGS="$LDFLAGS"
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
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"
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])
747 PKG_CONFIG_PATH="$saved_PKG_CONFIG_PATH"
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])
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"
768 #if NGHTTP2_VERSION_NUM < 0x010000
769 #error "Unsupported nghttp2 version " NGHTTP2_VERSION_TEXT
773 [AC_MSG_RESULT(FAILED)])
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)
783 dnl Run library and function checks
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])
791 AC_MSG_WARN([nghttp2 version is too old])
795 CPPFLAGS="$saved_CPPFLAGS"
797 LDFLAGS="$saved_LDFLAGS"
799 if test "x$ac_cv_nghttp2" = "xyes"; then
800 AC_DEFINE(HAVE_NGHTTP2, 1, [Define if nghttp2 is available])
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.
810 AC_DEFUN(APACHE_SUBST_EXPANDED_ARG,[
811 APR_EXPAND_VAR(exp_$1, [$]$1)
813 APR_PATH_RELATIVE(rel_$1, [$]exp_$1, ${prefix})
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)
841 dnl APACHE_CHECK_APxVER({apr|apu}, major, minor,
842 dnl [actions-if-ok], [actions-if-not-ok])
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.
849 dnl The first argument must be [apr] or [apu].
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]))
857 ap_ckver_CPPFLAGS="$CPPFLAGS"
858 CPPFLAGS="$CPPFLAGS `$[$1]_config --includes`"
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)
866 ], [ap_ckver_cvar=yes], [ap_ckver_cvar=no])])
868 if test "$ap_ckver_cvar" = "yes"; then
869 ifelse([$4],[],[:],[$4])
871 ifelse([$5],[],[AC_MSG_ERROR([ap_ckver_name version $2.$3.0 or later is required])], [$5])
874 CPPFLAGS="$ap_ckver_CPPFLAGS"
876 undefine([ap_ckver_major])
877 undefine([ap_ckver_minor])
878 undefine([ap_ckver_cvar])
879 undefine([ap_ckver_name])
883 dnl APACHE_CHECK_VOID_PTR_LEN
885 dnl Checks if the size of a void pointer is at least as big as a "long"
888 AC_DEFUN([APACHE_CHECK_VOID_PTR_LEN], [
890 AC_CACHE_CHECK([for void pointer length], [ap_cv_void_ptr_lt_long],
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"])])
898 if test "$ap_cv_void_ptr_lt_long" = "yes"; then
899 AC_MSG_ERROR([Size of "void *" is less than size of "long"])
904 dnl APACHE_CHECK_APR_HAS_LDAP
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).
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>
919 ], ac_cv_APR_HAS_LDAP=yes, ac_cv_APR_HAS_LDAP=no)
920 CPPFLAGS="$apache_old_cppflags"
925 dnl APACHE_ADD_GCC_CFLAGS
927 dnl Check if compiler is gcc and supports flag. If yes, add to CFLAGS.
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"
935 AC_COMPILE_IFELSE([AC_LANG_SOURCE([int foo() { return 0; }])],
936 [ap_gcc_ckvar=yes], [ap_gcc_ckvar=no])
937 CFLAGS="$save_CFLAGS"
939 if test "$]ap_gcc_ckvar[" = "yes" ; then
940 APR_ADDTO(CFLAGS,[$1])
943 undefine([ap_gcc_ckvar])