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 #include ], [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_lock,[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_lock" && \ 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 ], [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 ], 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 #include ], [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 #include ], [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 #endif #include ], [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 #include #include ], [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 #include #include ], [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 #include #include ], [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