AC_INIT([ClamCour],0.3.8,tony@becrux.com) AC_COPYRIGHT([Copyright 2006 BeCrux]) AC_CANONICAL_HOST AC_CONFIG_SRCDIR(src/main.cpp) AM_INIT_AUTOMAKE(clamcour,0.3.8) AM_CONFIG_HEADER(config.h) AC_PREFIX_DEFAULT(/usr/lib/courier) AM_SANITY_CHECK AM_MAINTAINER_MODE MAJOR_VERSION=0 MINOR_VERSION=3 RELEASE_VERSION=8 VERSION="$MAJOR_VERSION.$MINOR_VERSION.$RELEASE_VERSION" dnl checks for programs needed to build. CXXFLAGS="-pedantic" AC_PROG_CXX AC_ISC_POSIX AC_LANG_CPLUSPLUS AC_PROG_INSTALL AC_PROG_MAKE_SET AC_PROG_LN_S AC_PROG_AWK AM_PROG_LIBTOOL dnl debug check AC_ARG_ENABLE(debug, [ --enable-debug enable debug (default disabled)], [ CXXFLAGS="$CXXFLAGS -g" ], [ CXXFLAGS="$CXXFLAGS -pipe -Wall -O3" ]) dnl path check AC_ARG_WITH(clamav-config,[ --with-clamav-config=DIR clamav-config binary path],[clamavconfigdir=$withval],[clamavconfigdir=""]) AC_ARG_WITH(courier-config,[ --with-courier-config=DIR courier-config binary path],[courierconfigdir=$withval],[courierconfigdir=""]) AC_ARG_WITH(bz2-dir,[ --with-bz2=DIR bzip2 compression support],[bz2dir=$withval],[bz2dir=""]) AC_ARG_WITH(gz-dir,[ --with-zlib=DIR zlib compression support],[zlibdir=$withval],[zlibdir=""]) dnl checking mkdir -p AC_MSG_CHECKING([whether mkdir accepts -p]) if (mkdir -p config.tmpdir/p && mkdir -p config.tmpdir/p 2>&1) > /dev/null; then AC_MSG_RESULT(yes) MKDIR="mkdir -p" else AC_MSG_RESULT(no) MKDIR=mkdir fi rm -rf config.tmpdir dnl check for POSIX Threads library echo -e $'\n'$'\n'POSIX Threads ACX_PTHREAD([ LDFLAGS="$LDFLAGS $PTHREAD_LIBS" CXXFLAGS="$CXXFLAGS $PTHREAD_CFLAGS" ]) AC_CHECK_HEADERS(pthread.h) AC_CHECK_FUNCS(pthread_create) dnl I/O functions echo -e $'\n'$'\n'I/O functions AC_HEADER_STDC AC_HEADER_STAT AC_CHECK_HEADERS(stdio.h) AC_CHECK_HEADERS(sys/select.h) AC_CHECK_FUNCS(close unlink fopen fscanf fprintf fclose fgets fread fwrite ferror rename sprintf putenv chmod open read write popen pclose mkfifo umask stat access select,[have_io_funcs=yes],AC_MSG_ERROR([required function missing])) AC_CHECK_FUNCS(fsync fdatasync) dnl Signal functions echo -e $'\n'$'\n'Signal functions AC_HEADER_STDC AC_HEADER_STAT AC_CHECK_HEADERS(signal.h) AC_CHECK_FUNCS(sigemptyset sigaddset sigwait,[have_sig_funcs=yes],AC_MSG_ERROR([required function missing])) dnl string/char functions echo -e $'\n'$'\n'String functions AC_CHECK_HEADERS(string.h) AC_CHECK_HEADERS(ctype.h) AC_CHECK_FUNCS(strcpy strlen strcat memset strcmp strncmp toupper,[have_str_funcs=yes],AC_MSG_ERROR([required function missing])) dnl socket functions echo -e $'\n'$'\n'Socket functions AC_CHECK_HEADERS(sys/socket.h sys/un.h) ETR_SOCKET_NSL LDFLAGS="$LDFLAGS $ETR_SOCKET_LIBS" AC_CHECK_FUNCS(socket bind listen accept shutdown,[have_net_funcs=yes],AC_MSG_ERROR([required function missing])) TYPE_SOCKLEN_T AC_CHECK_MEMBER([struct sockaddr_un.sun_len],AC_DEFINE([HAVE_SOCKADDR_LEN],[1],[sun_len member in struct sockaddr_un present]),,[ #include #include #include ]) dnl log functions echo -e $'\n'$'\n'System log functions AC_CHECK_HEADERS(syslog.h) AC_CHECK_FUNCS(openlog syslog closelog,[have_log_funcs=yes],AC_MSG_ERROR([required function missing])) dnl other functions echo -e $'\n'$'\n'Time functions AC_HEADER_TIME AC_STRUCT_TM AC_CHECK_FUNCS(localtime_r strftime,[have_time_funcs=yes],AC_MSG_ERROR([required function missing])) AC_CHECK_HEADERS(unistd.h) AC_CHECK_HEADERS(limits.h) AC_CHECK_FUNCS(sysconf,[have_sysconf_func=yes],[have_sysconf_func=no]) AC_TRY_RUN([ #include #include int main(void) { int p = _SC_LINE_MAX; return 0; }], AC_DEFINE_UNQUOTED(BUF_LEN,sysconf(_SC_LINE_MAX),POSIX buffer length), AC_DEFINE_UNQUOTED(BUF_LEN,2048,my buffer length)) AC_TRY_RUN([ #include #include int main(void) { int p = _SC_CLK_TCK; return 0; }], AC_DEFINE_UNQUOTED(TICK_LEN,sysconf(_SC_CLK_TCK),POSIX clock duration), AC_DEFINE_UNQUOTED(TICK_LEN,0,my clock duration)) dnl bzip2 section echo -e $'\n'$'\n'BZip2 support if test "$bz2dir" != "" ; then CXXFLAGS="$CXXFLAGS $bz2dir/include" CXXCPP="$CXXCPP $CXXFLAGS" $LDFLAGS="$LDFLAGS $bz2dir/lib" fi AC_CHECK_HEADERS(bzlib.h) AC_CHECK_LIB(bz2,BZ2_bzWriteOpen,[have_bz2=yes],[have_bz2=no],$LDFLAGS) if test "$have_bz2" = "yes" ; then AC_DEFINE(HAVE_BZ2,1,BZ2 library present) fi dnl gzip section echo -e $'\n'$'\n'GZip support if test "$zlibdir" != "" ; then CXXFLAGS="$CXXFLAGS $zlibdir/include" CXXCPP="$CXXCPP $CXXFLAGS" $LDFLAGS="$LDFLAGS $zlibdir/lib" fi AC_CHECK_HEADERS(zlib.h) AC_CHECK_LIB(z,gzopen,[have_zlib=yes],[have_zlib=no],$LDFLAGS) if test "$have_zlib" = "yes" ; then AC_DEFINE(HAVE_ZLIB,1,ZLIB library present) fi dnl clamav section echo -e $'\n'$'\n'LibClamAV support if test "$clamavconfigdir" != "" ; then AC_CHECK_FILE(/$clamavconfigdir/clamav-config,clamavconfigdir="$clamavconfigdir/clamav-config",AC_MSG_ERROR([Cannot find clamav-config])) else AC_CHECK_FILE(/usr/bin/clamav-config,clamavconfigdir="/usr/bin/clamav-config", AC_CHECK_FILE(/usr/local/bin/courier-config,clamavconfigdir="/usr/local/bin/clamav-config", AC_CHECK_FILE(/usr/clamav/bin/clamav-config,clamavconfigdir="/usr/clamav/bin/clamav-config", AC_CHECK_FILE(/usr/local/clamav/bin/clamav-config,clamavconfigdir="/usr/local/clamav/bin/clamav-config","")))) fi if test "$clamavconfigdir" != "" ; then lclam_cflags="-I`$clamavconfigdir --prefix`/include" lclam_lflags=`$clamavconfigdir --libs` CXXFLAGS="$CXXFLAGS $lclam_cflags" CXXCPP="$CXXCPP $CXXFLAGS" LDFLAGS="$LDFLAGS $lclam_lflags -lclamav" LIBS="$LDFLAGS" AC_CHECK_HEADERS(clamav.h) AC_CHECK_LIB(clamav,cl_retdbdir,[have_clamav_funcs=yes],AC_MSG_ERROR([Could not link to libclamav.]),$LDFLAGS) else AC_MSG_ERROR([Cannot find clamav-config]) fi dnl courier-config section echo -e $'\n'$'\n'Courier configuration if test "$courierconfigdir" != "" ; then AC_CHECK_FILE($courierconfigdir/courier-config,courierconfigdir="$courierconfigdir/courier-config",AC_MSG_ERROR([Cannot find courier-config])) else AC_CHECK_FILE(/usr/bin/courier-config,courierconfigdir="/usr/bin/courier-config", AC_CHECK_FILE(/usr/local/bin/courier-config,courierconfigdir="/usr/local/bin/courier-config", AC_CHECK_FILE(/usr/lib/courier/bin/courier-config,courierconfigdir="/usr/lib/courier/bin/courier-config", AC_CHECK_FILE(/usr/local/lib/courier/bin/courier-config,courierconfigdir="/usr/local/lib/courier/bin/courier-config","")))) fi if test "$courierconfigdir" != "" ; then user="`$courierconfigdir | $AWK -F '=' '/^mailuser=.*$/ {print $2}'`" group="`$courierconfigdir | $AWK -F '=' '/^mailgroup=.*$/ {print $2}'`" socketdir="`$courierconfigdir | $AWK -F '=' '/^localstatedir=.*$/ {print $2}'`/allfilters" filterdir="`$courierconfigdir | $AWK -F '=' '/^libexecdir=.*$/ {print $2}'`/filters" clamctempdir="`$courierconfigdir | $AWK -F '=' '/^localstatedir=.*$/ {print $2}'`/tmp" clamvardir="`$courierconfigdir | $AWK -F '=' '/^localstatedir=.*$/ {print $2}'`" couretcdir="`$courierconfigdir | $AWK -F '=' '/^sysconfdir=.*$/ {print $2}'`" courmandir="`$courierconfigdir | $AWK -F '=' '/^prefix=.*$/ {print $2}'`/man" courbindir="`$courierconfigdir | $AWK -F '=' '/^bindir=.*$/ {print $2}'`" mailuser="`$courierconfigdir | $AWK -F '=' '/^mailuser=.*$/ {print $2}'`" mailgroup="`$courierconfigdir | $AWK -F '=' '/^mailgroup=.*$/ {print $2}'`" else AC_MSG_ERROR([Cannot find courier-config]) fi AC_CHECK_PROG(sendmail,sendmail,yes,no,$courbindir) if test "$sendmail" == "no"; then AC_MSG_ERROR([Cannot find sendmail Courier binary]) fi AC_DEFINE_UNQUOTED(QUARANTINE_FILE,"$couretcdir/clamcour/quarantine",ClamCour quarantine configuration file) AC_DEFINE_UNQUOTED(MESSAGE_FILE,"$couretcdir/clamcour/virmessage",ClamCour virus message file) AC_DEFINE_UNQUOTED(BZ2_FILE,"$couretcdir/clamcour/bz2_compression",ClamCour BZip2 compression file) AC_DEFINE_UNQUOTED(GZ_FILE,"$couretcdir/clamcour/gz_compression",ClamCour GZip compression file) AC_DEFINE_UNQUOTED(SIZE_LIMIT_FILE,"$couretcdir/clamcour/sizelimit",ClamCour BZip2 compression file) AC_DEFINE_UNQUOTED(PID_FILE,"$clamctempdir/clamcour.pid",ClamCour PID file) AC_DEFINE_UNQUOTED(COURIER_FILTER_PATH,"$socketdir",Courier filter dir) AC_DEFINE_UNQUOTED(CLAMCOUR_CMD_FIFO,"/tmp/clamcour.fifo",ClamCour command fifo) AC_DEFINE_UNQUOTED(CLAM_TMP_VAR,"TMPDIR=$clamctempdir",ClamAV temporary dir) AC_DEFINE_UNQUOTED(COURIER_SENDMAIL,"$courbindir/sendmail",Courier sendmail binary) AC_DEFINE_UNQUOTED(MAX_QUEUE_SIZE,50,Courier message queue dimension) CXXFLAGS="$CXXFLAGS" INSTALL="$INSTALL -o $user -g $group" bindir="$filterdir" mandir="$courmandir" sysconfdir="$couretcdir/clamcour" AC_SUBST(couretcdir) AC_SUBST(mailuser) AC_SUBST(mailgroup) dnl ================================================================= dnl Always defined dnl ================================================================= AC_DEFINE(__MT__,1, [Always define this, for thread safety on some platforms.]) AC_OUTPUT(Makefile src/Makefile)