]> granicus.if.org Git - apache/blob - acinclude.m4
Use APR_LAYOUT instead of APACHE_LAYOUT in configure.
[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_ENABLE_MODULES
276 dnl
277 AC_DEFUN(APACHE_ENABLE_MODULES,[
278   module_selection=default
279   module_default=yes
280
281   AC_ARG_ENABLE(modules,
282   APACHE_HELP_STRING(--enable-modules=MODULE-LIST,Modules to enable),[
283     for i in $enableval; do
284       if test "$i" = "all" -o "$i" = "most"; then
285         module_selection=$i
286       else
287         eval "enable_$i=yes"
288       fi
289     done
290   ])
291   
292   AC_ARG_ENABLE(mods-shared,
293   APACHE_HELP_STRING(--enable-mods-shared=MODULE-LIST,Shared modules to enable),[
294     for i in $enableval; do
295       if test "$i" = "all" -o "$i" = "most"; then
296         module_selection=$i
297         module_default=shared
298       else
299         i=`echo $i | sed 's/-/_/g'`
300         eval "enable_$i=shared"
301       fi
302     done
303   ])
304 ])
305
306 AC_DEFUN(APACHE_REQUIRE_CXX,[
307   if test -z "$apache_cxx_done"; then
308     AC_PROG_CXX
309     AC_PROG_CXXCPP
310     apache_cxx_done=yes
311   fi
312 ])
313
314 dnl
315 dnl APACHE_CHECK_SSL_TOOLKIT
316 dnl
317 dnl Find the openssl toolkit installation and check it for the right
318 dnl version, then add its flags to INCLUDES and LIBS.  This should
319 dnl really be using a custom AC_TRY_COMPILE function to test the includes
320 dnl and then AC_TRY_LINK to test the libraries directly for the version,
321 dnl but that will require someone who knows how to program openssl.
322 dnl
323 AC_DEFUN(APACHE_CHECK_SSL_TOOLKIT,[
324 if test "x$ap_ssltk_base" = "x"; then
325   AC_MSG_CHECKING(for SSL/TLS toolkit base)
326   ap_ssltk_base=""
327   AC_ARG_WITH(ssl, APACHE_HELP_STRING(--with-ssl=DIR,SSL/TLS toolkit (OpenSSL)), [
328     if test "x$withval" != "xyes" -a "x$withval" != "x"; then
329       ap_ssltk_base="$withval"
330       if test -f "$ap_ssltk_base/bin/openssl"; then
331           ap_ssltk_version="`$ap_ssltk_base/bin/openssl version`"
332       else
333           ap_ssltk_version="unknown"
334       fi
335     fi
336   ])
337   if test "x$ap_ssltk_base" = "x"; then
338     AC_CACHE_VAL(ap_cv_ssltk,[
339       #
340       # shotgun approach: find all occurrences of the openssl program
341       #
342       # The IFS=... trick eliminates the colons from $PATH, without using an external program
343       for p in `IFS=":$IFS"; echo $PATH` /usr/local/openssl/bin /usr/local/ssl/bin; do
344         if test -f "$p/openssl"; then
345           ap_ssltk_version="`$p/openssl version`"
346           if test "x$ap_ssltk_version" != "x"; then
347             ap_cv_ssltk="`(cd $p/.. && pwd)`"
348             break
349           fi
350         fi
351       done
352       if test "x$ap_cv_ssltk" = "x"; then
353         AC_MSG_ERROR([requires OpenSSL 0.9.6e or higher])
354       fi
355     ])
356     ap_ssltk_base="$ap_cv_ssltk"
357   fi
358   if test ! -d $ap_ssltk_base; then
359     AC_MSG_ERROR([invalid SSL/TLS toolkit base directory $ap_ssltk_base])
360   fi
361   AC_MSG_RESULT($ap_ssltk_base)
362     
363   AC_MSG_CHECKING(for SSL/TLS toolkit version)
364   AC_MSG_RESULT($ap_ssltk_version)
365   case "$ap_ssltk_version" in
366     "OpenSSL "[[1-9]]* | \
367     "OpenSSL "0.9.6[[e-z]]* | \
368     "OpenSSL "0.9.[[7-9]]* | \
369     "OpenSSL "0.[[1-9]][[0-9]]* )
370        # okay versions that do not have known security holes
371        ;;
372     "OpenSSL"*)
373        AC_MSG_WARN([OpenSSL versions prior to 0.9.6e have known security holes])
374        ;;
375     *)
376        # unknown version -- assume the user knows what they are doing
377        ;;
378   esac
379     
380   AC_MSG_CHECKING(for SSL/TLS toolkit includes)
381   ap_ssltk_incdir=""
382   for p in $ap_ssltk_base/include /usr/local/openssl/include \
383            /usr/local/ssl/include /usr/local/include /usr/include; do
384     if test -f "$p/openssl/ssl.h"; then
385       ap_ssltk_incdir="$p"
386       break
387     elif test -f "$p/ssl.h"; then
388       ap_ssltk_incdir="$p"
389       break
390     fi
391   done
392   if test "x$ap_ssltk_incdir" = "x"; then
393     AC_MSG_ERROR([OpenSSL headers not found])
394   fi
395   AC_MSG_RESULT($ap_ssltk_incdir)
396
397   AC_MSG_CHECKING(for SSL/TLS toolkit libraries)
398   ap_ssltk_libdir=""
399   for p in $ap_ssltk_base/lib /usr/local/openssl/lib \
400            /usr/local/ssl/lib /usr/local/lib /usr/lib /lib /usr/lib64; do
401     if test -f "$p/libssl.a" -o -f "$p/libssl.so" -o -f "$p/libssl.dylib"; then
402       ap_ssltk_libdir="$p"
403       break
404     fi
405   done
406   if test ".$ap_ssltk_libdir" = .; then
407     AC_MSG_ERROR([OpenSSL libraries not found])
408   fi
409   AC_MSG_RESULT($ap_ssltk_libdir)
410
411   dnl #  annotate the Apache build environment with determined information
412   APR_ADDTO(INCLUDES, [-I$ap_ssltk_incdir/openssl])
413   if test "x$ap_ssltk_incdir" != "x/usr/include"; then
414     APR_ADDTO(INCLUDES, [-I$ap_ssltk_incdir])
415   fi
416   if test "x$ap_ssltk_libdir" != "x/usr/lib"; then
417     APR_ADDTO(LDFLAGS, [-L$ap_ssltk_libdir])
418     if test "x$ap_platform_runtime_link_flag" != "x"; then
419       APR_ADDTO(LDFLAGS, [$ap_platform_runtime_link_flag$ap_ssltk_libdir])
420     fi
421   fi
422   APR_ADDTO(LIBS, [-lssl -lcrypto])
423   ap_cv_ssltk="$ap_ssltk_base"
424 fi
425 ])
426
427 dnl
428 dnl APACHE_EXPORT_ARGUMENTS
429 dnl Export (via APACHE_SUBST) the various path-related variables that
430 dnl apache will use while generating scripts like autoconf and apxs and
431 dnl the default config file.
432
433 AC_DEFUN(APACHE_SUBST_EXPANDED_ARG,[
434   APR_EXPAND_VAR(exp_$1, [$]$1)
435   APACHE_SUBST(exp_$1)
436   APR_PATH_RELATIVE(rel_$1, [$]exp_$1, ${prefix})
437   APACHE_SUBST(rel_$1)
438 ])
439
440 AC_DEFUN(APACHE_EXPORT_ARGUMENTS,[
441   APACHE_SUBST_EXPANDED_ARG(exec_prefix)
442   APACHE_SUBST_EXPANDED_ARG(bindir)
443   APACHE_SUBST_EXPANDED_ARG(sbindir)
444   APACHE_SUBST_EXPANDED_ARG(libdir)
445   APACHE_SUBST_EXPANDED_ARG(libexecdir)
446   APACHE_SUBST_EXPANDED_ARG(mandir)
447   APACHE_SUBST_EXPANDED_ARG(sysconfdir)
448   APACHE_SUBST_EXPANDED_ARG(datadir)
449   APACHE_SUBST_EXPANDED_ARG(installbuilddir)
450   APACHE_SUBST_EXPANDED_ARG(errordir)
451   APACHE_SUBST_EXPANDED_ARG(iconsdir)
452   APACHE_SUBST_EXPANDED_ARG(htdocsdir)
453   APACHE_SUBST_EXPANDED_ARG(manualdir)
454   APACHE_SUBST_EXPANDED_ARG(cgidir)
455   APACHE_SUBST_EXPANDED_ARG(includedir)
456   APACHE_SUBST_EXPANDED_ARG(localstatedir)
457   APACHE_SUBST_EXPANDED_ARG(runtimedir)
458   APACHE_SUBST_EXPANDED_ARG(logfiledir)
459   APACHE_SUBST_EXPANDED_ARG(proxycachedir)
460 ])
461