mirror of
https://github.com/apache/httpd.git
synced 2026-01-26 19:01:35 +03:00
- substr used in APACHE_MODULE for the help string did not parse correctly with autoconf 2.50+ so we had to punt there anyway and use AC_HELP_STRING. - Add APACHE_HELP_STRING define that will call AC_HELP_STRING on 2.50+ (actually not 2.13 - look at the regex call) or do our custom variation of it. This function can't have any extra spaces or it will be returned in the help string. So noted. If anyone can figure out how to insert a line break like 2.50+ does when we go over the 26th column, I'd appreciate it. I tried and I'm way too tired to figure it out now. Adding this would greatly simplify two or three HELP_STRING uses. - Switch all of those annoying WITH and ENABLE functions to use the APACHE_HELP_STRING. This makes everything consistent now. I've always had to go through and keep aligning everything every few months or so because I'm the only one who cares. No more. I refuse to do it any more! Use APACHE_HELP_STRING or be crucified. Looks decent with autoconf-2.13 and autoconf-2.52. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@91211 13f79535-47bb-0310-9956-ffa450edef68
480 lines
14 KiB
Plaintext
480 lines
14 KiB
Plaintext
|
|
dnl APACHE_HELP_STRING(LHS, RHS)
|
|
dnl Autoconf 2.50 can not handle substr correctly. It does have
|
|
dnl AC_HELP_STRING, so let's try to call it if we can.
|
|
dnl Note: this define must be on one line so that it can be properly returned
|
|
dnl as the help string.
|
|
AC_DEFUN(APACHE_HELP_STRING,[ifelse(regexp(AC_ACVERSION, 2\.1), -1, AC_HELP_STRING($1,$2),[ ]$1 substr([ ],len($1))$2)])dnl
|
|
|
|
dnl APACHE_SUBST(VARIABLE)
|
|
dnl Makes VARIABLE available in generated files
|
|
dnl (do not use @variable@ in Makefiles, but $(variable))
|
|
AC_DEFUN(APACHE_SUBST,[
|
|
APACHE_VAR_SUBST="$APACHE_VAR_SUBST $1"
|
|
AC_SUBST($1)
|
|
])
|
|
|
|
dnl APACHE_FAST_OUTPUT(FILENAME)
|
|
dnl Perform substitutions on FILENAME (Makefiles only)
|
|
AC_DEFUN(APACHE_FAST_OUTPUT,[
|
|
APACHE_FAST_OUTPUT_FILES="$APACHE_FAST_OUTPUT_FILES $1"
|
|
])
|
|
|
|
dnl APACHE_MKDIR_P_CHECK
|
|
dnl checks whether mkdir -p works
|
|
AC_DEFUN(APACHE_MKDIR_P_CHECK,[
|
|
AC_CACHE_CHECK(for working mkdir -p, ac_cv_mkdir_p,[
|
|
test -d conftestdir && rm -rf conftestdir
|
|
mkdir -p conftestdir/somedir >/dev/null 2>&1
|
|
if test -d conftestdir/somedir; then
|
|
ac_cv_mkdir_p=yes
|
|
else
|
|
ac_cv_mkdir_p=no
|
|
fi
|
|
rm -rf conftestdir
|
|
])
|
|
])
|
|
|
|
dnl APACHE_GEN_CONFIG_VARS
|
|
dnl Creates config_vars.mk
|
|
AC_DEFUN(APACHE_GEN_CONFIG_VARS,[
|
|
APACHE_SUBST(abs_srcdir)
|
|
APACHE_SUBST(bindir)
|
|
APACHE_SUBST(sbindir)
|
|
APACHE_SUBST(cgidir)
|
|
APACHE_SUBST(logfiledir)
|
|
APACHE_SUBST(exec_prefix)
|
|
APACHE_SUBST(datadir)
|
|
APACHE_SUBST(localstatedir)
|
|
APACHE_SUBST(mandir)
|
|
APACHE_SUBST(libexecdir)
|
|
APACHE_SUBST(htdocsdir)
|
|
APACHE_SUBST(manualdir)
|
|
APACHE_SUBST(includedir)
|
|
APACHE_SUBST(errordir)
|
|
APACHE_SUBST(iconsdir)
|
|
APACHE_SUBST(sysconfdir)
|
|
APACHE_SUBST(installbuilddir)
|
|
APACHE_SUBST(other_targets)
|
|
APACHE_SUBST(progname)
|
|
APACHE_SUBST(prefix)
|
|
APACHE_SUBST(AWK)
|
|
APACHE_SUBST(CC)
|
|
APACHE_SUBST(CPP)
|
|
APACHE_SUBST(CXX)
|
|
APACHE_SUBST(CPPFLAGS)
|
|
APACHE_SUBST(CFLAGS)
|
|
APACHE_SUBST(CXXFLAGS)
|
|
APACHE_SUBST(LTFLAGS)
|
|
APACHE_SUBST(LDFLAGS)
|
|
APACHE_SUBST(LT_LDFLAGS)
|
|
APACHE_SUBST(SH_LDFLAGS)
|
|
APACHE_SUBST(HTTPD_LDFLAGS)
|
|
APACHE_SUBST(LIBS)
|
|
APACHE_SUBST(DEFS)
|
|
APACHE_SUBST(INCLUDES)
|
|
APACHE_SUBST(NOTEST_CPPFLAGS)
|
|
APACHE_SUBST(NOTEST_CFLAGS)
|
|
APACHE_SUBST(NOTEST_CXXFLAGS)
|
|
APACHE_SUBST(NOTEST_LDFLAGS)
|
|
APACHE_SUBST(NOTEST_LIBS)
|
|
APACHE_SUBST(EXTRA_CPPFLAGS)
|
|
APACHE_SUBST(EXTRA_CFLAGS)
|
|
APACHE_SUBST(EXTRA_CXXFLAGS)
|
|
APACHE_SUBST(EXTRA_LDFLAGS)
|
|
APACHE_SUBST(EXTRA_LIBS)
|
|
APACHE_SUBST(EXTRA_INCLUDES)
|
|
APACHE_SUBST(LIBTOOL)
|
|
APACHE_SUBST(SHELL)
|
|
APACHE_SUBST(MODULE_DIRS)
|
|
APACHE_SUBST(MODULE_CLEANDIRS)
|
|
APACHE_SUBST(PORT)
|
|
APACHE_SUBST(CORE_IMPLIB_FILE)
|
|
APACHE_SUBST(CORE_IMPLIB)
|
|
APACHE_SUBST(SH_LIBTOOL)
|
|
APACHE_SUBST(MK_IMPLIB)
|
|
APACHE_SUBST(INSTALL_PROG_FLAGS)
|
|
|
|
abs_srcdir="`(cd $srcdir && pwd)`"
|
|
|
|
APACHE_MKDIR_P_CHECK
|
|
echo creating config_vars.mk
|
|
> config_vars.mk
|
|
for i in $APACHE_VAR_SUBST; do
|
|
eval echo "$i = \$$i" >> config_vars.mk
|
|
done
|
|
])
|
|
|
|
dnl APACHE_GEN_MAKEFILES
|
|
dnl Creates Makefiles
|
|
AC_DEFUN(APACHE_GEN_MAKEFILES,[
|
|
$SHELL $srcdir/build/fastgen.sh $srcdir $ac_cv_mkdir_p $BSD_MAKEFILE $APACHE_FAST_OUTPUT_FILES
|
|
])
|
|
|
|
dnl ## APACHE_OUTPUT(file)
|
|
dnl ## adds "file" to the list of files generated by AC_OUTPUT
|
|
dnl ## This macro can be used several times.
|
|
AC_DEFUN(APACHE_OUTPUT, [
|
|
APACHE_OUTPUT_FILES="$APACHE_OUTPUT_FILES $1"
|
|
])
|
|
|
|
dnl
|
|
dnl APACHE_TYPE_RLIM_T
|
|
dnl
|
|
dnl If rlim_t is not defined, define it to int
|
|
dnl
|
|
AC_DEFUN(APACHE_TYPE_RLIM_T, [
|
|
AC_CACHE_CHECK([for rlim_t], ac_cv_type_rlim_t, [
|
|
AC_TRY_COMPILE([
|
|
#include <sys/types.h>
|
|
#include <sys/time.h>
|
|
#include <sys/resource.h>
|
|
], [rlim_t spoon;], [
|
|
ac_cv_type_rlim_t=yes
|
|
],[ac_cv_type_rlim_t=no
|
|
])
|
|
])
|
|
if test "$ac_cv_type_rlim_t" = "no" ; then
|
|
AC_DEFINE(rlim_t, int,
|
|
[Define to 'int' if <sys/resource.h> doesn't define it for us])
|
|
fi
|
|
])
|
|
|
|
dnl APACHE_MODPATH_INIT(modpath)
|
|
AC_DEFUN(APACHE_MODPATH_INIT,[
|
|
current_dir=$1
|
|
modpath_current=modules/$1
|
|
modpath_static=
|
|
modpath_shared=
|
|
test -d $1 || $srcdir/build/mkdir.sh $modpath_current
|
|
> $modpath_current/modules.mk
|
|
])dnl
|
|
dnl
|
|
AC_DEFUN(APACHE_MODPATH_FINISH,[
|
|
echo "DISTCLEAN_TARGETS = modules.mk" >> $modpath_current/modules.mk
|
|
echo "static = $modpath_static" >> $modpath_current/modules.mk
|
|
echo "shared = $modpath_shared" >> $modpath_current/modules.mk
|
|
if test ! -z "$modpath_static" -o ! -z "$modpath_shared"; then
|
|
MODULE_DIRS="$MODULE_DIRS $current_dir"
|
|
else
|
|
MODULE_CLEANDIRS="$MODULE_CLEANDIRS $current_dir"
|
|
fi
|
|
APACHE_FAST_OUTPUT($modpath_current/Makefile)
|
|
])dnl
|
|
dnl
|
|
dnl APACHE_MODPATH_ADD(name[, shared[, objects [, ldflags[, libs]]]])
|
|
AC_DEFUN(APACHE_MODPATH_ADD,[
|
|
if test -z "$3"; then
|
|
objects="mod_$1.lo"
|
|
else
|
|
objects="$3"
|
|
fi
|
|
|
|
if test -z "$module_standalone"; then
|
|
if test -z "$2"; then
|
|
libname="mod_$1.la"
|
|
BUILTIN_LIBS="$BUILTIN_LIBS $modpath_current/$libname"
|
|
modpath_static="$modpath_static $libname"
|
|
cat >>$modpath_current/modules.mk<<EOF
|
|
$libname: $objects
|
|
\$(MOD_LINK) $objects
|
|
EOF
|
|
else
|
|
apache_need_shared=yes
|
|
libname="mod_$1.la"
|
|
shobjects=`echo $objects | sed 's/\.lo/.slo/g'`
|
|
modpath_shared="$modpath_shared $libname"
|
|
cat >>$modpath_current/modules.mk<<EOF
|
|
$libname: $shobjects
|
|
\$(SH_LINK) -rpath \$(libexecdir) -module -avoid-version $4 $objects $5
|
|
EOF
|
|
fi
|
|
fi
|
|
])dnl
|
|
|
|
dnl
|
|
dnl APACHE_MODULE(name, helptext[, objects[, structname[, default[, config]]]])
|
|
dnl
|
|
dnl default is one of:
|
|
dnl yes -- enabled by default. user must explicitly disable.
|
|
dnl no -- disabled under default, most, all. user must explicitly enable.
|
|
dnl most -- disabled by default. enabled explicitly or with most or all.
|
|
dnl "" -- disabled under default, most. enabled explicitly or with all.
|
|
dnl
|
|
dnl basically: yes/no is a hard setting. "most" means follow the "most"
|
|
dnl setting. otherwise, fall under the "all" setting.
|
|
dnl explicit yes/no always overrides.
|
|
dnl
|
|
AC_DEFUN(APACHE_MODULE,[
|
|
AC_MSG_CHECKING(whether to enable mod_$1)
|
|
define([optname],[--]ifelse($5,yes,disable,enable)[-]translit($1,_,-))dnl
|
|
AC_ARG_ENABLE(translit($1,_,-),APACHE_HELP_STRING(optname(),$2),,enable_$1=ifelse($5,,maybe-all,$5))
|
|
undefine([optname])dnl
|
|
_apmod_extra_msg=""
|
|
dnl When --enable-modules=most is set and the module was not explicitly
|
|
dnl requested, allow a module to disable itself if its pre-reqs fail.
|
|
if test "$module_selection" = "most" -a "$enable_$1" = "most"; then
|
|
_apmod_error_fatal="no"
|
|
else
|
|
_apmod_error_fatal="yes"
|
|
fi
|
|
if test "$enable_$1" = "most"; then
|
|
if test "$module_selection" = "most" -o "$module_selection" = "all"; then
|
|
enable_$1=$module_default
|
|
_apmod_extra_msg=" ($module_selection)"
|
|
else
|
|
enable_$1=no
|
|
fi
|
|
elif test "$enable_$1" = "maybe-all"; then
|
|
if test "$module_selection" = "all"; then
|
|
enable_$1=$module_default
|
|
_apmod_extra_msg=" (all)"
|
|
else
|
|
enable_$1=no
|
|
fi
|
|
fi
|
|
if test "$enable_$1" != "no"; then
|
|
dnl If we plan to enable it, allow the module to run some autoconf magic
|
|
dnl that may disable it because of missing dependencies.
|
|
ifelse([$6],,:,[AC_MSG_RESULT([checking dependencies])
|
|
$6
|
|
AC_MSG_CHECKING(whether to enable mod_$1)
|
|
if test "$enable_$1" = "no"; then
|
|
if test "$_apmod_error_fatal" = "no"; then
|
|
_apmod_extra_msg=" (disabled)"
|
|
else
|
|
AC_MSG_ERROR([mod_$1 has been requested but can not be built due to prerequisite failures])
|
|
fi
|
|
fi])
|
|
fi
|
|
AC_MSG_RESULT($enable_$1$_apmod_extra_msg)
|
|
if test "$enable_$1" != "no"; then
|
|
case "$enable_$1" in
|
|
shared*)
|
|
enable_$1=`echo $ac_n $enable_$1$ac_c|sed 's/shared,*//'`
|
|
sharedobjs=yes
|
|
shared=yes;;
|
|
*)
|
|
MODLIST="$MODLIST ifelse($4,,$1,$4)"
|
|
if test "$1" = "so"; then
|
|
sharedobjs=yes
|
|
fi
|
|
shared="";;
|
|
esac
|
|
APACHE_MODPATH_ADD($1, $shared, $3)
|
|
fi
|
|
])dnl
|
|
dnl
|
|
dnl APACHE_LAYOUT(configlayout, layoutname)
|
|
AC_DEFUN(APACHE_LAYOUT,[
|
|
if test ! -f $srcdir/config.layout; then
|
|
echo "** Error: Layout file $srcdir/config.layout not found"
|
|
echo "** Error: Cannot use undefined layout '$LAYOUT'"
|
|
exit 1
|
|
fi
|
|
pldconf=./config.pld
|
|
changequote({,})
|
|
sed -e "1,/[ ]*<[lL]ayout[ ]*$2[ ]*>[ ]*/d" \
|
|
-e '/[ ]*<\/Layout>[ ]*/,$d' \
|
|
-e "s/^[ ]*//g" \
|
|
-e "s/:[ ]*/=\'/g" \
|
|
-e "s/[ ]*$/'/g" \
|
|
$1 > $pldconf
|
|
layout_name=$2
|
|
. $pldconf
|
|
rm $pldconf
|
|
for var in prefix exec_prefix bindir sbindir libexecdir mandir \
|
|
sysconfdir datadir errordir iconsdir htdocsdir cgidir \
|
|
includedir localstatedir runtimedir logfiledir \
|
|
proxycachedir installbuilddir; do
|
|
eval "val=\"\$$var\""
|
|
case $val in
|
|
*+)
|
|
val=`echo $val | sed -e 's;\+$;;'`
|
|
eval "$var=\"\$val\""
|
|
autosuffix=yes
|
|
;;
|
|
*)
|
|
autosuffix=no
|
|
;;
|
|
esac
|
|
val=`echo $val | sed -e 's:\(.\)/*$:\1:'`
|
|
val=`echo $val | sed -e 's:[\$]\([a-z_]*\):$(\1):g'`
|
|
if test "$autosuffix" = "yes"; then
|
|
if echo $val | grep apache >/dev/null; then
|
|
addtarget=no
|
|
else
|
|
addtarget=yes
|
|
fi
|
|
if test "$addtarget" = "yes"; then
|
|
val="$val/apache"
|
|
fi
|
|
fi
|
|
eval "$var='$val'"
|
|
done
|
|
changequote([,])
|
|
])dnl
|
|
dnl
|
|
dnl APACHE_ENABLE_LAYOUT
|
|
dnl
|
|
AC_DEFUN(APACHE_ENABLE_LAYOUT,[
|
|
AC_ARG_ENABLE(layout,
|
|
APACHE_HELP_STRING(--enable-layout=LAYOUT,Default file layout),[
|
|
LAYOUT=$enableval
|
|
])
|
|
|
|
if test -z "$LAYOUT"; then
|
|
LAYOUT="Apache"
|
|
fi
|
|
APACHE_LAYOUT($srcdir/config.layout, $LAYOUT)
|
|
|
|
AC_MSG_CHECKING(for chosen layout)
|
|
AC_MSG_RESULT($layout_name)
|
|
])
|
|
|
|
dnl
|
|
dnl APACHE_ENABLE_MODULES
|
|
dnl
|
|
AC_DEFUN(APACHE_ENABLE_MODULES,[
|
|
module_selection=default
|
|
module_default=yes
|
|
|
|
AC_ARG_ENABLE(modules,
|
|
APACHE_HELP_STRING(--enable-modules=MODULE-LIST,Modules to enable),[
|
|
for i in $enableval; do
|
|
if test "$i" = "all" -o "$i" = "most"; then
|
|
module_selection=$i
|
|
else
|
|
eval "enable_$i=yes"
|
|
fi
|
|
done
|
|
])
|
|
|
|
AC_ARG_ENABLE(mods-shared,
|
|
APACHE_HELP_STRING(--enable-mod-shared=MODULE-LIST,Shared modules to enable),[
|
|
for i in $enableval; do
|
|
if test "$i" = "all" -o "$i" = "most"; then
|
|
module_selection=$i
|
|
module_default=shared
|
|
else
|
|
i=`echo $i | sed 's/-/_/g'`
|
|
eval "enable_$i=shared"
|
|
fi
|
|
done
|
|
])
|
|
])
|
|
|
|
AC_DEFUN(APACHE_REQUIRE_CXX,[
|
|
if test -z "$apache_cxx_done"; then
|
|
AC_PROG_CXX
|
|
AC_PROG_CXXCPP
|
|
apache_cxx_done=yes
|
|
fi
|
|
])
|
|
|
|
dnl
|
|
dnl APACHE_CHECK_SSL_TOOLKIT
|
|
dnl
|
|
dnl Find the openssl toolkit installation and check it for the right
|
|
dnl version, then add its flags to INCLUDES and LIBS. This should
|
|
dnl really be using a custom AC_TRY_COMPILE function to test the includes
|
|
dnl and then AC_TRY_LINK to test the libraries directly for the version,
|
|
dnl but that will require someone who knows how to program openssl.
|
|
dnl
|
|
AC_DEFUN(APACHE_CHECK_SSL_TOOLKIT,[
|
|
if test "x$ap_ssltk_base" = "x"; then
|
|
AC_MSG_CHECKING(for SSL/TLS toolkit base)
|
|
ap_ssltk_base=""
|
|
AC_ARG_WITH(ssl, APACHE_HELP_STRING(--with-ssl=DIR,SSL/TLS toolkit (OpenSSL)), [
|
|
if test "x$withval" != "xyes" -a "x$withval" != "x"; then
|
|
ap_ssltk_base="$withval"
|
|
fi
|
|
])
|
|
if test "x$ap_ssltk_base" = "x"; then
|
|
AC_CACHE_VAL(ap_cv_ssltk,[
|
|
#
|
|
# shotgun approach: find all occurrences of the openssl program
|
|
#
|
|
ap_ssltk_try=""
|
|
# The IFS=... trick eliminates the colons from $PATH, without using an external program
|
|
for p in `IFS=":$IFS"; echo $PATH` /usr/local/openssl/bin /usr/local/ssl/bin; do
|
|
if test -f "$p/openssl"; then
|
|
ap_ssltk_try="$ap_ssltk_try $p"
|
|
fi
|
|
done
|
|
if test "x$ap_ssltk_try" = "x"; then
|
|
AC_MSG_ERROR(['openssl' not found in path])
|
|
fi
|
|
for p in $ap_ssltk_try; do
|
|
ap_ssltk_version="`$p/openssl version`"
|
|
case "$ap_ssltk_version" in
|
|
"OpenSSL "[[1-9]]* | \
|
|
"OpenSSL "0.9.[[6-9]]* | \
|
|
"OpenSSL "0.[[1-9]][[0-9]]* )
|
|
ap_cv_ssltk="`(cd $p/.. && pwd)`"
|
|
break
|
|
;;
|
|
*)
|
|
# skip because it is too old or a bad result
|
|
;;
|
|
esac
|
|
done
|
|
if test "x$ap_cv_ssltk" = "x"; then
|
|
AC_MSG_ERROR([requires OpenSSL 0.9.6 or higher])
|
|
fi
|
|
])
|
|
ap_ssltk_base="$ap_cv_ssltk"
|
|
fi
|
|
if test ! -d $ap_ssltk_base; then
|
|
AC_MSG_ERROR([invalid SSL/TLS toolkit base directory $ap_ssltk_base])
|
|
fi
|
|
AC_MSG_RESULT($ap_ssltk_base)
|
|
|
|
AC_MSG_CHECKING(for SSL/TLS toolkit version)
|
|
AC_MSG_RESULT($ap_ssltk_version)
|
|
|
|
AC_MSG_CHECKING(for SSL/TLS toolkit includes)
|
|
ap_ssltk_incdir=""
|
|
for p in $ap_ssltk_base/include /usr/local/openssl/include \
|
|
/usr/local/ssl/include /usr/local/include /usr/include; do
|
|
if test -f "$p/openssl/ssl.h"; then
|
|
ap_ssltk_incdir="$p"
|
|
break
|
|
fi
|
|
done
|
|
if test "x$ap_ssltk_incdir" = "x"; then
|
|
AC_MSG_ERROR([OpenSSL headers not found])
|
|
fi
|
|
AC_MSG_RESULT($ap_ssltk_incdir)
|
|
|
|
AC_MSG_CHECKING(for SSL/TLS toolkit libraries)
|
|
ap_ssltk_libdir=""
|
|
for p in $ap_ssltk_base/lib /usr/local/openssl/lib \
|
|
/usr/local/ssl/lib /usr/local/lib /usr/lib /lib; do
|
|
if test -f "$p/libssl.a" -o -f "$p/libssl.so"; then
|
|
ap_ssltk_libdir="$p"
|
|
break
|
|
fi
|
|
done
|
|
if test ".$ap_ssltk_libdir" = .; then
|
|
AC_MSG_ERROR([OpenSSL libraries not found])
|
|
fi
|
|
AC_MSG_RESULT($ap_ssltk_libdir)
|
|
|
|
dnl # annotate the Apache build environment with determined information
|
|
APR_ADDTO(INCLUDES, [-I$ap_ssltk_incdir/openssl])
|
|
if test "x$ap_ssltk_incdir" != "x/usr/include"; then
|
|
APR_ADDTO(INCLUDES, [-I$ap_ssltk_incdir])
|
|
fi
|
|
if test "x$ap_ssltk_libdir" != "x/usr/lib"; then
|
|
APR_ADDTO(LIBS, [-L$ap_ssltk_libdir])
|
|
if test "x$ap_platform_runtime_link_flag" != "x"; then
|
|
APR_ADDTO(LIBS, [$ap_platform_runtime_link_flag$ap_ssltk_libdir])
|
|
fi
|
|
fi
|
|
APR_ADDTO(LIBS, [-lssl -lcrypto])
|
|
ap_cv_ssltk="$ap_ssltk_base"
|
|
fi
|
|
])
|
|
|