ClamAV is an open source (GPLv2) anti-virus toolkit.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
clamav/clamav-devel/configure.in

1010 lines
30 KiB

dnl
dnl Copyright (C) 2002 - 2005 Tomasz Kojm <tkojm@clamav.net>
dnl gethostbyname_r and readdir_r checks (c) COPYRIGHT MIT 1995
dnl
dnl This program is free software; you can redistribute it and/or modify
dnl it under the terms of the GNU General Public License as published by
dnl the Free Software Foundation; either version 2 of the License, or
dnl (at your option) any later version.
dnl
dnl This program is distributed in the hope that it will be useful,
dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
dnl GNU General Public License for more details.
dnl
dnl You should have received a copy of the GNU General Public License
dnl along with this program; if not, write to the Free Software
dnl Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
AC_INIT(clamscan/clamscan.c)
AC_CREATE_TARGET_H(target.h)
AM_INIT_AUTOMAKE(clamav, "devel-`date +%Y%m%d`")
AM_CONFIG_HEADER(clamav-config.h)
LC_CURRENT=1
LC_REVISION=10
LC_AGE=0
LIBCLAMAV_VERSION="$LC_CURRENT":"$LC_REVISION":"$LC_AGE"
AC_SUBST(LIBCLAMAV_VERSION)
AC_PROG_AWK
AC_PROG_CC
AC_PROG_INSTALL
AC_PROG_LN_S
AC_PROG_MAKE_SET
AC_PROG_LIBTOOL
AC_DEFINE(SCANBUFF, 131072, [scan buffer size])
AC_DEFINE(FILEBUFF, 8192, [file i/o buffer size])
AC_HEADER_STDC
AC_CHECK_HEADERS(stdint.h unistd.h sys/int_types.h dlfcn.h inttypes.h sys/inttypes.h memory.h ndir.h stdlib.h strings.h string.h sys/mman.h sys/param.h sys/stat.h sys/types.h malloc.h poll.h regex.h limits.h sys/filio.h sys/uio.h)
AC_CHECK_HEADER(syslog.h,AC_DEFINE(USE_SYSLOG,1,[use syslog]),)
AC_TYPE_OFF_T
AC_COMPILE_CHECK_SIZEOF(short)
AC_COMPILE_CHECK_SIZEOF(int)
AC_COMPILE_CHECK_SIZEOF(long)
AC_COMPILE_CHECK_SIZEOF(long long)
AC_CHECK_LIB(socket, bind, [LIBS="$LIBS -lsocket"; CLAMAV_MILTER_LIBS="$CLAMAV_MILTER_LIBS -lsocket"; LDFLAGS="$LDFLAGS -lsocket"; FRESHCLAM_LIBS="$FRESHCLAM_LIBS -lsocket"; CLAMD_LIBS="$CLAMD_LIBS -lsocket"])
AC_CHECK_LIB(nsl, gethostent, [LIBS="$LIBS -lnsl"; CLAMAV_MILTER_LIBS="$CLAMAV_MILTER_LIBS -lnsl"; LDFLAGS="$LDFLAGS -lnsl"; FRESHCLAM_LIBS="$FRESHCLAM_LIBS -lnsl"; CLAMD_LIBS="$CLAMD_LIBS -lnsl"])
AC_CHECK_FUNCS(poll setsid memcpy snprintf vsnprintf strerror_r strlcpy strlcat inet_ntop setgroups initgroups ctime_r)
AC_FUNC_MMAP
AC_FUNC_FSEEKO
dnl Check for broken snprintf (code by Phil Oleson <oz*nixil.net>)
if test "x$ac_cv_func_snprintf" = "xyes" ; then
AC_MSG_CHECKING([whether snprintf correctly terminates long strings])
AC_TRY_RUN(
[
#include <stdio.h>
int main(void){char b[5];snprintf(b,5,"123456789");return(b[4]!='\0');}
],
[AC_MSG_RESULT(yes)],
[
AC_MSG_RESULT(no)
AC_DEFINE(BROKEN_SNPRINTF,1,[Define if your snprintf is busted])
AC_MSG_WARN([****** Your snprintf() function is broken, complain to your vendor])
]
)
fi
have_pthreads=no
AC_CHECK_HEADER(pthread.h,[have_pthreads=yes],)
AM_MAINTAINER_MODE
dnl Check for zlib
AC_MSG_CHECKING(for zlib installation)
AC_ARG_WITH(zlib,
[ --with-zlib=DIR path to directory containing zlib library (default=
/usr/local or /usr if not found in /usr/local)],
[
if test "$withval"; then
ZLIB_HOME="$withval"
AC_MSG_RESULT(using $ZLIB_HOME)
fi
], [
ZLIB_HOME=/usr/local
if test ! -f "$ZLIB_HOME/include/zlib.h"
then
ZLIB_HOME=/usr
fi
AC_MSG_RESULT($ZLIB_HOME)
])
AC_ARG_ENABLE(zlib-vcheck,
[ --disable-zlib-vcheck do not check for buggy zlib version ],
zlib_check=$enableval, zlib_check="yes")
if test ! -f "$ZLIB_HOME/include/zlib.h"
then
AC_MSG_ERROR(Please install zlib and zlib-devel packages)
else
vuln=`grep "ZLIB_VERSION \"1.2.0" $ZLIB_HOME/include/zlib.h`
if test -z "$vuln"; then
vuln=`grep "ZLIB_VERSION \"1.2.1" $ZLIB_HOME/include/zlib.h`
fi
if test -n "$vuln"; then
if test "$zlib_check" = "yes"; then
AC_MSG_ERROR(The installed zlib version may contain a security bug. Please upgrade to 1.2.2 or later: http://www.zlib.net. You can omit this check with --disable-zlib-vcheck but DO NOT REPORT any stability issues then!)
else
AC_MSG_WARN([****** This ClamAV installation may be linked against])
AC_MSG_WARN([****** a broken zlib version. Please DO NOT report any])
AC_MSG_WARN([****** stability problems to the ClamAV developers!])
fi
fi
if test "$ZLIB_HOME" != "/usr"; then
LDFLAGS="$LDFLAGS -L$ZLIB_HOME/lib"
CPPFLAGS="$CPPFLAGS -I$ZLIB_HOME/include"
AC_CHECK_LIB(z, inflateEnd, [LIBCLAMAV_LIBS="$LIBCLAMAV_LIBS -L$ZLIB_HOME/lib -lz"; AC_DEFINE(HAVE_ZLIB_H,1,zlib installed)], AC_MSG_ERROR(Please install zlib and zlib-devel packages))
else
AC_CHECK_LIB(z, inflateEnd, [LIBCLAMAV_LIBS="$LIBCLAMAV_LIBS -lz"; AC_DEFINE(HAVE_ZLIB_H,1,zlib installed)], AC_MSG_ERROR(Please install zlib and zlib-devel packages))
fi
fi
AC_ARG_ENABLE(bzip2,
[ --disable-bzip2 disable bzip2 support],
want_bzip2=$enableval, want_bzip2="yes")
if test "$want_bzip2" = "yes"
then
AC_CHECK_LIB(bz2, bzReadOpen, AC_DEFINE(NOBZ2PREFIX,1,bzip funtions do not have bz2 prefix),)
AC_CHECK_HEADER(bzlib.h,[LIBCLAMAV_LIBS="$LIBCLAMAV_LIBS -lbz2"; AC_DEFINE(HAVE_BZLIB_H,1,have bzip2)], AC_MSG_WARN([****** bzip2 support disabled]))
fi
AC_ARG_ENABLE(hwaccel,
[ --disable-hwaccel disable support for hardware acceleration],
want_hwaccel=$enableval, want_hwaccel="yes")
if test "$want_hwaccel" = "yes"
then
AC_CHECK_LIB(sn_sigscan, sn_sigscan_initdb, AC_DEFINE(HAVE_HWACCEL,1,hardware acceleration),)
fi
AC_ARG_ENABLE(dns,
AC_HELP_STRING([--disable-dns], [disable support for database verification through DNS]),
[want_dns=$enableval], [want_dns=yes]
)
if test $want_dns = yes; then
AC_CHECK_LIB(resolv, __dn_expand, resolv_lib="-lresolv",)
if test -z "$resolv_lib"; then
AC_CHECK_LIB(resolv, dn_expand, resolv_lib="-lresolv",)
fi
AC_CHECK_HEADER(resolv.h,[FRESHCLAM_LIBS="$FRESHCLAM_LIBS $resolv_lib"; AC_DEFINE(HAVE_RESOLV_H,1,have resolv.h)], AC_MSG_WARN([****** DNS support disabled]))
fi
AC_ARG_ENABLE(clamuko,
[ --disable-clamuko disable clamuko support (Linux, DragonFly and FreeBSD only)],
want_clamuko=$enableval, want_clamuko="yes")
AC_FUNC_SETPGRP
AC_ARG_ENABLE(milter,
[ --enable-milter build clamav-milter],
have_milter=$enableval, have_milter="no")
if test "$have_milter" = "yes"; then
sendmailprog=no
AC_ARG_WITH(sendmail,
[ --with-sendmail=PATH specify location of Sendmail binary (default=auto find)],
sendmailprog=$with_sendmail, sendmailprog=no)
if test "$sendmailprog" = "no" ; then
AC_PATH_PROG(sendmailprog, sendmail, no, $PATH:/sbin:/usr/sbin:/usr/lib:/usr/libexec)
fi
AC_DEFINE_UNQUOTED(SENDMAIL_BIN, "$sendmailprog", [location of Sendmail binary])
sendmailver=`$sendmailprog -d0 < /dev/null | head -1 | awk '{print $2}'`
if test -n "$sendmailver"; then
sendmailver_a=`echo $sendmailver | awk -F. '{printf $1}'`
sendmailver_b=`echo $sendmailver | awk -F. '{printf $2}'`
sendmailver_c=`echo $sendmailver | awk -F. '{printf $3}'`
AC_DEFINE_UNQUOTED(SENDMAIL_VERSION_A, $sendmailver_a, [major version of Sendmail])
AC_DEFINE_UNQUOTED(SENDMAIL_VERSION_B, $sendmailver_b, [minor version of Sendmail])
AC_DEFINE_UNQUOTED(SENDMAIL_VERSION_C, $sendmailver_c, [subversion of Sendmail])
fi
fi
AC_ARG_ENABLE(dsig,
[ --disable-dsig disable support for digital signatures],
want_dsig=$enableval, want_dsig="yes")
if test "$want_dsig" = "yes"
then
AC_CHECK_LIB(gmp, __gmpz_init, [LIBCLAMAV_LIBS="$LIBCLAMAV_LIBS -lgmp"; AC_DEFINE(HAVE_GMP,1,have gmp installed)], [AC_CHECK_LIB(gmp, mpz_init, [LIBCLAMAV_LIBS="$LIBCLAMAV_LIBS -lgmp"; AC_DEFINE(HAVE_GMP,1,have gmp installed)], AC_MSG_WARN([****** GNU MP 2 or newer NOT FOUND - digital signature support will be disabled !]); want_dsig="no")])
fi
dnl libcurl
AC_ARG_WITH(libcurl,
[ --with-libcurl support URLs downloading with libcurl (default=auto)],
[ case "$withval" in
yes|no) lcurl="$withval" ;;
*) AC_MSG_ERROR([--with-libcurl does not take an argument]) ;;
esac],
[ lcurl=auto ])
dnl Based on http://curl.signal42.com/libcurl/using/autoconf.html
if test "$lcurl" != "no"
then
my_cv_curl_vers=NONE
dnl check is the plain-text version of the required version
check="7.10.0"
dnl check_hex must be UPPERCASE if any hex letters are present
check_hex="070A00"
AC_MSG_CHECKING([for curl >= $check])
if eval curl-config --version 2>/dev/null >/dev/null; then
ver=`curl-config --version | sed -e "s/libcurl //g"`
hex_ver=`curl-config --vernum | tr 'a-f' 'A-F'`
fail=`echo "ibase=16; if($hex_ver<$check_hex) 1" | bc`
if test x$fail != x1; then
curl_libs=`curl-config --libs`
# openssl libs are required to link libcurl
openssl_libs="`pkg-config --libs openssl`"
curl_flags=`curl-config --cflags`
LIBCLAMAV_LIBS="$LIBCLAMAV_LIBS $curl_libs $openssl_libs"
CPPFLAGS="$CPPFLAGS -I$ZLIB_HOME/include $curl_flags"
my_cv_curl_vers="$ver"
AC_MSG_RESULT([$my_cv_curl_vers])
AC_DEFINE(WITH_CURL,1,use libcurl in mbox code)
else
AC_MSG_RESULT(FAILED)
AC_MSG_WARN([$ver is too old. Need version $check or higher.])
fi
else
AC_MSG_RESULT(FAILED)
AC_MSG_WARN([curl-config was not found])
fi
fi
AC_ARG_ENABLE(pthreads,
[ --disable-pthreads disable POSIX threads support],
have_pthreads=$enableval,)
AC_ARG_ENABLE(cr,
[ --disable-cr don't link with C reentrant library (BSD) ],
use_cr=$enableval,)
AC_ARG_ENABLE(id-check,
[ --enable-id-check use id utility instead of /etc/passwd parsing],
use_id=$enableval, use_id="no")
AC_ARG_ENABLE(yp-check,
[ --enable-yp-check use ypmatch utility instead of /etc/passwd parsing],
use_yp=$enableval, use_yp="no")
AC_ARG_WITH(user,
[ --with-user=uid name of the clamav user (default=clamav)],
clamav_user="$withval", clamav_user="clamav")
AC_ARG_WITH(group,
[ --with-group=gid name of the clamav group (default=clamav)],
clamav_group="$withval", clamav_group="clamav")
AC_DEFINE_UNQUOTED(CLAMAVUSER,"$clamav_user",[name of the clamav user])
AC_DEFINE_UNQUOTED(CLAMAVGROUP,"$clamav_group",[name of the clamav group])
AC_ARG_ENABLE(clamav,
[ --disable-clamav disable test for clamav user/group],
test_clamav=$enableval, test_clamav=yes)
AC_ARG_ENABLE(debug,
[ --enable-debug enable debug code],
enable_debug=$enableval, enable_debug="no")
if test "$enable_debug" = "yes"; then
AC_DEFINE(CL_DEBUG,1,[enable debugging])
fi
AC_ARG_ENABLE(bigstack,
[ --enable-bigstack increase thread stack size],
enable_bigstack=$enableval, enable_bigstack="no")
if test "$enable_bigstack" = "yes"; then
AC_DEFINE(C_BIGSTACK,1,[Increase thread stack size.])
fi
AC_ARG_WITH(dbdir,
[ --with-dbdir=path path to virus database directory],
db_dir="$withval", db_dir="_default_")
AC_ARG_WITH(db1,
[ --with-db1=name name of the main database (default=main.cvd)],
AC_DEFINE_UNQUOTED(DB1NAME,"$withval",[Name of the main database]), AC_DEFINE(DB1NAME, "main.cvd",[Name of the main database]))
AC_ARG_WITH(db2,
[ --with-db2=name name of the daily database (default=daily.cvd)],
AC_DEFINE_UNQUOTED(DB2NAME,"$withval",[Name of the daily database]), AC_DEFINE(DB2NAME, "daily.cvd",[Name of the daily database]))
dnl I had problems with $pkgdatadir thus these funny checks
if test "$db_dir" = "_default_"
then
if test "$prefix" = "NONE"
then
db_dir="$ac_default_prefix/share/clamav"
else
db_dir="$prefix/share/clamav"
fi
fi
AC_DEFINE_UNQUOTED(DATADIR,"$db_dir", [Path to virus database directory.])
DBDIR="$db_dir"
AC_SUBST(DBDIR)
dnl configure config directory
cfg_dir=`echo $sysconfdir | grep prefix`
if test -n "$cfg_dir"; then
if test "$prefix" = "NONE"
then
cfg_dir="$ac_default_prefix/etc"
else
cfg_dir="$prefix/etc"
fi
else
cfg_dir="$sysconfdir"
fi
CFGDIR=$cfg_dir
AC_SUBST(CFGDIR)
AC_DEFINE_UNQUOTED(CONFDIR,"$cfg_dir",[where to look for the config file])
dnl check for in_port_t definition
AC_TRY_RUN([
#include <sys/types.h>
#include <netinet/in.h>
int main(int argc, char **argv) { in_port_t pt; pt = 0; return pt; }
], AC_DEFINE(HAVE_IN_PORT_T,1,[in_port_t is defined]), AC_MSG_RESULT(in_port_t is not defined))
dnl check for in_addr_t definition
AC_TRY_RUN([
#include <sys/types.h>
#include <netinet/in.h>
int main(int argc, char **argv) { in_addr_t pt; pt = 0; return pt; }
], AC_DEFINE(HAVE_IN_ADDR_T,1,[in_addr_t is defined]), AC_MSG_RESULT(in_addr_t is not defined))
case "$target_os" in
linux*)
AC_DEFINE(C_LINUX,1,[target is linux])
if test "$have_pthreads" = "yes"; then
LIBCLAMAV_LIBS="$LIBCLAMAV_LIBS -lpthread"
TH_SAFE="-thread-safe"
AC_DEFINE(CL_THREAD_SAFE,1,[thread safe])
AC_DEFINE(_REENTRANT,1,[thread safe])
CLAMD_LIBS="$CLAMD_LIBS -lpthread"
CLAMAV_MILTER_LIBS="$CLAMAV_MILTER_LIBS -lpthread"
if test "$want_clamuko" = "yes"; then
AC_DEFINE(CLAMUKO,1,[enable clamuko])
fi
CLAMSCAN_LIBS="$CLAMSCAN_LIBS -lpthread"
fi
case `uname -r` in
1.*|2.0.*)
AC_DEFINE(INCOMPLETE_CMSG,1,[Early Linux doesn't set cmsg fields])
;;
esac
;;
cygwin*)
AC_DEFINE(C_CYGWIN,1,[os is cygwin])
if test "$test_clamav" = "yes"; then
if test ! -r /etc/passwd; then
test_clamav="no"
fi
fi
if test "$have_pthreads" = "yes"; then
LIBCLAMAV_LIBS="$LIBCLAMAV_LIBS -lpthread"
TH_SAFE="-thread-safe"
AC_DEFINE(CL_THREAD_SAFE,1,[thread safe])
AC_DEFINE(_REENTRANT,1,[thread safe])
fi
use_gethostbyname_r="no"
;;
solaris*)
FRESHCLAM_LIBS="$FRESHCLAM_LIBS -lresolv"
if test "$have_pthreads" = "yes"; then
LIBCLAMAV_LIBS="$LIBCLAMAV_LIBS -lpthread"
CLAMD_LIBS="$CLAMD_LIBS -lpthread -lresolv"
CLAMAV_MILTER_LIBS="$CLAMAV_MILTER_LIBS -lpthread -lresolv"
TH_SAFE="-thread-safe"
AC_DEFINE(CL_THREAD_SAFE,1,[thread safe])
AC_DEFINE(_REENTRANT,1,[thread safe])
fi
AC_DEFINE(C_SOLARIS,1,[os is solaris])
;;
freebsd*)
if test "$have_pthreads" = "yes"; then
LIBCLAMAV_LIBS="$LIBCLAMAV_LIBS -pthread -lc_r"
CLAMD_LIBS="$CLAMD_LIBS -pthread -lc_r"
CLAMAV_MILTER_LIBS="$CLAMAV_MILTER_LIBS -pthread -lc_r"
TH_SAFE="-thread-safe"
AC_DEFINE(CL_THREAD_SAFE,1,[thread safe])
AC_DEFINE(_REENTRANT,1,[thread safe])
if test "$want_clamuko" = "yes"; then
AC_DEFINE(CLAMUKO,1,[enable clamuko])
fi
fi
AC_DEFINE(C_BSD,1,[os is freebsd])
use_gethostbyname_r="no"
;;
dragonfly*)
if test "$have_pthreads" = "yes"; then
LIBCLAMAV_LIBS="$LIBCLAMAV_LIBS -pthread"
CLAMD_LIBS="$CLAMD_LIBS -pthread"
CLAMAV_MILTER_LIBS="$CLAMAV_MILTER_LIBS -pthread"
TH_SAFE="-thread-safe"
AC_DEFINE(CL_THREAD_SAFE,1,[thread safe])
AC_DEFINE(_REENTRANT,1,[thread safe])
if test "$want_clamuko" = "yes"; then
AC_DEFINE(CLAMUKO,1,[enable clamuko])
fi
fi
AC_DEFINE(C_BSD,1,[os is dragonfly])
use_gethostbyname_r="no"
;;
openbsd*)
if test "$have_pthreads" = "yes"; then
LIBCLAMAV_LIBS="$LIBCLAMAV_LIBS -pthread"
if test "$use_cr" = "no"; then
CLAMD_LIBS="$CLAMD_LIBS -pthread"
CLAMAV_MILTER_LIBS="$CLAMAV_MILTER_LIBS -pthread"
else
CLAMD_LIBS="$CLAMD_LIBS -pthread -lc_r"
CLAMAV_MILTER_LIBS="$CLAMAV_MILTER_LIBS -pthread -lc_r"
fi
TH_SAFE="-thread-safe"
AC_DEFINE(CL_THREAD_SAFE,1,[thread safe])
AC_DEFINE(_REENTRANT,1,[thread safe])
fi
AC_DEFINE(C_BSD,1,[os is OpenBSD])
use_gethostbyname_r="no"
;;
bsdi*)
if test "$have_pthreads" = "yes"; then
LIBCLAMAV_LIBS="$LIBCLAMAV_LIBS -pthread"
CLAMD_LIBS="$CLAMD_LIBS -pthread"
CLAMAV_MILTER_LIBS="$CLAMAV_MILTER_LIBS -pthread"
TH_SAFE="-thread-safe"
AC_DEFINE(CL_THREAD_SAFE,1,[thread safe])
AC_DEFINE(_REENTRANT,1,[thread safe])
fi
AC_DEFINE(C_BSD,1,[os is BSDI BSD/OS])
use_gethostbyname_r="no"
;;
netbsd*)
if test "$have_pthreads" = "yes"; then
LIBCLAMAV_LIBS="$LIBCLAMAV_LIBS -lpthread"
CLAMD_LIBS="-lpthread"
CLAMAV_MILTER_LIBS="$CLAMAV_MILTER_LIBS -lpthread"
AC_DEFINE(CL_THREAD_SAFE,1,[thread safe])
AC_DEFINE(_REENTRANT,1,[thread safe])
ADDITIONAL_LIBS="$LIBS -lpthread"
fi
AC_DEFINE(C_BSD,1,[os is NetBSD])
use_gethostbyname_r="no"
;;
bsd*)
AC_MSG_RESULT(Unknown BSD detected. Disabling thread support.)
have_pthreads="no"
AC_DEFINE(C_BSD,1,[os is bsd flavor])
use_gethostbyname_r="no"
;;
beos*)
AC_MSG_RESULT(BeOS detected. Disabling thread support.)
have_pthreads="no"
AC_DEFINE(C_BEOS,1,[os is beos])
;;
darwin*)
AC_DEFINE(C_BSD,1,[os is bsd flavor])
AC_DEFINE(C_DARWIN,1,[os is darwin])
AC_DEFINE(BIND_8_COMPAT,1,[enable bind8 compatibility])
use_netinfo="yes"
use_gethostbyname_r="no"
;;
os2*)
FRESHCLAM_LIBS="$FRESHCLAM_LIBS -lsyslog"
CLAMD_LIBS="$CLAMD_LIBS -lsyslog"
CLAMAV_MILTER_LIBS="$CLAMAV_MILTER_LIBS -lsyslog"
if test "$have_pthreads" = "yes"; then
LIBCLAMAV_LIBS="$LIBCLAMAV_LIBS -lpthread"
CLAMD_LIBS="$CLAMD_LIBS -lpthread"
CLAMAV_MILTER_LIBS="$CLAMAV_MILTER_LIBS -lpthread"
TH_SAFE="-thread-safe"
AC_DEFINE(CL_THREAD_SAFE,1,[thread safe])
AC_DEFINE(_REENTRANT,1,[thread safe])
fi
AC_DEFINE(C_OS2,1,[os is OS/2])
;;
sco*)
dnl njh@bandsman.sco.uk: SCO Unix port
dnl FRESHCLAM_LIBS="-lsocket"
dnl CLAMD_LIBS="-lsocket"
dnl CLAMAV_MILTER_LIBS="$CLAMAV_MILTER_LIBS -lsocket"
;;
hpux*)
if test "$have_pthreads" = "yes"; then
LIBCLAMAV_LIBS="$LIBCLAMAV_LIBS -lpthread"
CLAMD_LIBS="$CLAMD_LIBS -lpthread"
CLAMAV_MILTER_LIBS="$CLAMAV_MILTER_LIBS -lpthread"
TH_SAFE="-thread-safe"
AC_DEFINE(CL_THREAD_SAFE,1,[thread safe])
AC_DEFINE(_REENTRANT,1,[thread safe])
fi
AC_DEFINE(C_HPUX,1,[os is hpux])
;;
aix*)
if test "$have_pthreads" = "yes"; then
LIBCLAMAV_LIBS="$LIBCLAMAV_LIBS -lpthread"
CLAMD_LIBS="$CLAMD_LIBS -lpthread"
CLAMAV_MILTER_LIBS="$CLAMAV_MILTER_LIBS -lpthread"
TH_SAFE="-thread-safe"
AC_DEFINE(CL_THREAD_SAFE,1,[thread safe])
AC_DEFINE(_REENTRANT,1,[thread safe])
fi
AC_DEFINE(C_AIX,1,[os is aix])
;;
nto-qnx*)
if test "$have_pthreads" = "yes"; then
AC_DEFINE(CL_THREAD_SAFE,1,[thread safe])
AC_DEFINE(_REENTRANT,1,[thread safe])
fi
AC_DEFINE(C_QNX6,1,[os is QNX 6.x.x])
;;
irix*)
if test "$have_pthreads" = "yes"; then
LIBCLAMAV_LIBS="$LIBCLAMAV_LIBS -lpthread"
CLAMD_LIBS="$CLAMD_LIBS -lpthread"
CLAMAV_MILTER_LIBS="$CLAMAV_MILTER_LIBS -lpthread"
TH_SAFE="-thread-safe"
AC_DEFINE(CL_THREAD_SAFE,1,[thread safe])
AC_DEFINE(_REENTRANT,1,[thread safe])
fi
AC_DEFINE(C_IRIX,1,[os is irix])
;;
interix*)
AC_DEFINE(C_INTERIX,1,[os is interix])
if test "$test_clamav" = "yes"; then
if test ! -r /etc/passwd; then
test_clamav="no"
fi
fi
if test "$have_pthreads" = "yes"; then
LIBCLAMAV_LIBS="$LIBCLAMAV_LIBS -lpthread"
TH_SAFE="-thread-safe"
AC_DEFINE(CL_THREAD_SAFE,1,[thread safe])
AC_DEFINE(_REENTRANT,1,[thread safe])
fi
;;
*)
;;
esac
AC_SUBST(LIBCLAMAV_LIBS)
AC_SUBST(CLAMD_LIBS)
AC_SUBST(CLAMAV_MILTER_LIBS)
AC_SUBST(FRESHCLAM_LIBS)
AC_SUBST(TH_SAFE)
AC_SUBST(ADDITIONAL_LIBS)
dnl --enable-milter
if test "$have_milter" = "yes"; then
dnl libmilter checking code adapted from spamass-milter by
dnl Tom G. Christensen <tgc@statsbiblioteket.dk>
dnl Check for libmilter and it's header files in the usual locations
save_LDFLAGS="$LDFLAGS"
if test -d /usr/lib/libmilter ; then
CLAMAV_MILTER_LIBS="$CLAMAV_MILTER_LIBS -L/usr/lib/libmilter"
fi
LDFLAGS="$LDFLAGS -lmilter $CLAMAV_MILTER_LIBS"
AC_CHECK_LIB(milter, mi_stop,[CLAMAV_MILTER_LIBS="-lmilter $CLAMAV_MILTER_LIBS"],[
dnl Older sendmails require libsm or libsmutil for support functions
AC_SEARCH_LIBS(strlcpy, [sm smutil], [test "$ac_cv_search_strlcpy" = "none required" || CLAMAV_MILTER_XLIB="$ac_cv_search_strlcpy"])
LDFLAGS="$save_LDFLAGS $CLAMAV_MILTER_LIBS $CLAMAV_MILTER_XLIB"
$as_unset ac_cv_lib_milter_mi_stop
AC_CHECK_LIB(milter, mi_stop,[CLAMAV_MILTER_LIBS="-lmilter $CLAMAV_MILTER_XLIB $CLAMAV_MILTER_LIBS"],[
AC_MSG_ERROR([Cannot find libmilter])
])
])
LDFLAGS="$save_LDFLAGS"
AC_CHECK_HEADERS(libmilter/mfapi.h,have_milter="yes",[
AC_MSG_ERROR([Please install mfapi.h from the sendmail distribution])
])
fi
AM_CONDITIONAL(BUILD_CLAMD, test "$have_pthreads" = "yes")
AM_CONDITIONAL(HAVE_MILTER, test "$have_milter" = "yes")
if test "$have_pthreads" = "yes"
then
AC_DEFINE(BUILD_CLAMD, 1, "build clamd")
fi
dnl Check if we can do fd passing
dnl Submitted by Richard Lyons <frob-clamav@webcentral.com.au>
AC_CHECK_FUNCS(recvmsg sendmsg)
AC_CACHE_CHECK([for msg_accrights field in struct msghdr],
ac_cv_have_accrights_in_msghdr, [
AC_TRY_RUN(
[
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/uio.h>
int main() {
#ifdef msg_accrights
exit(1);
#endif
struct msghdr m;
m.msg_accrights = 0;
exit(0);
}
],
[ ac_cv_have_accrights_in_msghdr="yes" ],
[ ac_cv_have_accrights_in_msghdr="no" ]
)
])
if test "x$ac_cv_have_accrights_in_msghdr" = "xyes" ; then
AC_DEFINE(HAVE_ACCRIGHTS_IN_MSGHDR,1,[access rights in msghdr])
fi
AC_CACHE_CHECK([for msg_control field in struct msghdr],
ac_cv_have_control_in_msghdr, [
AC_TRY_RUN(
[
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/uio.h>
int main() {
#ifdef msg_control
exit(1);
#endif
struct msghdr m;
m.msg_control = 0;
exit(0);
}
],
[ ac_cv_have_control_in_msghdr="yes" ],
[ ac_cv_have_control_in_msghdr="no" ]
)
])
if test "x$ac_cv_have_control_in_msghdr" = "xyes" ; then
AC_DEFINE(HAVE_CONTROL_IN_MSGHDR,1,[ancillary data style fd pass])
fi
dnl tcpwrappers support
dnl rules from http://ma.ph-freiburg.de/tng/tng-technical/2002-01/msg00094.html
AC_ARG_WITH(tcpwrappers,
[ --with-tcpwrappers support hosts.allow / hosts.deny (default=auto)],
[ case "$withval" in
yes|no) tcpw="$withval" ;;
*) AC_MSG_ERROR([--with-tcpwrappers does not take an argument]) ;;
esac],
[ tcpw=auto ])
if test "$tcpw" != "no" && test "$have_milter" = "yes" ; then
AC_CHECK_HEADERS(tcpd.h,[
AC_MSG_CHECKING([for TCP wrappers library])
save_LIBS="$LIBS"
LIBS="$LIBS -lwrap $FRESHCLAM_LIBS"
AC_TRY_LINK([
#include <tcpd.h>
int allow_severity = 0;
int deny_severity = 0;
struct request_info *req;
],[
hosts_access(req)
],[AC_MSG_RESULT([-lwrap])
have_wrappers=yes
LIBS="$save_LIBS"
CLAMAV_MILTER_LIBS="$CLAMAV_MILTER_LIBS -lwrap"],[
dnl try with -lnsl
LIBS="$LIBS -lnsl $FRESHCLAM_LIBS"
AC_TRY_LINK([
#include <tcpd.h>
int allow_severity = 0;
int deny_severity = 0;
struct request_info *req;
],[
hosts_access(req)
],[AC_MSG_RESULT([-lwrap -lnsl])
have_wrappers=yes
CLAMAV_MILTER_LIBS="$CLAMAV_MILTER_LIBS -lwrap"],[
AC_MSG_RESULT(no)
have_wrappers=no
LIBS=$save_LIBS])],[
have_wrappers=no])],[have_wrappers=no])
if test $have_wrappers = yes ; then
AC_DEFINE(WITH_TCPWRAP,1, [tcpwrappers support])
elif test $tcpw = yes ; then
AC_MSG_ERROR([could not find TCP wrappers])
else
AC_MSG_WARN([could not find TCP wrappers, support disabled])
fi
fi
dnl Check for gethostbyname_r and number of its arguments
dnl Code from libwww/configure.in
AC_MSG_CHECKING(for gethostbyname_r)
if test -z "$ac_cv_gethostbyname_args"; then
AC_TRY_COMPILE(
[
#include <sys/types.h>
#include <netdb.h>
],[
struct hostent *hp;
struct hostent h;
char *name;
char buffer[10];
int h_errno;
hp = gethostbyname_r(name, &h, buffer, 10, &h_errno);
], ac_cv_gethostbyname_args=5)
fi
if test -z "$ac_cv_gethostbyname_args"; then
AC_TRY_COMPILE(
[
#include <sys/types.h>
#include <netdb.h>
],[
struct hostent h;
struct hostent_data hdata;
char *name;
int rc;
rc = gethostbyname_r(name, &h, &hdata);
], ac_cv_gethostbyname_args=3)
fi
if test -z "$ac_cv_gethostbyname_args"; then
AC_TRY_COMPILE(
[
#include <sys/types.h>
#include <netdb.h>
], [
struct hostent h;
struct hostent *hp;
char *name;
char buf[10];
int rc;
int h_errno;
rc = gethostbyname_r(name, &h, buf, 10, &hp, &h_errno);
], ac_cv_gethostbyname_args=6)
fi
AC_ARG_ENABLE(gethostbyname_r,
[ --disable-gethostbyname_r disable support for gethostbyname_r],
use_gethostbyname_r=$enableval,)
if test "$use_gethostbyname_r" = "no"; then
AC_MSG_RESULT(support disabled)
elif test -z "$ac_cv_gethostbyname_args"; then
AC_MSG_RESULT(no)
else
if test "$ac_cv_gethostbyname_args" = 3; then
AC_DEFINE(HAVE_GETHOSTBYNAME_R_3,1,[gethostbyname_r takes 3 arguments])
elif test "$ac_cv_gethostbyname_args" = 5; then
AC_DEFINE(HAVE_GETHOSTBYNAME_R_5,1,[gethostbyname_r takes 5 arguments])
elif test "$ac_cv_gethostbyname_args" = 6; then
AC_DEFINE(HAVE_GETHOSTBYNAME_R_6,1,[gethostbyname_r takes 6 arguments])
fi
AC_MSG_RESULT([yes, and it takes $ac_cv_gethostbyname_args arguments])
fi
dnl Check for readdir_r and number of its arguments
dnl Code from libwww/configure.in
AC_MSG_CHECKING(for readdir_r)
if test -z "$ac_cv_readdir_args"; then
AC_TRY_COMPILE(
[
#include <sys/types.h>
#include <dirent.h>
],
[
struct dirent dir, *dirp;
DIR *mydir;
dirp = readdir_r(mydir, &dir);
], ac_cv_readdir_args=2)
fi
if test -z "$ac_cv_readdir_args"; then
AC_TRY_COMPILE(
[
#include <sys/types.h>
#include <dirent.h>
],
[
struct dirent dir, *dirp;
DIR *mydir;
int rc;
rc = readdir_r(mydir, &dir, &dirp);
], ac_cv_readdir_args=3)
fi
AC_ARG_ENABLE(readdir_r,
[ --enable-readdir_r enable support for readdir_r],
enable_readdir_r=$enableval, enable_readdir_r="no")
if test "$enable_readdir_r" = "no"; then
AC_MSG_RESULT(support disabled)
elif test -z "$ac_cv_readdir_args"; then
AC_MSG_RESULT(no)
else
if test "$ac_cv_readdir_args" = 2; then
AC_DEFINE(HAVE_READDIR_R_2,1,[readdir_r takes 2 arguments])
elif test "$ac_cv_readdir_args" = 3; then
AC_DEFINE(HAVE_READDIR_R_3,1,[readdir_r takes 3 arguments])
fi
AC_MSG_RESULT([yes, and it takes $ac_cv_readdir_args arguments])
fi
AC_MSG_CHECKING(for ctime_r)
if test "$ac_cv_func_ctime_r" = "yes"; then
AC_TRY_COMPILE([
#include <time.h>
],[
char buf[31];
time_t t;
ctime_r(&t, buf, 30);
],[
ac_cv_ctime_args=3
AC_DEFINE(HAVE_CTIME_R_3,1,[ctime_r takes 3 arguments])
],[
ac_cv_ctime_args=2
AC_DEFINE(HAVE_CTIME_R_2,1,[ctime_r takes 2 arguments])
])
AC_MSG_RESULT([yes, and it takes $ac_cv_ctime_args arguments])
fi
dnl Check for clamav in /etc/passwd
if test "$test_clamav" = "yes"
then
dnl parse /etc/passwd
if test "$use_id" = "no"
then
AC_MSG_CHECKING(for $clamav_user in /etc/passwd)
if test -r /etc/passwd; then
clamavuser=`cat /etc/passwd|grep $clamav_user`
clamavgroup=`cat /etc/group|grep $clamav_group`
fi
else
AC_MSG_CHECKING(for $clamav_user using id)
id $clamav_user > /dev/null 2>&1
if test "$?" = 0 ; then
clamavuser=1
AC_PATH_PROG(GETENT, getent)
if test -n "$GETENT" ; then
clamavgroup=`$GETENT group | grep "^${clamav_group}:"`
else
clamavgroup=`cat /etc/group|grep $clamav_group`
fi
fi
fi
if test "$use_netinfo" = "yes"
then
AC_MSG_CHECKING(for $clamav_user using netinfo)
clamavuser=`/usr/bin/nidump passwd . |grep ${clamav_user}`
clamavgroup=`/usr/bin/nidump group . |grep ${clamav_group}`
fi
if test "$use_yp" = "yes"
then
AC_MSG_CHECKING(for $clamav_user using ypmatch)
clamavuser=`ypmatch ${clamav_user} passwd`
clamavgroup=`ypmatch ${clamav_group} group`
fi
if test -z "$clamavuser" || test -z "$clamavgroup"
then
AC_MSG_RESULT(no)
AC_MSG_ERROR(User $clamav_user (and/or group $clamav_group) doesn't exist. Please read the documentation !)
else
AC_MSG_RESULT([yes, user $clamav_user and group $clamav_group])
CLAMAVUSER="$clamav_user"
CLAMAVGROUP="$clamav_group"
AC_SUBST(CLAMAVUSER)
AC_SUBST(CLAMAVGROUP)
fi
fi
AC_C_CONST
AC_C_INLINE
AC_C_BIGENDIAN
if test $ac_cv_c_bigendian = yes; then
AC_DEFINE(WORDS_BIGENDIAN,1,endianess)
else
AC_DEFINE(WORDS_BIGENDIAN,0,endianess)
fi
dnl check for __attribute__((packed))
AC_MSG_CHECKING([for structure packing via __attribute__((packed))])
AC_CACHE_VAL(have_attrib_packed,[
AC_TRY_COMPILE(,
[struct { int i __attribute__((packed)); } s; ],
[have_attrib_packed=yes],
[have_attrib_packed=no])
])
AC_MSG_RESULT($have_attrib_packed)
if test "$have_attrib_packed" = no; then
AC_MSG_CHECKING(for structure packing via pragma)
AC_CACHE_VAL(have_pragma_pack,[
AC_TRY_RUN([int main(int argc, char **argv) {
#pragma pack(1) /* has to be in column 1 ! */
struct { char c; long l; } s;
return sizeof(s)==sizeof(s.c)+sizeof(s.l) ? 0:1; } ],
[have_pragma_pack=yes],
[have_pragma_pack=no])
])
AC_MSG_RESULT($have_pragma_pack)
AC_DEFINE(HAVE_PRAGMA_PACK, 1, "pragma pack")
fi
dnl check for __attribute__((aligned))
AC_MSG_CHECKING([for type aligning via __attribute__((aligned))])
AC_CACHE_VAL(have_attrib_aligned,[
AC_TRY_COMPILE(,
[typedef int cl_aligned_int __attribute__((aligned));],
[have_attrib_aligned=yes],
[have_attrib_aligned=no])
])
AC_MSG_RESULT($have_attrib_aligned)
if test "$have_attrib_packed" = no -a "$have_pragma_pack" = no ; then
AC_MSG_ERROR(Need to know how to pack structures with this compiler)
fi
if test "$have_attrib_packed" = yes; then
AC_DEFINE(HAVE_ATTRIB_PACKED, 1, [attrib packed])
fi
if test "$have_attrib_aligned" = yes; then
AC_DEFINE(HAVE_ATTRIB_ALIGNED, 1, [attrib aligned])
fi
dnl Check if <sys/select.h> needs to be included for fd_set
AC_MSG_CHECKING([for fd_set])
AC_TRY_COMPILE([#include <sys/types.h>],
[fd_set readMask, writeMask;], have_fd_set=yes, have_fd_set=no)
if test $have_fd_set = yes; then
AC_MSG_RESULT([yes, found in sys/types.h])
else
AC_HEADER_EGREP(fd_mask, sys/select.h, have_fd_set=yes)
if test $have_fd_set = yes; then
AC_DEFINE(HAVE_SYS_SELECT_H, 1, "have <sys/select.h>")
AC_MSG_RESULT([yes, found in sys/select.h])
else
AC_DEFINE(NO_FD_SET, 1, "no fd_set")
AC_MSG_RESULT(no)
fi
fi
AC_MSG_CHECKING(default FD_SETSIZE value)
AC_TRY_RUN([
#include <stdio.h>
#include <unistd.h>
#include <sys/time.h>
#include <sys/select.h>
#include <sys/types.h>
main() {
FILE *fp = fopen("conftestval", "w");
fprintf (fp, "%d\n", FD_SETSIZE);
exit(0);
}
],
DEFAULT_FD_SETSIZE=`cat conftestval`,
DEFAULT_FD_SETSIZE=256,
DEFAULT_FD_SETSIZE=256)
AC_MSG_RESULT($DEFAULT_FD_SETSIZE)
AC_DEFINE_UNQUOTED(DEFAULT_FD_SETSIZE, $DEFAULT_FD_SETSIZE, "default FD_SETSIZE value")
AC_OUTPUT([
libclamav/Makefile
clamscan/Makefile
database/Makefile
docs/Makefile
clamd/Makefile
clamdscan/Makefile
clamav-milter/Makefile
freshclam/Makefile
sigtool/Makefile
etc/Makefile
Makefile
clamav-config
libclamav.pc
docs/man/clamd.8
docs/man/clamd.conf.5
docs/man/freshclam.1
docs/man/freshclam.conf.5
])