]> granicus.if.org Git - apache/blob - acinclude.m4
Allow mod_dav to do weak entity comparison function rather than a strong
[apache] / acinclude.m4
1
2 dnl APACHE_HELP_STRING(LHS, RHS)
3 dnl Autoconf 2.50 can not handle substr correctly.  It does have 
4 dnl AC_HELP_STRING, so let's try to call it if we can.
5 dnl Note: this define must be on one line so that it can be properly returned
6 dnl as the help string.
7 AC_DEFUN(APACHE_HELP_STRING,[ifelse(regexp(AC_ACVERSION, 2\.1), -1, AC_HELP_STRING($1,$2),[  ]$1 substr([                       ],len($1))$2)])dnl
8
9 dnl APACHE_SUBST(VARIABLE)
10 dnl Makes VARIABLE available in generated files
11 dnl (do not use @variable@ in Makefiles, but $(variable))
12 AC_DEFUN(APACHE_SUBST,[
13   APACHE_VAR_SUBST="$APACHE_VAR_SUBST $1"
14   AC_SUBST($1)
15 ])
16
17 dnl APACHE_FAST_OUTPUT(FILENAME)
18 dnl Perform substitutions on FILENAME (Makefiles only)
19 AC_DEFUN(APACHE_FAST_OUTPUT,[
20   APACHE_FAST_OUTPUT_FILES="$APACHE_FAST_OUTPUT_FILES $1"
21 ])
22
23 dnl APACHE_GEN_CONFIG_VARS
24 dnl Creates config_vars.mk
25 AC_DEFUN(APACHE_GEN_CONFIG_VARS,[
26   APACHE_SUBST(abs_srcdir)
27   APACHE_SUBST(bindir)
28   APACHE_SUBST(sbindir)
29   APACHE_SUBST(cgidir)
30   APACHE_SUBST(logfiledir)
31   APACHE_SUBST(exec_prefix)
32   APACHE_SUBST(datadir)
33   APACHE_SUBST(localstatedir)
34   APACHE_SUBST(mandir)
35   APACHE_SUBST(libdir)
36   APACHE_SUBST(libexecdir)
37   APACHE_SUBST(htdocsdir)
38   APACHE_SUBST(manualdir)
39   APACHE_SUBST(includedir)
40   APACHE_SUBST(errordir)
41   APACHE_SUBST(iconsdir)
42   APACHE_SUBST(sysconfdir)
43   APACHE_SUBST(installbuilddir)
44   APACHE_SUBST(runtimedir)
45   APACHE_SUBST(proxycachedir)
46   APACHE_SUBST(other_targets)
47   APACHE_SUBST(progname)
48   APACHE_SUBST(prefix)
49   APACHE_SUBST(AWK)
50   APACHE_SUBST(CC)
51   APACHE_SUBST(CPP)
52   APACHE_SUBST(CXX)
53   APACHE_SUBST(CPPFLAGS)
54   APACHE_SUBST(CFLAGS)
55   APACHE_SUBST(CXXFLAGS)
56   APACHE_SUBST(LTFLAGS)
57   APACHE_SUBST(LDFLAGS)
58   APACHE_SUBST(LT_LDFLAGS)
59   APACHE_SUBST(SH_LDFLAGS)
60   APACHE_SUBST(HTTPD_LDFLAGS)
61   APACHE_SUBST(UTIL_LDFLAGS)
62   APACHE_SUBST(LIBS)
63   APACHE_SUBST(DEFS)
64   APACHE_SUBST(INCLUDES)
65   APACHE_SUBST(NOTEST_CPPFLAGS)
66   APACHE_SUBST(NOTEST_CFLAGS)
67   APACHE_SUBST(NOTEST_CXXFLAGS)
68   APACHE_SUBST(NOTEST_LDFLAGS)
69   APACHE_SUBST(NOTEST_LIBS)
70   APACHE_SUBST(EXTRA_CPPFLAGS)
71   APACHE_SUBST(EXTRA_CFLAGS)
72   APACHE_SUBST(EXTRA_CXXFLAGS)
73   APACHE_SUBST(EXTRA_LDFLAGS)
74   APACHE_SUBST(EXTRA_LIBS)
75   APACHE_SUBST(EXTRA_INCLUDES)
76   APACHE_SUBST(LIBTOOL)
77   APACHE_SUBST(SHELL)
78   APACHE_SUBST(MODULE_DIRS)
79   APACHE_SUBST(MODULE_CLEANDIRS)
80   APACHE_SUBST(PORT)
81   APACHE_SUBST(nonssl_listen_stmt_1)
82   APACHE_SUBST(nonssl_listen_stmt_2)
83   APACHE_SUBST(CORE_IMPLIB_FILE)
84   APACHE_SUBST(CORE_IMPLIB)
85   APACHE_SUBST(SH_LIBS)
86   APACHE_SUBST(SH_LIBTOOL)
87   APACHE_SUBST(MK_IMPLIB)
88   APACHE_SUBST(MKDEP)
89   APACHE_SUBST(INSTALL_PROG_FLAGS)
90   APACHE_SUBST(DSO_MODULES)
91   APACHE_SUBST(APR_BINDIR)
92   APACHE_SUBST(APR_INCLUDEDIR)
93   APACHE_SUBST(APU_BINDIR)
94   APACHE_SUBST(APU_INCLUDEDIR)
95
96   abs_srcdir="`(cd $srcdir && pwd)`"
97
98   echo creating config_vars.mk
99   test -d build || $mkdir_p build
100   > build/config_vars.mk
101   for i in $APACHE_VAR_SUBST; do
102     eval echo "$i = \$$i" >> build/config_vars.mk
103   done
104 ])
105
106 dnl APACHE_GEN_MAKEFILES
107 dnl Creates Makefiles
108 AC_DEFUN(APACHE_GEN_MAKEFILES,[
109   $SHELL $srcdir/build/fastgen.sh $srcdir $ac_cv_mkdir_p $BSD_MAKEFILE $APACHE_FAST_OUTPUT_FILES
110 ])
111
112 dnl ## APACHE_OUTPUT(file)
113 dnl ## adds "file" to the list of files generated by AC_OUTPUT
114 dnl ## This macro can be used several times.
115 AC_DEFUN(APACHE_OUTPUT, [
116   APACHE_OUTPUT_FILES="$APACHE_OUTPUT_FILES $1"
117 ])
118
119 dnl
120 dnl APACHE_TYPE_RLIM_T
121 dnl
122 dnl If rlim_t is not defined, define it to int
123 dnl
124 AC_DEFUN(APACHE_TYPE_RLIM_T, [
125   AC_CACHE_CHECK([for rlim_t], ac_cv_type_rlim_t, [
126     AC_TRY_COMPILE([
127 #include <sys/types.h>
128 #include <sys/time.h>
129 #include <sys/resource.h>
130 ], [rlim_t spoon;], [
131       ac_cv_type_rlim_t=yes
132     ],[ac_cv_type_rlim_t=no
133     ])
134   ])
135   if test "$ac_cv_type_rlim_t" = "no" ; then
136       AC_DEFINE(rlim_t, int,
137           [Define to 'int' if <sys/resource.h> doesn't define it for us])
138   fi
139 ])
140
141 dnl APACHE_MODPATH_INIT(modpath)
142 AC_DEFUN(APACHE_MODPATH_INIT,[
143   current_dir=$1
144   modpath_current=modules/$1
145   modpath_static=
146   modpath_shared=
147   test -d $1 || $srcdir/build/mkdir.sh $modpath_current
148   > $modpath_current/modules.mk
149 ])dnl
150 dnl
151 AC_DEFUN(APACHE_MODPATH_FINISH,[
152   echo "DISTCLEAN_TARGETS = modules.mk" >> $modpath_current/modules.mk
153   echo "static = $modpath_static" >> $modpath_current/modules.mk
154   echo "shared = $modpath_shared" >> $modpath_current/modules.mk
155   if test ! -z "$modpath_static" -o ! -z "$modpath_shared"; then
156     MODULE_DIRS="$MODULE_DIRS $current_dir"
157   else
158     MODULE_CLEANDIRS="$MODULE_CLEANDIRS $current_dir"
159   fi
160   APACHE_FAST_OUTPUT($modpath_current/Makefile)
161 ])dnl
162 dnl
163 dnl APACHE_MODPATH_ADD(name[, shared[, objects [, ldflags[, libs]]]])
164 AC_DEFUN(APACHE_MODPATH_ADD,[
165   if test -z "$3"; then
166     objects="mod_$1.lo"
167   else
168     objects="$3"
169   fi
170
171   if test -z "$module_standalone"; then
172     if test -z "$2"; then
173       libname="mod_$1.la"
174       BUILTIN_LIBS="$BUILTIN_LIBS $modpath_current/$libname"
175       modpath_static="$modpath_static $libname"
176       cat >>$modpath_current/modules.mk<<EOF
177 $libname: $objects
178         \$(MOD_LINK) $objects
179 EOF
180     else
181       apache_need_shared=yes
182       libname="mod_$1.la"
183       shobjects=`echo $objects | sed 's/\.lo/.slo/g'`
184       modpath_shared="$modpath_shared $libname"
185       cat >>$modpath_current/modules.mk<<EOF
186 $libname: $shobjects
187         \$(SH_LINK) -rpath \$(libexecdir) -module -avoid-version $4 $objects $5
188 EOF
189     fi
190   fi
191 ])dnl
192
193 dnl
194 dnl APACHE_MODULE(name, helptext[, objects[, structname[, default[, config]]]])
195 dnl
196 dnl default is one of:
197 dnl   yes    -- enabled by default. user must explicitly disable.
198 dnl   no     -- disabled under default, most, all. user must explicitly enable.
199 dnl   most   -- disabled by default. enabled explicitly or with most or all.
200 dnl   static -- enabled as static by default, must be explicitly changed.
201 dnl   ""     -- disabled under default, most. enabled explicitly or with all.
202 dnl
203 dnl basically: yes/no is a hard setting. "most" means follow the "most"
204 dnl            setting. otherwise, fall under the "all" setting.
205 dnl            explicit yes/no always overrides.
206 dnl
207 AC_DEFUN(APACHE_MODULE,[
208   AC_MSG_CHECKING(whether to enable mod_$1)
209   define([optname],[--]ifelse($5,yes,disable,enable)[-]translit($1,_,-))dnl
210   AC_ARG_ENABLE(translit($1,_,-),APACHE_HELP_STRING(optname(),$2),,enable_$1=ifelse($5,,maybe-all,$5))
211   undefine([optname])dnl
212   _apmod_extra_msg=""
213   dnl When --enable-modules=most is set and the module was not explicitly
214   dnl requested, allow a module to disable itself if its pre-reqs fail.
215   if test "$module_selection" = "most" -a "$enable_$1" = "most"; then
216     _apmod_error_fatal="no"
217   else
218     _apmod_error_fatal="yes"
219   fi
220   if test "$enable_$1" = "static"; then
221     enable_$1=yes
222   elif test "$enable_$1" = "yes"; then
223     enable_$1=$module_default
224     _apmod_extra_msg=" ($module_selection)"
225   elif test "$enable_$1" = "most"; then
226     if test "$module_selection" = "most" -o "$module_selection" = "all"; then
227       enable_$1=$module_default
228       _apmod_extra_msg=" ($module_selection)"
229     elif test "$enable_$1" != "yes"; then
230       enable_$1=no
231     fi
232   elif test "$enable_$1" = "maybe-all"; then
233     if test "$module_selection" = "all"; then
234       enable_$1=$module_default
235       _apmod_extra_msg=" (all)"
236     else
237       enable_$1=no
238     fi
239   fi
240   if test "$enable_$1" != "no"; then
241     dnl If we plan to enable it, allow the module to run some autoconf magic
242     dnl that may disable it because of missing dependencies.
243     ifelse([$6],,:,[AC_MSG_RESULT([checking dependencies])
244                     $6
245                     AC_MSG_CHECKING(whether to enable mod_$1)
246                     if test "$enable_$1" = "no"; then
247                       if test "$_apmod_error_fatal" = "no"; then
248                         _apmod_extra_msg=" (disabled)"
249                       else
250                         AC_MSG_ERROR([mod_$1 has been requested but can not be built due to prerequisite failures])
251                       fi
252                     fi])
253   fi
254   AC_MSG_RESULT($enable_$1$_apmod_extra_msg)
255   if test "$enable_$1" != "no"; then
256     case "$enable_$1" in
257     shared*)
258       enable_$1=`echo $ac_n $enable_$1$ac_c|sed 's/shared,*//'`
259       sharedobjs=yes
260       shared=yes
261       DSO_MODULES="$DSO_MODULES $1"
262       ;;
263     *)
264       MODLIST="$MODLIST ifelse($4,,$1,$4)"
265       if test "$1" = "so"; then
266           sharedobjs=yes
267       fi
268       shared="";;
269     esac
270     APACHE_MODPATH_ADD($1, $shared, $3)
271   fi
272 ])dnl
273
274 dnl
275 dnl APACHE_LAYOUT(configlayout, layoutname)
276 dnl
277 AC_DEFUN(APACHE_LAYOUT,[
278   if test ! -f $srcdir/config.layout; then
279     echo "** Error: Layout file $srcdir/config.layout not found"
280     echo "** Error: Cannot use undefined layout '$LAYOUT'"
281     exit 1
282   fi
283   pldconf=./config.pld
284   changequote({,})
285   sed -e "1,/[  ]*<[lL]ayout[   ]*$2[   ]*>[    ]*/d" \
286       -e '/[    ]*<\/Layout>[   ]*/,$d' \
287       -e "s/^[  ]*//g" \
288       -e "s/:[  ]*/=\'/g" \
289       -e "s/[   ]*$/'/g" \
290       $1 > $pldconf
291   layout_name=$2
292   . $pldconf
293   rm $pldconf
294   for var in prefix exec_prefix bindir sbindir libexecdir mandir \
295              sysconfdir datadir errordir iconsdir htdocsdir cgidir \
296              includedir localstatedir runtimedir logfiledir libdir \
297              manualdir proxycachedir installbuilddir; do
298     eval "val=\"\$$var\""
299     case $val in
300       *+)
301         val=`echo $val | sed -e 's;\+$;;'`
302         eval "$var=\"\$val\""
303         autosuffix=yes
304         ;;
305       *)
306         autosuffix=no
307         ;;
308     esac
309     val=`echo $val | sed -e 's:\(.\)/*$:\1:'`
310     val=`echo $val | sed -e 's:[\$]\([a-z_]*\):${\1}:g'`
311     if test "$autosuffix" = "yes"; then
312       if echo $val | grep apache >/dev/null; then
313         addtarget=no
314       else
315         addtarget=yes
316       fi
317       if test "$addtarget" = "yes"; then
318         val="$val/apache2"
319       fi
320     fi
321     eval "$var='$val'"
322   done
323   changequote([,])
324 ])dnl
325
326 dnl
327 dnl APACHE_ENABLE_LAYOUT
328 dnl
329 AC_DEFUN(APACHE_ENABLE_LAYOUT,[
330 AC_ARG_ENABLE(layout,
331 [  --enable-layout=LAYOUT],[
332   LAYOUT=$enableval
333 ])
334
335 if test -z "$LAYOUT"; then
336   LAYOUT="Apache"
337 fi
338 APACHE_LAYOUT($srcdir/config.layout, $LAYOUT)
339
340 AC_MSG_CHECKING(for chosen layout)
341 AC_MSG_RESULT($layout_name)
342 ])
343
344 dnl
345 dnl APACHE_ENABLE_MODULES
346 dnl
347 AC_DEFUN(APACHE_ENABLE_MODULES,[
348   module_selection=default
349   module_default=yes
350
351   AC_ARG_ENABLE(modules,
352   APACHE_HELP_STRING(--enable-modules=MODULE-LIST,Modules to enable),[
353     for i in $enableval; do
354       if test "$i" = "all" -o "$i" = "most"; then
355         module_selection=$i
356       else
357         eval "enable_$i=yes"
358       fi
359     done
360   ])
361   
362   AC_ARG_ENABLE(mods-shared,
363   APACHE_HELP_STRING(--enable-mods-shared=MODULE-LIST,Shared modules to enable),[
364     for i in $enableval; do
365       if test "$i" = "all" -o "$i" = "most"; then
366         module_selection=$i
367         module_default=shared
368       else
369         i=`echo $i | sed 's/-/_/g'`
370         eval "enable_$i=shared"
371       fi
372     done
373   ])
374 ])
375
376 AC_DEFUN(APACHE_REQUIRE_CXX,[
377   if test -z "$apache_cxx_done"; then
378     AC_PROG_CXX
379     AC_PROG_CXXCPP
380     apache_cxx_done=yes
381   fi
382 ])
383
384 dnl
385 dnl APACHE_CHECK_SSL_TOOLKIT
386 dnl
387 dnl Find the openssl toolkit installation and check it for the right
388 dnl version, then add its flags to INCLUDES and LIBS.  This should
389 dnl really be using a custom AC_TRY_COMPILE function to test the includes
390 dnl and then AC_TRY_LINK to test the libraries directly for the version,
391 dnl but that will require someone who knows how to program openssl.
392 dnl
393 AC_DEFUN(APACHE_CHECK_SSL_TOOLKIT,[
394 if test "x$ap_ssltk_base" = "x"; then
395   AC_MSG_CHECKING(for SSL/TLS toolkit base)
396   ap_ssltk_base=""
397   AC_ARG_WITH(ssl, APACHE_HELP_STRING(--with-ssl=DIR,SSL/TLS toolkit (OpenSSL)), [
398     if test "x$withval" != "xyes" -a "x$withval" != "x"; then
399       ap_ssltk_base="$withval"
400       if test -f "$ap_ssltk_base/bin/openssl"; then
401           ap_ssltk_version="`$ap_ssltk_base/bin/openssl version`"
402       else
403           ap_ssltk_version="unknown"
404       fi
405     fi
406   ])
407   if test "x$ap_ssltk_base" = "x"; then
408     AC_CACHE_VAL(ap_cv_ssltk,[
409       #
410       # shotgun approach: find all occurrences of the openssl program
411       #
412       # The IFS=... trick eliminates the colons from $PATH, without using an external program
413       for p in `IFS=":$IFS"; echo $PATH` /usr/local/openssl/bin /usr/local/ssl/bin; do
414         if test -f "$p/openssl"; then
415           ap_ssltk_version="`$p/openssl version`"
416           if test "x$ap_ssltk_version" != "x"; then
417             ap_cv_ssltk="`(cd $p/.. && pwd)`"
418             break
419           fi
420         fi
421       done
422       if test "x$ap_cv_ssltk" = "x"; then
423         AC_MSG_ERROR([requires OpenSSL 0.9.6e or higher])
424       fi
425     ])
426     ap_ssltk_base="$ap_cv_ssltk"
427   fi
428   if test ! -d $ap_ssltk_base; then
429     AC_MSG_ERROR([invalid SSL/TLS toolkit base directory $ap_ssltk_base])
430   fi
431   AC_MSG_RESULT($ap_ssltk_base)
432     
433   AC_MSG_CHECKING(for SSL/TLS toolkit version)
434   AC_MSG_RESULT($ap_ssltk_version)
435   case "$ap_ssltk_version" in
436     "OpenSSL "[[1-9]]* | \
437     "OpenSSL "0.9.6[[e-z]]* | \
438     "OpenSSL "0.9.[[7-9]]* | \
439     "OpenSSL "0.[[1-9]][[0-9]]* )
440        # okay versions that do not have known security holes
441        ;;
442     "OpenSSL"*)
443        AC_MSG_WARN([OpenSSL versions prior to 0.9.6e have known security holes])
444        ;;
445     *)
446        # unknown version -- assume the user knows what they are doing
447        ;;
448   esac
449     
450   AC_MSG_CHECKING(for SSL/TLS toolkit includes)
451   ap_ssltk_incdir=""
452   for p in $ap_ssltk_base/include /usr/local/openssl/include \
453            /usr/local/ssl/include /usr/local/include /usr/include; do
454     if test -f "$p/openssl/ssl.h"; then
455       ap_ssltk_incdir="$p"
456       break
457     elif test -f "$p/ssl.h"; then
458       ap_ssltk_incdir="$p"
459       break
460     fi
461   done
462   if test "x$ap_ssltk_incdir" = "x"; then
463     AC_MSG_ERROR([OpenSSL headers not found])
464   fi
465   AC_MSG_RESULT($ap_ssltk_incdir)
466
467   AC_MSG_CHECKING(for SSL/TLS toolkit libraries)
468   ap_ssltk_libdir=""
469   for p in $ap_ssltk_base/lib /usr/local/openssl/lib \
470            /usr/local/ssl/lib /usr/local/lib /usr/lib /lib /usr/lib64; do
471     if test -f "$p/libssl.a" -o -f "$p/libssl.so" -o -f "$p/libssl.dylib"; then
472       ap_ssltk_libdir="$p"
473       break
474     fi
475   done
476   if test ".$ap_ssltk_libdir" = .; then
477     AC_MSG_ERROR([OpenSSL libraries not found])
478   fi
479   AC_MSG_RESULT($ap_ssltk_libdir)
480
481   dnl #  annotate the Apache build environment with determined information
482   APR_ADDTO(INCLUDES, [-I$ap_ssltk_incdir/openssl])
483   if test "x$ap_ssltk_incdir" != "x/usr/include"; then
484     APR_ADDTO(INCLUDES, [-I$ap_ssltk_incdir])
485   fi
486   if test "x$ap_ssltk_libdir" != "x/usr/lib"; then
487     APR_ADDTO(LDFLAGS, [-L$ap_ssltk_libdir])
488     if test "x$ap_platform_runtime_link_flag" != "x"; then
489       APR_ADDTO(LDFLAGS, [$ap_platform_runtime_link_flag$ap_ssltk_libdir])
490     fi
491   fi
492   APR_ADDTO(LIBS, [-lssl -lcrypto])
493   ap_cv_ssltk="$ap_ssltk_base"
494 fi
495 ])
496
497 dnl
498 dnl APACHE_EXPORT_ARGUMENTS
499 dnl Export (via APACHE_SUBST) the various path-related variables that
500 dnl apache will use while generating scripts like autoconf and apxs and
501 dnl the default config file.
502
503 AC_DEFUN(APACHE_SUBST_EXPANDED_ARG,[
504   APR_EXPAND_VAR(exp_$1, [$]$1)
505   APACHE_SUBST(exp_$1)
506   APR_PATH_RELATIVE(rel_$1, [$]exp_$1, ${prefix})
507   APACHE_SUBST(rel_$1)
508 ])
509
510 AC_DEFUN(APACHE_EXPORT_ARGUMENTS,[
511   APACHE_SUBST_EXPANDED_ARG(exec_prefix)
512   APACHE_SUBST_EXPANDED_ARG(bindir)
513   APACHE_SUBST_EXPANDED_ARG(sbindir)
514   APACHE_SUBST_EXPANDED_ARG(libdir)
515   APACHE_SUBST_EXPANDED_ARG(libexecdir)
516   APACHE_SUBST_EXPANDED_ARG(mandir)
517   APACHE_SUBST_EXPANDED_ARG(sysconfdir)
518   APACHE_SUBST_EXPANDED_ARG(datadir)
519   APACHE_SUBST_EXPANDED_ARG(installbuilddir)
520   APACHE_SUBST_EXPANDED_ARG(errordir)
521   APACHE_SUBST_EXPANDED_ARG(iconsdir)
522   APACHE_SUBST_EXPANDED_ARG(htdocsdir)
523   APACHE_SUBST_EXPANDED_ARG(manualdir)
524   APACHE_SUBST_EXPANDED_ARG(cgidir)
525   APACHE_SUBST_EXPANDED_ARG(includedir)
526   APACHE_SUBST_EXPANDED_ARG(localstatedir)
527   APACHE_SUBST_EXPANDED_ARG(runtimedir)
528   APACHE_SUBST_EXPANDED_ARG(logfiledir)
529   APACHE_SUBST_EXPANDED_ARG(proxycachedir)
530 ])
531