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(abs_srcdir)
30 APACHE_SUBST(logfiledir)
31 APACHE_SUBST(exec_prefix)
33 APACHE_SUBST(localstatedir)
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)
53 APACHE_SUBST(CPPFLAGS)
55 APACHE_SUBST(CXXFLAGS)
58 APACHE_SUBST(LT_LDFLAGS)
59 APACHE_SUBST(SH_LDFLAGS)
60 APACHE_SUBST(HTTPD_LDFLAGS)
61 APACHE_SUBST(UTIL_LDFLAGS)
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)
78 APACHE_SUBST(MODULE_DIRS)
79 APACHE_SUBST(MODULE_CLEANDIRS)
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)
86 APACHE_SUBST(SH_LIBTOOL)
87 APACHE_SUBST(MK_IMPLIB)
88 APACHE_SUBST(INSTALL_PROG_FLAGS)
89 APACHE_SUBST(DSO_MODULES)
90 APACHE_SUBST(APR_BINDIR)
91 APACHE_SUBST(APR_INCLUDEDIR)
92 APACHE_SUBST(APU_BINDIR)
93 APACHE_SUBST(APU_INCLUDEDIR)
95 abs_srcdir="`(cd $srcdir && pwd)`"
97 echo creating config_vars.mk
98 test -d build || $mkdir_p build
99 > build/config_vars.mk
100 for i in $APACHE_VAR_SUBST; do
101 eval echo "$i = \$$i" >> build/config_vars.mk
105 dnl APACHE_GEN_MAKEFILES
106 dnl Creates Makefiles
107 AC_DEFUN(APACHE_GEN_MAKEFILES,[
108 $SHELL $srcdir/build/fastgen.sh $srcdir $ac_cv_mkdir_p $BSD_MAKEFILE $APACHE_FAST_OUTPUT_FILES
111 dnl ## APACHE_OUTPUT(file)
112 dnl ## adds "file" to the list of files generated by AC_OUTPUT
113 dnl ## This macro can be used several times.
114 AC_DEFUN(APACHE_OUTPUT, [
115 APACHE_OUTPUT_FILES="$APACHE_OUTPUT_FILES $1"
119 dnl APACHE_TYPE_RLIM_T
121 dnl If rlim_t is not defined, define it to int
123 AC_DEFUN(APACHE_TYPE_RLIM_T, [
124 AC_CACHE_CHECK([for rlim_t], ac_cv_type_rlim_t, [
126 #include <sys/types.h>
127 #include <sys/time.h>
128 #include <sys/resource.h>
129 ], [rlim_t spoon;], [
130 ac_cv_type_rlim_t=yes
131 ],[ac_cv_type_rlim_t=no
134 if test "$ac_cv_type_rlim_t" = "no" ; then
135 AC_DEFINE(rlim_t, int,
136 [Define to 'int' if <sys/resource.h> doesn't define it for us])
140 dnl APACHE_MODPATH_INIT(modpath)
141 AC_DEFUN(APACHE_MODPATH_INIT,[
143 modpath_current=modules/$1
146 test -d $1 || $srcdir/build/mkdir.sh $modpath_current
147 > $modpath_current/modules.mk
150 AC_DEFUN(APACHE_MODPATH_FINISH,[
151 echo "DISTCLEAN_TARGETS = modules.mk" >> $modpath_current/modules.mk
152 echo "static = $modpath_static" >> $modpath_current/modules.mk
153 echo "shared = $modpath_shared" >> $modpath_current/modules.mk
154 if test ! -z "$modpath_static" -o ! -z "$modpath_shared"; then
155 MODULE_DIRS="$MODULE_DIRS $current_dir"
157 MODULE_CLEANDIRS="$MODULE_CLEANDIRS $current_dir"
159 APACHE_FAST_OUTPUT($modpath_current/Makefile)
162 dnl APACHE_MODPATH_ADD(name[, shared[, objects [, ldflags[, libs]]]])
163 AC_DEFUN(APACHE_MODPATH_ADD,[
164 if test -z "$3"; then
170 if test -z "$module_standalone"; then
171 if test -z "$2"; then
173 BUILTIN_LIBS="$BUILTIN_LIBS $modpath_current/$libname"
174 modpath_static="$modpath_static $libname"
175 cat >>$modpath_current/modules.mk<<EOF
177 \$(MOD_LINK) $objects
180 apache_need_shared=yes
182 shobjects=`echo $objects | sed 's/\.lo/.slo/g'`
183 modpath_shared="$modpath_shared $libname"
184 cat >>$modpath_current/modules.mk<<EOF
186 \$(SH_LINK) -rpath \$(libexecdir) -module -avoid-version $4 $objects $5
193 dnl APACHE_MODULE(name, helptext[, objects[, structname[, default[, config]]]])
195 dnl default is one of:
196 dnl yes -- enabled by default. user must explicitly disable.
197 dnl no -- disabled under default, most, all. user must explicitly enable.
198 dnl most -- disabled by default. enabled explicitly or with most or all.
199 dnl static -- enabled as static by default, must be explicitly changed.
200 dnl "" -- disabled under default, most. enabled explicitly or with all.
202 dnl basically: yes/no is a hard setting. "most" means follow the "most"
203 dnl setting. otherwise, fall under the "all" setting.
204 dnl explicit yes/no always overrides.
206 AC_DEFUN(APACHE_MODULE,[
207 AC_MSG_CHECKING(whether to enable mod_$1)
208 define([optname],[--]ifelse($5,yes,disable,enable)[-]translit($1,_,-))dnl
209 AC_ARG_ENABLE(translit($1,_,-),APACHE_HELP_STRING(optname(),$2),,enable_$1=ifelse($5,,maybe-all,$5))
210 undefine([optname])dnl
212 dnl When --enable-modules=most is set and the module was not explicitly
213 dnl requested, allow a module to disable itself if its pre-reqs fail.
214 if test "$module_selection" = "most" -a "$enable_$1" = "most"; then
215 _apmod_error_fatal="no"
217 _apmod_error_fatal="yes"
219 if test "$enable_$1" = "static"; then
221 elif test "$enable_$1" = "yes"; then
222 enable_$1=$module_default
223 _apmod_extra_msg=" ($module_selection)"
224 elif test "$enable_$1" = "most"; then
225 if test "$module_selection" = "most" -o "$module_selection" = "all"; then
226 enable_$1=$module_default
227 _apmod_extra_msg=" ($module_selection)"
228 elif test "$enable_$1" != "yes"; then
231 elif test "$enable_$1" = "maybe-all"; then
232 if test "$module_selection" = "all"; then
233 enable_$1=$module_default
234 _apmod_extra_msg=" (all)"
239 if test "$enable_$1" != "no"; then
240 dnl If we plan to enable it, allow the module to run some autoconf magic
241 dnl that may disable it because of missing dependencies.
242 ifelse([$6],,:,[AC_MSG_RESULT([checking dependencies])
244 AC_MSG_CHECKING(whether to enable mod_$1)
245 if test "$enable_$1" = "no"; then
246 if test "$_apmod_error_fatal" = "no"; then
247 _apmod_extra_msg=" (disabled)"
249 AC_MSG_ERROR([mod_$1 has been requested but can not be built due to prerequisite failures])
253 AC_MSG_RESULT($enable_$1$_apmod_extra_msg)
254 if test "$enable_$1" != "no"; then
257 enable_$1=`echo $ac_n $enable_$1$ac_c|sed 's/shared,*//'`
260 DSO_MODULES="$DSO_MODULES $1"
263 MODLIST="$MODLIST ifelse($4,,$1,$4)"
264 if test "$1" = "so"; then
269 APACHE_MODPATH_ADD($1, $shared, $3)
274 dnl APACHE_LAYOUT(configlayout, layoutname)
276 AC_DEFUN(APACHE_LAYOUT,[
277 if test ! -f $srcdir/config.layout; then
278 echo "** Error: Layout file $srcdir/config.layout not found"
279 echo "** Error: Cannot use undefined layout '$LAYOUT'"
284 sed -e "1,/[ ]*<[lL]ayout[ ]*$2[ ]*>[ ]*/d" \
285 -e '/[ ]*<\/Layout>[ ]*/,$d' \
293 for var in prefix exec_prefix bindir sbindir libexecdir mandir \
294 sysconfdir datadir errordir iconsdir htdocsdir cgidir \
295 includedir localstatedir runtimedir logfiledir libdir \
296 manualdir proxycachedir installbuilddir; do
297 eval "val=\"\$$var\""
300 val=`echo $val | sed -e 's;\+$;;'`
301 eval "$var=\"\$val\""
308 val=`echo $val | sed -e 's:\(.\)/*$:\1:'`
309 val=`echo $val | sed -e 's:[\$]\([a-z_]*\):${\1}:g'`
310 if test "$autosuffix" = "yes"; then
311 if echo $val | grep apache >/dev/null; then
316 if test "$addtarget" = "yes"; then
326 dnl APACHE_ENABLE_LAYOUT
328 AC_DEFUN(APACHE_ENABLE_LAYOUT,[
329 AC_ARG_ENABLE(layout,
330 [ --enable-layout=LAYOUT],[
334 if test -z "$LAYOUT"; then
337 APACHE_LAYOUT($srcdir/config.layout, $LAYOUT)
339 AC_MSG_CHECKING(for chosen layout)
340 AC_MSG_RESULT($layout_name)
344 dnl APACHE_ENABLE_MODULES
346 AC_DEFUN(APACHE_ENABLE_MODULES,[
347 module_selection=default
350 AC_ARG_ENABLE(modules,
351 APACHE_HELP_STRING(--enable-modules=MODULE-LIST,Modules to enable),[
352 for i in $enableval; do
353 if test "$i" = "all" -o "$i" = "most"; then
361 AC_ARG_ENABLE(mods-shared,
362 APACHE_HELP_STRING(--enable-mods-shared=MODULE-LIST,Shared modules to enable),[
363 for i in $enableval; do
364 if test "$i" = "all" -o "$i" = "most"; then
366 module_default=shared
368 i=`echo $i | sed 's/-/_/g'`
369 eval "enable_$i=shared"
375 AC_DEFUN(APACHE_REQUIRE_CXX,[
376 if test -z "$apache_cxx_done"; then
384 dnl APACHE_CHECK_SSL_TOOLKIT
386 dnl Find the openssl toolkit installation and check it for the right
387 dnl version, then add its flags to INCLUDES and LIBS. This should
388 dnl really be using a custom AC_TRY_COMPILE function to test the includes
389 dnl and then AC_TRY_LINK to test the libraries directly for the version,
390 dnl but that will require someone who knows how to program openssl.
392 AC_DEFUN(APACHE_CHECK_SSL_TOOLKIT,[
393 if test "x$ap_ssltk_base" = "x"; then
394 AC_MSG_CHECKING(for SSL/TLS toolkit base)
396 AC_ARG_WITH(ssl, APACHE_HELP_STRING(--with-ssl=DIR,SSL/TLS toolkit (OpenSSL)), [
397 if test "x$withval" != "xyes" -a "x$withval" != "x"; then
398 ap_ssltk_base="$withval"
399 if test -f "$ap_ssltk_base/bin/openssl"; then
400 ap_ssltk_version="`$ap_ssltk_base/bin/openssl version`"
402 ap_ssltk_version="unknown"
406 if test "x$ap_ssltk_base" = "x"; then
407 AC_CACHE_VAL(ap_cv_ssltk,[
409 # shotgun approach: find all occurrences of the openssl program
411 # The IFS=... trick eliminates the colons from $PATH, without using an external program
412 for p in `IFS=":$IFS"; echo $PATH` /usr/local/openssl/bin /usr/local/ssl/bin; do
413 if test -f "$p/openssl"; then
414 ap_ssltk_version="`$p/openssl version`"
415 if test "x$ap_ssltk_version" != "x"; then
416 ap_cv_ssltk="`(cd $p/.. && pwd)`"
421 if test "x$ap_cv_ssltk" = "x"; then
422 AC_MSG_ERROR([requires OpenSSL 0.9.6e or higher])
425 ap_ssltk_base="$ap_cv_ssltk"
427 if test ! -d $ap_ssltk_base; then
428 AC_MSG_ERROR([invalid SSL/TLS toolkit base directory $ap_ssltk_base])
430 AC_MSG_RESULT($ap_ssltk_base)
432 AC_MSG_CHECKING(for SSL/TLS toolkit version)
433 AC_MSG_RESULT($ap_ssltk_version)
434 case "$ap_ssltk_version" in
435 "OpenSSL "[[1-9]]* | \
436 "OpenSSL "0.9.6[[e-z]]* | \
437 "OpenSSL "0.9.[[7-9]]* | \
438 "OpenSSL "0.[[1-9]][[0-9]]* )
439 # okay versions that do not have known security holes
442 AC_MSG_WARN([OpenSSL versions prior to 0.9.6e have known security holes])
445 # unknown version -- assume the user knows what they are doing
449 AC_MSG_CHECKING(for SSL/TLS toolkit includes)
451 for p in $ap_ssltk_base/include /usr/local/openssl/include \
452 /usr/local/ssl/include /usr/local/include /usr/include; do
453 if test -f "$p/openssl/ssl.h"; then
456 elif test -f "$p/ssl.h"; then
461 if test "x$ap_ssltk_incdir" = "x"; then
462 AC_MSG_ERROR([OpenSSL headers not found])
464 AC_MSG_RESULT($ap_ssltk_incdir)
466 AC_MSG_CHECKING(for SSL/TLS toolkit libraries)
468 for p in $ap_ssltk_base/lib /usr/local/openssl/lib \
469 /usr/local/ssl/lib /usr/local/lib /usr/lib /lib /usr/lib64; do
470 if test -f "$p/libssl.a" -o -f "$p/libssl.so" -o -f "$p/libssl.dylib"; then
475 if test ".$ap_ssltk_libdir" = .; then
476 AC_MSG_ERROR([OpenSSL libraries not found])
478 AC_MSG_RESULT($ap_ssltk_libdir)
480 dnl # annotate the Apache build environment with determined information
481 APR_ADDTO(INCLUDES, [-I$ap_ssltk_incdir/openssl])
482 if test "x$ap_ssltk_incdir" != "x/usr/include"; then
483 APR_ADDTO(INCLUDES, [-I$ap_ssltk_incdir])
485 if test "x$ap_ssltk_libdir" != "x/usr/lib"; then
486 APR_ADDTO(LDFLAGS, [-L$ap_ssltk_libdir])
487 if test "x$ap_platform_runtime_link_flag" != "x"; then
488 APR_ADDTO(LDFLAGS, [$ap_platform_runtime_link_flag$ap_ssltk_libdir])
491 APR_ADDTO(LIBS, [-lssl -lcrypto])
492 ap_cv_ssltk="$ap_ssltk_base"
497 dnl APACHE_EXPORT_ARGUMENTS
498 dnl Export (via APACHE_SUBST) the various path-related variables that
499 dnl apache will use while generating scripts like autoconf and apxs and
500 dnl the default config file.
502 AC_DEFUN(APACHE_SUBST_EXPANDED_ARG,[
503 APR_EXPAND_VAR(exp_$1, [$]$1)
505 APR_PATH_RELATIVE(rel_$1, [$]exp_$1, ${prefix})
509 AC_DEFUN(APACHE_EXPORT_ARGUMENTS,[
510 APACHE_SUBST_EXPANDED_ARG(exec_prefix)
511 APACHE_SUBST_EXPANDED_ARG(bindir)
512 APACHE_SUBST_EXPANDED_ARG(sbindir)
513 APACHE_SUBST_EXPANDED_ARG(libdir)
514 APACHE_SUBST_EXPANDED_ARG(libexecdir)
515 APACHE_SUBST_EXPANDED_ARG(mandir)
516 APACHE_SUBST_EXPANDED_ARG(sysconfdir)
517 APACHE_SUBST_EXPANDED_ARG(datadir)
518 APACHE_SUBST_EXPANDED_ARG(installbuilddir)
519 APACHE_SUBST_EXPANDED_ARG(errordir)
520 APACHE_SUBST_EXPANDED_ARG(iconsdir)
521 APACHE_SUBST_EXPANDED_ARG(htdocsdir)
522 APACHE_SUBST_EXPANDED_ARG(manualdir)
523 APACHE_SUBST_EXPANDED_ARG(cgidir)
524 APACHE_SUBST_EXPANDED_ARG(includedir)
525 APACHE_SUBST_EXPANDED_ARG(localstatedir)
526 APACHE_SUBST_EXPANDED_ARG(runtimedir)
527 APACHE_SUBST_EXPANDED_ARG(logfiledir)
528 APACHE_SUBST_EXPANDED_ARG(proxycachedir)