blob: 96769105ef640bc8b22561bc126171a84fb1ea8b [file] [log] [blame]
AC_PREREQ(2.50)
dnl Autoconf. ick.
dnl Here's how to rebuild the "configure" script from this source file:
dnl
dnl cd spamc; autoconf; autoheader
AC_INIT
AC_ARG_ENABLE(ssl,
AC_HELP_STRING([--enable-ssl],
[build spamc with ssl support ('yes'/'no', default is 'no')]),
[sa_ssl_enabled=${enableval:-no}],
[sa_ssl_enabled=${enableval:-no}])
AC_CONFIG_SRCDIR([Makefile.PL])
AC_CONFIG_HEADER(config.h)
dnl ensure Makefile.PL has been run too
if test -f Makefile.PL -a ! -f Makefile ; then
perl Makefile.PL || exit 1
fi
AC_PROG_CC
# off: breaks gcc 3.3.x! doh
# if test "x$GCC" = "xyes" ; then
# CFLAGS="-Wall -Wextra -Wdeclaration-after-statement $CFLAGS"
# fi
AC_EXEEXT
dnl ----------------------------------------------------------------------
AC_HEADER_STDC
AC_CHECK_HEADERS(sys/time.h syslog.h unistd.h errno.h sys/errno.h)
AC_CHECK_HEADERS(time.h sysexits.h sys/socket.h netdb.h netinet/in.h)
AC_CHECK_HEADERS(pwd.h signal.h openssl/crypto.h zlib.h)
dnl AC_CHECK_HEADERS(getopt.h)
AC_C_CONST
AC_TYPE_OFF_T
AC_TYPE_PID_T
AC_TYPE_UID_T
AC_TYPE_SIZE_T
dnl ----------------------------------------------------------------------
AC_CACHE_CHECK([for SHUT_RD],
shutrd, [
AC_TRY_COMPILE([#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>],
[printf ("%d", SHUT_RD); return 0;],
[shutrd=yes],
[shutrd=no]),
])
if test $shutrd = yes ; then
AC_DEFINE(HAVE_SHUT_RD)
fi
dnl ----------------------------------------------------------------------
AC_CHECK_LIB(socket, socket)
SSLLIBS=""
SSLCFLAGS=""
if test yes = "$sa_ssl_enabled"; then
AC_CHECK_LIB(crypto, CRYPTO_malloc,[SSLLIBS="-lcrypto $SSLLIBS"])
AC_CHECK_LIB(ssl, SSL_CTX_free,[SSLLIBS="-lssl $SSLLIBS"],,-lcrypto)
# before defining SPAMC_SSL check that all its requirements are
# actually available
if test yes = "$ac_cv_header_openssl_crypto_h" && \
test yes = "$ac_cv_lib_crypto_CRYPTO_malloc" && \
test yes = "$ac_cv_lib_ssl_SSL_CTX_free"; then
SSLCFLAGS="-DSPAMC_SSL"
else
AC_MSG_ERROR([Cannot use SSL; libraries or header files are missing.
You may try using 'configure --disable-ssl'.])
fi
fi
AC_CHECK_LIB(inet, connect)
AC_CHECK_LIB(nsl, t_accept)
AC_CHECK_LIB(z, deflate)
AC_CHECK_LIB(dl, dlopen)
AC_CHECK_FUNCS(socket strdup strtod strtol snprintf shutdown)
dnl ----------------------------------------------------------------------
AC_CACHE_CHECK([for h_errno],
herrno, [
AC_TRY_COMPILE([#include <stdio.h>
#include <netdb.h>],
[printf ("%d", h_errno); return 0;],
[herrno=yes],
[herrno=no]),
])
if test $herrno = yes ; then
AC_DEFINE(HAVE_H_ERRNO)
fi
dnl ----------------------------------------------------------------------
dnl AC_CACHE_CHECK([for optarg],
dnl haveoptarg, [
dnl AC_TRY_COMPILE([#include <getopt.h>],
dnl [if (optarg == (char *) 0L) { return 0; } return 1;],
dnl [haveoptarg=yes],
dnl [haveoptarg=no]),
dnl ])
dnl if test $haveoptarg = yes ; then
dnl AC_DEFINE(HAVE_OPTARG)
dnl fi
dnl ----------------------------------------------------------------------
AC_CACHE_CHECK([for in_addr_t],
inaddrt, [
AC_TRY_COMPILE([#include <sys/types.h>
#include <netinet/in.h>],
[in_addr_t foo; return 0;],
[inaddrt=yes],
[inaddrt=no]),
])
if test $inaddrt = no ; then
AC_CHECK_TYPE(in_addr_t, unsigned long)
fi
dnl ----------------------------------------------------------------------
AC_CACHE_CHECK([for INADDR_NONE],
haveinaddrnone, [
AC_TRY_COMPILE([#include <sys/types.h>
#include <netinet/in.h>],
[in_addr_t foo = INADDR_NONE; return 0;],
[haveinaddrnone=yes],
[haveinaddrnone=no]),
])
if test $haveinaddrnone = yes ; then
AC_DEFINE(HAVE_INADDR_NONE)
fi
dnl ----------------------------------------------------------------------
AC_CACHE_CHECK([for EX__MAX],
haveexmax, [
AC_TRY_COMPILE([#ifdef HAVE_SYSEXITS_H
#include <sysexits.h>
#endif
#include <errno.h>],
[int foo = EX__MAX; return 0;],
[haveexmax=yes],
[haveexmax=no]),
])
if test $haveexmax = yes ; then
AC_DEFINE(HAVE_EX__MAX)
fi
dnl ----------------------------------------------------------------------
AC_CACHE_CHECK([for EAI_ADDRFAMILY],
haveitem, [
AC_TRY_COMPILE([#include <sys/types.h>
#include <sys/socket.h>
#include <netdb.h>],
[int foo = EAI_ADDRFAMILY; return 0;],
[haveitem=yes],
[haveitem=no]),
])
if test $haveitem = yes ; then
AC_DEFINE(HAVE_EAI_ADDRFAMILY, 1, [Define if EAI_ADDRFAMILY is valid.])
fi
AC_CACHE_CHECK([for EAI_SYSTEM],
haveitem, [
AC_TRY_COMPILE([#include <sys/types.h>
#include <sys/socket.h>
#include <netdb.h>],
[int foo = EAI_SYSTEM; return 0;],
[haveitem=yes],
[haveitem=no]),
])
if test $haveitem = yes ; then
AC_DEFINE(HAVE_EAI_SYSTEM, 1, [Define if EAI_SYSTEM is valid.])
fi
AC_CACHE_CHECK([for EAI_NODATA],
haveitem, [
AC_TRY_COMPILE([#include <sys/types.h>
#include <sys/socket.h>
#include <netdb.h>],
[int foo = EAI_NODATA; return 0;],
[haveitem=yes],
[haveitem=no]),
])
if test $haveitem = yes ; then
AC_DEFINE(HAVE_EAI_NODATA, 1, [Define if EAI_NODATA is valid.])
fi
dnl ----------------------------------------------------------------------
# we cheat, since we *know* we have Perl installed ;)
CCCDLFLAGS=`perl -e 'use Config; print $Config::Config{cccdlflags}'`
LDDLFLAGS=`perl -e 'use Config; print $Config::Config{lddlflags}'`
AC_SUBST([SSLLIBS])
AC_SUBST([SSLCFLAGS])
AC_SUBST(CCCDLFLAGS)
AC_SUBST(LDDLFLAGS)
AC_SUBST(HAVE_SHUT_RD)
AC_CONFIG_FILES([Makefile])
AC_CONFIG_FILES([spamc.h])
AC_OUTPUT