blob: 08ae22e20e9db78faefce046f259a093c6c731d9 [file] [log] [blame]
AC_INIT([pfring.c], 1.0)
AC_PROG_CC
AC_CONFIG_FILES(Makefile)
AC_CHECK_HEADERS([linux/net_tstamp.h librdi.h])
CFLAGS=""
SYS_LIBS=""
GCC_VERSION=`$CC --version |grep ^gcc |sed 's/^.* //g'`
if test -n "$GCC_VERSION"; then
ARCH=`uname -m`
if test "$ARCH" = "x86_64"; then
GCCMAJOR=`echo $GCC_VERSION |cut -d'.' -f1`
GCCMINOR=`echo $GCC_VERSION |cut -d'.' -f2`
if test "$GCCMAJOR" -eq 4 && test "$GCCMINOR" -ge 6; then
CPUSSE42=`grep -m 1 flags /proc/cpuinfo | grep -o sse4_2`
if test "$CPUSSE42" = "sse4_2"; then
CPUAVX=`grep -m 1 flags /proc/cpuinfo | grep -o avx`
if test "$CPUAVX" = "avx"; then
CFLAGS="-march=corei7-avx -mtune=corei7-avx $CFLAGS"
LIBARCH="_corei7-avx"
else
CFLAGS="-march=corei7 -mtune=corei7 $CFLAGS"
LIBARCH="_corei7"
fi
fi
fi
fi
fi
if test -z "$MACHINE"; then
MACHINE=`uname -m`
fi
ZERO_LIB="libs/libpfring_zero_$MACHINE$LIBARCH.a"
DNA_LIB="libs/libpfring_dna_$MACHINE$LIBARCH.a"
VIRTUAL_LIB="libs/libpfring_mod_virtual_$MACHINE.a"
VIRTUAL_HDR="pfring_mod_virtual.h"
dnl> Check for a modern pthread library
AC_CHECK_LIB(pthread, pthread_setaffinity_np, AC_DEFINE_UNQUOTED(HAVE_PTHREAD_SETAFFINITY_NP, 1, [libc has pthread_setaffinity_np]))
if test "x$ac_cv_lib_pthread_pthread_setaffinity_np" = xyes; then :
AC_MSG_CHECKING([Zero support])
if test -f $ZERO_LIB; then
HAVE_ZERO="-D HAVE_ZERO"
ZERO_OBJS=`ar t $ZERO_LIB | grep -F .o | tr '\n' ' '`
ZERO_DEP="extract_zero_lib"
AC_MSG_RESULT(yes)
else
ZERO_LIB=""
AC_MSG_RESULT(no)
fi
dnl> R/W locks are broken on some BSD releases
if test "$IS_FREEBSD" != "1"; then
AC_MSG_CHECKING([if r/w locks are supported])
AC_TRY_RUN([
#include <pthread.h>
int main()
{
pthread_rwlock_t t;
return 0;
}
]
, [ AC_MSG_RESULT(yes) AC_DEFINE_UNQUOTED(HAVE_RW_LOCK, 1, [pthread has rw locks]) ], [AC_MSG_RESULT(no)], [AC_MSG_RESULT(no)], [AC_MSG_RESULT(no)]
)
fi
AC_MSG_CHECKING([DNA support])
if test -f $DNA_LIB; then
HAVE_DNA="-D HAVE_DNA"
DNA_OBJS=`ar t $DNA_LIB | tr '\n' ' '`
DNA_OBJS="pfring_mod_dna.o "$DNA_OBJS
DNA_DEP="extract_dna_lib"
AC_MSG_RESULT(yes)
else
DNA_LIB=""
AC_MSG_RESULT(no)
fi
AC_MSG_CHECKING([machine name])
AC_MSG_RESULT($(MACHINE))
AC_MSG_CHECKING([Virtual support])
if test -f $VIRTUAL_LIB && test -f $VIRTUAL_HDR; then
HAVE_VIRTUAL="-D HAVE_VIRTUAL"
VIRTUAL_OBJS=`ar t $VIRTUAL_LIB | tr '\n' ' '`
VIRTUAL_DEP="extract_virtual_lib"
AC_MSG_RESULT(yes)
else
VIRTUAL_LIB=""
AC_MSG_RESULT(no)
fi
dnl> end of pthread_setaffinity_np check
fi
AC_CHECK_HEADERS([librdi.h])
dnl> Silicom Redirector NIC - Default enabled
AC_ARG_ENABLE([rdi], AS_HELP_STRING([--disable-rdi], [Disable Silicom Redirector support in PF_RING]))
if test "x$enable_rdi" != "xno"; then :
if test "x$ac_cv_header_librdi_h" = x""yes; then :
AC_CHECK_LIB( [rdi], [rdi_init])
AC_MSG_CHECKING([Silicom Redirector support])
if test "x$ac_cv_lib_rdi_rdi_init" = x""yes; then :
HAVE_REDIRECTOR="-D HAVE_REDIRECTOR"
SILICOM_LIBS="-lrdi"
AC_MSG_RESULT(yes)
else
AC_MSG_RESULT(no)
fi
fi
fi
AC_CHECK_LIB([hiredis], [redisCommand])
if test "x$ac_cv_lib_hiredis_redisCommand" = xyes; then :
REDIS_LIB="-lhiredis"
AC_DEFINE_UNQUOTED(HAVE_REDIS, 1, [redis is present])
else
REDIS_LIB=""
fi
AC_CHECK_LIB( [nl], [nl_handle_alloc], [SYSLIBS="$SYSLIBS -lnl"])
AC_CHECK_LIB( [dag],
[dag_get_stream_erf_types],
[HAVE_DAG="-D HAVE_DAG"; DAG_OBJS="pfring_mod_dag.o"; DAG_LIB="-L/usr/local/lib -ldag"],
[], [] )
dnl BPF - Default disabled
dnl AC_ARG_ENABLE([bpf], AS_HELP_STRING([--enable-bpf], [Enable BPF support in PF_RING]))
dnl AS_IF([test "x$enable_bpf" = "xyes"], [HAVE_BPF="-D ENABLE_BPF"; BPF_INCLUDE="-I../libpcap"; BPF_LIB="-L../libpcap -lpcap"])
dnl BPF - Default enabled
AC_ARG_ENABLE([bpf], AS_HELP_STRING([--disable-bpf], [Disable BPF support in PF_RING]))
AS_IF([test "x$enable_bpf" != "xno"], [HAVE_BPF="-D ENABLE_BPF"; BPF_INCLUDE="-I../libpcap"; BPF_LIB="-L../libpcap -lpcap"])
dnl BPF - Dynamic
dnl AC_CHECK_LIB( [pcap],
dnl [pcap_compile_nopcap],
dnl [HAVE_BPF="-D ENABLE_BPF"],
dnl [], [] )
if test "x$ac_cv_header_linux_net_tstamp_h" = x""yes; then :
HAVE_HW_TIMESTAMP="-D ENABLE_HW_TIMESTAMP"
fi
if test ".${prefix}" = ".NONE"; then
INSTALL_PREFIX=${ac_default_prefix};
else
INSTALL_PREFIX=${prefix};
fi
AC_SUBST(CFLAGS)
AC_SUBST(HAVE_ZERO)
AC_SUBST(ZERO_LIB)
AC_SUBST(ZERO_OBJS)
AC_SUBST(ZERO_DEP)
AC_SUBST(HAVE_DNA)
AC_SUBST(DNA_LIB)
AC_SUBST(DNA_OBJS)
AC_SUBST(DNA_DEP)
AC_SUBST(DAG_LIB)
AC_SUBST(HAVE_VIRTUAL)
AC_SUBST(VIRTUAL_LIB)
AC_SUBST(VIRTUAL_OBJS)
AC_SUBST(VIRTUAL_DEP)
AC_SUBST(HAVE_DAG)
AC_SUBST(DAG_OBJS)
AC_SUBST(HAVE_BPF)
AC_SUBST(BPF_INCLUDE)
AC_SUBST(BPF_LIB)
AC_SUBST(REDIS_LIB)
AC_SUBST(SYSLIBS)
AC_SUBST(INSTALL_PREFIX)
AC_SUBST(SILICOM_LIBS)
AC_SUBST(HAVE_REDIRECTOR)
AC_SUBST(HAVE_HW_TIMESTAMP)
dnl> AC_CONFIG_FILES([Makefile])
AC_CONFIG_FILES([../examples/Makefile])
AC_CONFIG_FILES([../test/Makefile])
AC_CONFIG_FILES([../c++/Makefile])
AC_CONFIG_HEADERS(config.h)
AC_OUTPUT