blob: 80e869a48dbcaff8fcd9d2f12890368de9e5edb5 [file] [log] [blame]
dnl Process this file with autoconf to produce a configure script.
AC_INIT(flood.c)
dnl Location for config.guess, config.sub, install.sh, etc.
AC_CONFIG_AUX_DIR(build)
dnl Override the default prefix with /usr/local/flood
AC_PREFIX_DEFAULT(/usr/local/flood)
dnl m4 Macros from APR
sinclude(build/apr_common.m4)
dnl m4 Macros for finding APR and APR-util
sinclude(build/find_apr.m4)
sinclude(build/find_apu.m4)
dnl We need to know our top directory.
abs_builddir=`pwd`
dnl Initially, we need no subdirs
FLOOD_SUBDIRS=""
dnl Generate ./config.nice for reproducing runs of configure
APR_CONFIG_NICE(config.nice)
dnl Checks for programs.
AC_PROG_CC
AC_PROG_CPP
AC_PROG_INSTALL
AC_PROG_LN_S
AC_PROG_MAKE_SET
AC_CANONICAL_SYSTEM
AC_ARG_WITH(openssl,
[ --with-openssl=PATH Path to OpenSSL (eg. /usr/local/ssl)],
[if test "$withval" = "yes"; then
AC_MSG_ERROR('option --with-openssl requires a path')
else
fl_openssl_prefix=$withval
if test "x$fl_openssl_prefix" != "x" -a ! -d "$fl_openssl_prefix"; then
AC_MSG_ERROR('open --with-openssl requires a path to a directory')
fi
dnl XXX: We could probably do some better checking here, like looking
dnl for headers and libraries with an explicit path.
dnl Prefix these to the list, so they override env var settings
CPPFLAGS="-I${fl_openssl_prefix}/include $CPPFLAGS"
dnl We may need to also include $fl_openssl_prefix/openssl
LDFLAGS="-L${fl_openssl_prefix}/lib $LDFLAGS"
LIBTOOL_LDFLAGS="-R${fl_openssl_prefix}/lib"
fi])
dnl If the OS provides random support, use it. Otherwise, we'll be
dnl cheesy.
if test -c "/dev/random"; then
flood_has_devrand=1
else if test -c "/dev/urandom"; then
flood_has_devrand=1
else
flood_has_devrand=0
fi
fi
dnl SSL is disabled by default
dnl "Export and import restrictions in some countries require that it be
dnl disabled by default." See: <20011116151249.B1943@waka.ebuilt.net>
AC_ARG_ENABLE(ssl,
[ --enable-ssl Enable SSL support (disabled by default)],
[enable_ssl=$enableval],
[enable_ssl=no])
flood_has_openssl=0
if test "$enable_ssl" = "yes"; then
AC_CHECK_HEADERS(openssl/ssl.h openssl/opensslv.h,,
AC_MSG_ERROR('OpenSSL Headers not found at path specified'))
AC_TRY_COMPILE([#include <openssl/opensslv.h>],
[#if (OPENSSL_VERSION_NUMBER < 0x0090600fL)
#error You need OpenSSL version 0.9.6 or greater.
#endif],,
AC_MSG_ERROR('OpenSSL version 0.9.6 or greater required.'))
AC_CHECK_LIB(crypto, SHA1, LIBS="$LIBS -lcrypto")
dnl BIO_next only appears in newer versions of OpenSSL
dnl Since libssl relies on libcrypto, it *must* appear before -lcrypto.
AC_CHECK_LIB(ssl, BIO_next, LIBS="-lssl $LIBS")
flood_has_openssl=1
dnl Extra OpenSSL specific options
AC_ARG_WITH(capath,
[ --with-capath=PATH Path to a directory with c_rehash'd CA files used by OpenSSL (default $OPENSSL_PREFIX/certs)],
[if test "$withval" = "yes"; then AC_MSG_ERROR('option --with-capath requires a path'); else CAPATH="$withval"; fi],
[if test -d "$fl_openssl_prefix/certs"; then
CAPATH="$fl_openssl_prefix/certs"
else if test -d "$fl_openssl_prefix/ssl/certs"; then
CAPATH="$fl_openssl_prefix/ssl/certs"
else if test -d "/usr/lib/ssl/certs"; then
CAPATH="/usr/lib/ssl/certs"
else if test -d "/usr/share/ssl/certs"; then
CAPATH="/usr/share/ssl/certs"
else
AC_MSG_ERROR('option --with-capath must be specified')
fi
fi
fi
fi
])
fi
APR_FIND_APR(./apr,,,[1 0])
if test "$apr_found" = "no"; then
AC_MSG_ERROR([APR not found. Please read the documentation.])
fi
if test "$apr_found" = "reconfig"; then
APR_SUBDIR_CONFIG(apr, "$apache_apr_flags --prefix=$prefix")
FLOOD_SUBDIRS="$FLOOD_SUBDIRS apr"
fi
CFLAGS="$CFLAGS `$apr_config --cflags`"
CPPFLAGS="$CPPFLAGS `$apr_config --cppflags --includes`"
LDFLAGS="$LDFLAGS `$apr_config --ldflags`"
LIBTOOL="`$apr_config --apr-libtool`"
LIBTOOL_LIBS="$LIBTOOL_LIBS `$apr_config --link-libtool --libs`"
APR_CONFIG="$apr_config"
APR_FIND_APU(./apr-util,,,[1 0])
if test "$apu_found" = "no"; then
AC_MSG_ERROR([APR-util not found. Please read the documentation.])
fi
if test "$apu_found" = "reconfig"; then
dnl If we are configuring apr-util as source, APR must be source
dnl configured.
APR_SUBDIR_CONFIG(apr-util, "$apache_apr_flags --with-apr=../apr --prefix=$prefix")
FLOOD_SUBDIRS="$FLOOD_SUBDIRS apr-util"
fi
CPPFLAGS="$CPPFLAGS `$apu_config --includes`"
LIBTOOL_LDFLAGS="$LIBTOOL_LDFLAGS `$apu_config --ldflags`"
dnl Since libaprutil relies on libapr, it *must* appear before -lapr.
LIBTOOL_LIBS="`$apu_config --link-libtool --libs` $LIBTOOL_LIBS"
APU_CONFIG="$apu_config"
AC_CHECK_FUNC(strtoll, hasstrtoll="1", hasstrtoll="0")
AC_CHECK_FUNC(strtoq, hasstrtoq="1", hasstrtoq="0")
AC_CHECK_FUNC(rand, hasrand="1", hasrand="0")
AC_CHECK_FUNC(lrand48, hasrand48="1", hasrand48="0")
AC_CHECK_FUNC(random, hasrandom="1", hasrandom="0")
AC_MSG_CHECKING([random number generator to use])
prngrand="0"
prngrand48="0"
prngrandom="0"
if test "$hasrandom" = "1"; then
prngrandom="1"
AC_MSG_RESULT([random])
else if test "$hasrand48" = "1"; then
prngrand48="1"
AC_MSG_RESULT([rand48])
else if test "$hasrand" = "1"; then
prngrand="1"
AC_MSG_RESULT([rand])
else
AC_ERROR([No suitable PRNG detected])
fi
fi
fi
AC_SUBST(OPENSSL_PREFIX)
AC_SUBST(RANDFILE)
AC_SUBST(CAPATH)
AC_SUBST(FLOOD_SUBDIRS)
AC_SUBST(LIBTOOL)
AC_SUBST(LIBTOOL_LDFLAGS)
AC_SUBST(LIBTOOL_LIBS)
AC_SUBST(prngrand)
AC_SUBST(prngrand48)
AC_SUBST(prngrandom)
AC_SUBST(hasstrtoll)
AC_SUBST(hasstrtoq)
AC_SUBST(flood_has_openssl)
AC_SUBST(flood_has_devrand)
AC_SUBST(abs_builddir)
AC_SUBST(APR_CONFIG)
AC_SUBST(APU_CONFIG)
dnl Required for source compatibility with build/rules.mk of httpd-2.0
LTFLAGS="--silent"
LTCFLAGS=""
SHLTCFLAGS=""
AC_SUBST(LTFLAGS)
AC_SUBST(LTCFLAGS)
AC_SUBST(SHLTCFLAGS)
dnl Makefile outputs
dnl Note: There can only be one AC_OUTPUT command.
AC_OUTPUT(Makefile config.h build/rules.mk build/config_vars.mk)