dnl Process this file with autoconf to produce a configure script.
dnl configuration file for pmacct
m4_include([VERSION]) #Force reconf on VERSION change
AC_INIT([pmacct], m4_esyscmd_s(cat VERSION), [[email protected]])
AM_INIT_AUTOMAKE([foreign])
AC_CONFIG_MACRO_DIR([m4])
LT_INIT
AC_PREFIX_DEFAULT([/usr/local])
m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES(yes)])
PMACCT_VERSION=`cat $srcdir/VERSION`
AC_SUBST(PMACCT_VERSION)
COMPILE_ARGS="${ac_configure_args}"
dnl Determine a C compiler to use
AC_PROG_CC
dnl pkg-config stuff
PKG_CONFIG_PATH=${PKG_CONFIG_PATH}:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH
PKG_PROG_PKG_CONFIG
AC_CANONICAL_HOST
AC_MSG_CHECKING(OS)
AC_MSG_RESULT($host_os)
AC_MSG_CHECKING(hardware)
AC_MSG_RESULT($host_cpu)
dnl initial checks; tweakings to CFLAGS and LDFLAGS
dnl see final checks for tweakings to LIBS
if test "x$GCC" = xyes ; then
CFLAGS="-O2 ${CFLAGS}"
fi
dnl: shared object handling
AC_MSG_CHECKING([whether to disable linking against shared objects])
AC_ARG_ENABLE(so,
[ --disable-so Disable linking against shared objects (default: no)],
[
if test x$enableval = x"yes" ; then
AC_MSG_RESULT(no)
AC_CHECK_FUNC(dlopen, [ USING_DLOPEN="yes" ], [])
AC_CHECK_LIB(dl, dlopen,
[ USING_DLOPEN="yes"
LIBS="${LIBS} -ldl" ],
[])
if test x"$USING_DLOPEN" != x"yes"; then
AC_MSG_ERROR(Unable to find dlopen(). Try with --disable-so)
fi
else
AC_MSG_RESULT(yes)
if test "x$GCC" = xyes ; then
LDFLAGS="-static ${LDFLAGS}"
fi
fi
],
[
AC_MSG_RESULT(no)
AC_CHECK_FUNC(dlopen, [ USING_DLOPEN="yes" ], [])
AC_CHECK_LIB(dl, dlopen,
[ USING_DLOPEN="yes"
LIBS="${LIBS} -ldl" ],
[])
if test x"$USING_DLOPEN" != x"yes"; then
AC_MSG_ERROR(Unable to find dlopen(). Try with --disable-so)
fi
]
)
dnl finish: shared object handling
dnl os specific flags
case "$host_os" in
Sun*)
AC_DEFINE(SOLARIS, 1)
LIBS="-lresolv -lsocket -lnsl ${LIBS}"
;;
*BSD)
AC_DEFINE(BSD, 1)
;;
linux*)
AC_DEFINE(LINUX, 1)
;;
esac
AC_CHECK_PROG(MAKE, gmake, gmake)
if test x"$MAKE" = x""; then
AC_CHECK_PROG(MAKE, make, make)
fi
AC_SUBST(MAKE)
AC_PROG_MAKE_SET
dnl
dnl some systems have __progname ; if this is the case and we play around argv
dnl we need to enable a minor hack to make things work nicely.
dnl
AC_MSG_CHECKING(for __progname)
AC_LINK_IFELSE(
[AC_LANG_PROGRAM([ extern char *__progname; ],
[ __progname = "test"; ])],
[AC_MSG_RESULT(yes); AC_DEFINE(PROGNAME, 1)],
[AC_MSG_RESULT(no)])
dnl
dnl Check for architecture endianess: big | little
dnl
dnl XXX: switch to manually define this feature
ac_cv_endianess="unknown"
if test x"$ac_cv_endianess" = x"unknown"; then
AC_MSG_CHECKING(endianess)
AC_RUN_IFELSE(
[AC_LANG_PROGRAM([ #include ],
[[
union {
long l;
char c[sizeof (long)];
} u;
u.l = 1;
exit (u.c[sizeof (long) - 1] == 1);
]])],
[ac_cv_endianess="little"],
[ac_cv_endianess="big"],
[ac_cv_endianess="little"])
AC_MSG_RESULT($ac_cv_endianess)
fi
if test x"$ac_cv_endianess" = x"big"; then
AC_DEFINE(IM_BIG_ENDIAN, 1)
fi
if test x"$ac_cv_endianess" = x"little"; then
AC_DEFINE(IM_LITTLE_ENDIAN, 1)
fi
dnl
dnl Check for unaligned memory access; based entirely over
dnl AC_LBL_UNALIGNED_ACCESS
dnl
dnl XXX: switch to manually define this feature;
ac_cv_unaligned="unknown"
case "$host_cpu" in
alpha*|arm*|hp*|mips*|sh*|sparc*|ia64|nv1)
ac_cv_unaligned="fail"
AC_MSG_CHECKING(unaligned accesses)
AC_MSG_RESULT($ac_cv_unaligned)
;;
esac
if test x"$ac_cv_unaligned" = x"unknown"; then
AC_MSG_CHECKING(unaligned accesses)
cat > conftest.c << EOF
#include
#include
#include
#include
#include
unsigned char a[[5]] = { 1, 2, 3, 4, 5 };
int main () {
unsigned int i;
pid_t pid;
int status;
/* avoid "core dumped" message */
pid = fork();
if (pid < 0) exit(2);
if (pid > 0) {
/* parent */
pid = waitpid(pid, &status, 0);
if (pid < 0) exit(3);
exit(!WIFEXITED(status));
}
/* child */
i = *(unsigned int *)&a[[1]];
printf("%d\n", i);
exit(0);
}
EOF
${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS \
conftest.c $LIBS >/dev/null 2>&1
if test ! -x conftest ; then
ac_cv_unaligned="fail"
else
./conftest >conftest.out
if test ! -s conftest.out ; then ac_cv_unaligned="fail"
else ac_cv_unaligned="ok"
fi
fi
rm -f conftest* core core.conftest
AC_MSG_RESULT($ac_cv_unaligned)
fi
if test x"$ac_cv_unaligned" = x"fail"; then
AC_DEFINE(NEED_ALIGN, 1)
fi
AC_MSG_CHECKING([whether to enable L2 features])
AC_ARG_ENABLE(l2,
[ --enable-l2 Enable Layer-2 features and support (default: yes)],
[
if test x$enableval = x"yes" ; then
AC_MSG_RESULT(yes)
AC_DEFINE(HAVE_L2, 1)
else
AC_MSG_RESULT(no)
fi
],
[
AC_MSG_RESULT(yes)
AC_DEFINE(HAVE_L2, 1)
COMPILE_ARGS="${COMPILE_ARGS} '--enable-l2'"
]
)
AC_CHECK_FUNCS(inet_pton)
if test x"$ac_cv_func_inet_pton" = x"no"; then
AC_MSG_ERROR(ERROR: missing inet_pton())
fi
AC_CHECK_FUNCS(inet_ntop)
if test x"$ac_cv_func_inet_ntop" = x"no"; then
AC_MSG_ERROR(ERROR: missing inet_ntop())
fi
AC_ARG_WITH(pcap-includes,
[ --with-pcap-includes=DIR Search the specified directory for header files],
[
AC_LINEARIZE_PATH($withval, withval=$absdir)
INCLUDES="${INCLUDES} -I$withval"
PCAPINCLS=$withval
PCAPINCLUDESFOUND=1
])
if test x"$PCAPINCLS" != x""; then
AC_MSG_CHECKING(your own pcap includes)
if test -r $PCAPINCLS/pcap.h; then
AC_MSG_RESULT(ok)
AC_DEFINE(HAVE_PCAP_H, 1)
PCAPINCLUDESFOUND=1
else
AC_MSG_RESULT(no)
AC_MSG_ERROR(ERROR: missing pcap.h in $PCAPINCLS)
fi
fi
AC_CHECK_PROG([PCAP_CONFIG], [pcap-config], [pcap-config], [no])
if test x"$PCAPINCLUDESFOUND" = x""; then
if test ${PCAP_CONFIG} = "pcap-config"; then
AC_MSG_CHECKING([using pcap-config for pcap.h])
PCAP_CONFIG_INCLUDES=`${PCAP_CONFIG} --cflags`
INCLUDES="${INCLUDES} ${PCAP_CONFIG_INCLUDES}"
AC_DEFINE(HAVE_PCAP_PCAP_H, 1)
AC_MSG_RESULT([${PCAP_CONFIG_INCLUDES}])
PCAPINCLUDESFOUND=1
fi
fi
if test x"$PCAPINCLUDESFOUND" = x""; then
AC_MSG_CHECKING([default locations for pcap.h])
if test -r /usr/include/pcap.h; then
AC_MSG_RESULT([found in /usr/include])
PCAPINCLUDESFOUND=1
AC_DEFINE(HAVE_PCAP_H, 1)
elif test -r /usr/include/pcap/pcap.h; then
AC_MSG_RESULT([found in /usr/include])
PCAPINCLUDESFOUND=1
AC_DEFINE(HAVE_PCAP_PCAP_H, 1)
elif test -r /usr/local/include/pcap.h; then
AC_MSG_RESULT([found in /usr/local/include])
INCLUDES="${INCLUDES} -I/usr/local/include"
PCAPINCLUDESFOUND=1
AC_DEFINE(HAVE_PCAP_H, 1)
elif test -r /usr/local/include/pcap/pcap.h; then
AC_MSG_RESULT([found in /usr/local/include])
INCLUDES="${INCLUDES} -I/usr/local/include"
PCAPINCLUDESFOUND=1
AC_DEFINE(HAVE_PCAP_PCAP_H, 1)
fi
if test x"$PCAPINCLUDESFOUND" = x""; then
AC_MSG_RESULT([not found])
AC_MSG_ERROR(ERROR: missing pcap.h)
fi
fi
AC_ARG_WITH(pcap-libs,
[ --with-pcap-libs=DIR Search the specified directory for pcap library],
[
AC_LINEARIZE_PATH($withval, withval=$absdir)
LIBS="${LIBS} -L$withval"
PCAPLIB=$withval
PCAPLIBFOUND=1
])
if test x"$PCAPLIB" != x""; then
AC_MSG_CHECKING(your own pcap libraries)
if test -r $PCAPLIB/libpcap.a -o -r $PCAPLIB/libpcap.so; then
AC_MSG_RESULT(ok)
PCAP_LIB_FOUND=1
AC_MSG_CHECKING(for PF_RING library)
if test -r $PCAPLIB/libpfring.a -o -r $PCAPLIB/libpfring.so; then
LIBS="${LIBS} -lpfring -lpcap"
AC_MSG_RESULT(yes)
PFRING_LIB_FOUND=1
AC_DEFINE(PFRING_LIB_FOUND, 1)
else
AC_MSG_RESULT(no)
fi
else
AC_MSG_RESULT(no)
AC_MSG_ERROR(ERROR: unable to find pcap library in $PCAPLIB)
fi
fi
if test x"$PCAPLIBFOUND" = x""; then
AC_MSG_CHECKING([default locations for libpcap])
if test -r /usr/local/lib/libpcap.a -o -r /usr/local/lib/libpcap.so; then
LIBS="${LIBS} -L/usr/local/lib"
AC_MSG_RESULT([found in /usr/local/lib])
PCAPLIBFOUND=1
AC_MSG_CHECKING(for PF_RING library)
if test -r /usr/local/lib/libpfring.a -o -r /usr/local/lib/libpfring.so; then
LIBS="${LIBS} -lpfring -lpcap"
AC_MSG_RESULT(yes)
PFRING_LIB_FOUND=1
AC_DEFINE(PFRING_LIB_FOUND, 1)
else
AC_MSG_RESULT(no)
fi
else
AC_MSG_RESULT(no)
fi
fi
if test x"$PCAPLIBFOUND" = x""; then
if test ${PCAP_CONFIG} = "pcap-config"; then
AC_MSG_CHECKING([using pcap-config for libpcap])
PCAP_CONFIG_LIBS=`${PCAP_CONFIG} --libs`
INCLUDES="${INCLUDES} ${PCAP_CONFIG_LIBS}"
AC_MSG_RESULT([${PCAP_CONFIG_LIBS}])
PCAPLIBFOUND=1
fi
fi
dnl Checks for libraries.
dnl libpcap is checked only if PF_RING is not found
if test x"$PFRING_LIB_FOUND" = x""; then
AC_CHECK_LIB([pcap], [pcap_dispatch], [], [AC_MSG_ERROR([
ERROR: missing pcap library. Refer to: http://www.tcpdump.org/
])])
AC_CHECK_LIB([pcap], [pcap_set_protocol], [ AC_DEFINE(PCAP_SET_PROTOCOL, 1) ], [])
else
AC_CHECK_LIB([numa], [numa_bind], [], [AC_MSG_ERROR([
ERROR: missing libnuma. Requirement for building PF_RING.
])])
#AC_CHECK_LIB([rt], [clock_gettime], [], [AC_MSG_ERROR([
# ERROR: missing librt devel. Requirement for building PF_RING.
#])])
LIBS="${LIBS} -lrt -lnuma"
fi
AC_CHECK_LIB([pcap], [pcap_setdirection], [ AC_DEFINE(PCAP_SET_DIRECTION, 1) ], [])
dnl start: mysql handling
AC_MSG_CHECKING(whether to enable MySQL support)
AC_ARG_ENABLE(mysql,
[ --enable-mysql Enable MySQL support (default: no)],
[ case "$enableval" in
yes)
AC_MSG_RESULT(yes)
dnl no pkg-config support for MySQL
AC_CHECK_PROG([MYSQL_CONFIG], [mysql_config], [mysql_config], [no])
if test "x${MYSQL_CONFIG}" = "xno"; then
AC_MSG_ERROR([ERROR: missing mysql_config program])
fi
MYSQL_CFLAGS=`$MYSQL_CONFIG --cflags`
MYSQL_LIBS=`$MYSQL_CONFIG --libs`
dnl version check not enforced with a AC_MSG_ERROR for now
AX_LIB_MYSQL(5.6.3)
AC_SUBST(MYSQL_CFLAGS)
AC_SUBST(MYSQL_LIBS)
PLUGINS="${PLUGINS} mysql"
USING_SQL="yes"
USING_MYSQL="yes"
PMACCT_CFLAGS="$PMACCT_CFLAGS $MYSQL_CFLAGS"
AC_DEFINE(WITH_MYSQL, 1)
_save_LIBS="$LIBS"
LIBS="$LIBS $MYSQL_LIBS"
AC_CHECK_LIB([mysqlclient], [mysql_query])
LIBS="$_save_LIBS"
_save_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS $MYSQL_CFLAGS"
AC_CHECK_HEADERS([mysql.h mysql/mysql.h])
CFLAGS="$_save_CFLAGS"
case "$host_os" in
linux*)
AC_CHECK_LIB([numa], [numa_bind], [], [AC_MSG_ERROR([
ERROR: missing libnuma. Requirement for building MySQL.
])])
;;
esac
;;
no)
AC_MSG_RESULT(no)
;;
esac ],
[
AC_MSG_RESULT(no)
]
)
dnl finish: mysql handling
dnl start: pgsql handling
AC_MSG_CHECKING(whether to enable PostgreSQL support)
AC_ARG_ENABLE(pgsql,
[ --enable-pgsql Enable PostgreSQL support (default: no)],
[ case "$enableval" in
yes)
AC_MSG_RESULT(yes)
PKG_CHECK_MODULES([PGSQL], [libpq >= 8.4], [
PLUGINS="${PLUGINS} pgsql"
USING_SQL="yes"
USING_PGSQL="yes"
PMACCT_CFLAGS="$PMACCT_CFLAGS $PGSQL_CFLAGS"
AC_DEFINE(WITH_PGSQL, 1)
_save_LIBS="$LIBS"
LIBS="$LIBS $PGSQL_LIBS"
AC_CHECK_LIB([pq], [PQexec])
AC_CHECK_FUNCS([PQlibVersion])
LIBS="$_save_LIBS"
_save_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS $PGSQL_CFLAGS"
AC_CHECK_HEADER([libpq-fe.h])
CFLAGS="$_save_CFLAGS"
], [
AC_MSG_ERROR([Missing PQ library. Refer to: http://www.postgresql.org/download/])
])
;;
no)
AC_MSG_RESULT(no)
;;
esac ],
[
AC_MSG_RESULT(no)
]
)
dnl finish: pgsql handling
dnl start: mongodb handling
AC_MSG_CHECKING(whether to enable MongoDB support)
AC_ARG_ENABLE(mongodb,
[ --enable-mongodb Enable MongoDB support (default: no)],
[ case "$enableval" in
yes)
AC_MSG_RESULT(yes)
PKG_CHECK_MODULES([MONGODB], [libmongoc],, [
AC_MSG_CHECKING([default locations for libmongoc])
if test -r /usr/lib/libmongoc.a -o -r /usr/lib/libmongoc.so; then
MONGODB_LIBS="-L/usr/lib -lmongoc"
AC_MSG_RESULT([found in /usr/lib])
elif test -r /usr/lib64/libmongoc.a -o -r /usr/lib64/libmongoc.so; then
MONGODB_LIBS="-L/usr/lib64 -lmongoc"
AC_MSG_RESULT([found in /usr/lib64])
elif test -r /usr/local/lib/libmongoc.a -o -r /usr/local/lib/libmongoc.so; then
MONGODB_LIBS="-L/usr/local/lib -lmongoc"
AC_MSG_RESULT([found in /usr/local/lib])
else
AC_MSG_RESULT([not found])
_save_LIBS="$LIBS"
LIBS="$LIBS $MONGODB_LIBS"
AC_CHECK_LIB([mongoc], [mongo_connect], [], [AC_MSG_ERROR([
ERROR: missing MongoDB library (0.8 version). Refer to: https://github.com/mongodb/mongo-c-driver-legacy
])])
LIBS="$_save_LIBS"
fi
AC_MSG_CHECKING([default locations for mongo.h])
if test -r /usr/include/mongo.h; then
MONGODB_CFLAGS="-I/usr/include"
AC_MSG_RESULT([found in /usr/include])
elif test -r /usr/local/include/mongo.h; then
MONGODB_CFLAGS="-I/usr/local/include"
AC_MSG_RESULT([found in /usr/local/include])
else
AC_MSG_RESULT([not found])
_save_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS $MONGODB_CFLAGS"
AC_CHECK_HEADER([mongo.h], [], [AC_MSG_ERROR(ERROR: missing MongoDB headers)])
CFLAGS="$_save_CFLAGS"
fi
])
PLUGINS="${PLUGINS} mongodb"
USING_MONGODB="yes"
PMACCT_CFLAGS="$PMACCT_CFLAGS $MONGODB_CFLAGS"
AC_DEFINE(WITH_MONGODB, 1)
;;
no)
AC_MSG_RESULT(no)
;;
esac ],
[
AC_MSG_RESULT(no)
]
)
dnl finish: mongodb handling
dnl start: sqlite3 handling
AC_MSG_CHECKING(whether to enable SQLite3 support)
AC_ARG_ENABLE(sqlite3,
[ --enable-sqlite3 Enable SQLite3 support (default: no)],
[ case "$enableval" in
yes)
AC_MSG_RESULT(yes)
dnl reasonably old libsqlite3 already support pkg-config
PKG_CHECK_MODULES([SQLITE3], [sqlite3 >= 3.7.13], [
PLUGINS="${PLUGINS} sqlite3"
USING_SQL="yes"
USING_SQLITE3="yes"
PMACCT_CFLAGS="$PMACCT_CFLAGS $SQLITE3_CFLAGS"
AC_DEFINE(WITH_SQLITE3, 1)
_save_LIBS="$LIBS"
LIBS="$LIBS $SQLITE3_LIBS"
AC_CHECK_LIB([sqlite3], [sqlite3_exec])
LIBS="$_save_LIBS"
_save_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS $SQLITE3_CFLAGS"
AC_CHECK_HEADER([sqlite3.h])
CFLAGS="$_save_CFLAGS"
])
;;
no)
AC_MSG_RESULT(no)
;;
esac ],
[
AC_MSG_RESULT(no)
]
)
dnl finish: sqlite3 handling
dnl start: RabbitMQ/AMQP handling
AC_MSG_CHECKING(whether to enable RabbitMQ/AMQP support)
AC_ARG_ENABLE(rabbitmq,
[ --enable-rabbitmq Enable RabbitMQ/AMQP support (default: no)],
[ case "$enableval" in
yes)
AC_MSG_RESULT(yes)
dnl reasonably old librabbitmq already support pkg-config
PKG_CHECK_MODULES([RABBITMQ], [librabbitmq >= 0.13.0], [
PLUGINS="${PLUGINS} rabbitmq"
USING_RABBITMQ="yes"
AC_DEFINE(WITH_RABBITMQ, 1)
USING_RABBITMQ_13="yes"
AC_DEFINE(WITH_RABBITMQ_13, 1)
PMACCT_CFLAGS="$PMACCT_CFLAGS $RABBITMQ_CFLAGS"
_save_LIBS="$LIBS"
LIBS="$LIBS $RABBITMQ_LIBS"
AC_CHECK_LIB([rabbitmq], [amqp_basic_publish])
LIBS="$_save_LIBS"
_save_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS $RABBITMQ_CFLAGS"
AC_CHECK_HEADER([rabbitmq-c/amqp.h])
CFLAGS="$_save_CFLAGS"
], [
USING_RABBITMQ_13="no"
])
AS_IF([test "$USING_RABBITMQ_13" = "no"], [
PKG_CHECK_MODULES([RABBITMQ], [librabbitmq >= 0.9.0], [
PLUGINS="${PLUGINS} rabbitmq"
USING_RABBITMQ="yes"
AC_DEFINE(WITH_RABBITMQ, 1)
USING_RABBITMQ_9="yes"
AC_DEFINE(WITH_RABBITMQ_9, 1)
PMACCT_CFLAGS="$PMACCT_CFLAGS $RABBITMQ_CFLAGS"
_save_LIBS="$LIBS"
LIBS="$LIBS $RABBITMQ_LIBS"
AC_CHECK_LIB([rabbitmq], [amqp_basic_publish])
LIBS="$_save_LIBS"
_save_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS $RABBITMQ_CFLAGS"
AC_CHECK_HEADER([amqp.h])
CFLAGS="$_save_CFLAGS"
], [
AC_MSG_ERROR([Missing RabbitMQ C API. Refer to: https://github.com/alanxz/rabbitmq-c/])
])
])
;;
no)
AC_MSG_RESULT(no)
;;
esac ],
[
AC_MSG_RESULT(no)
]
)
dnl finish: RabbitMQ/AMQP handling
dnl start: ZeroMQ handling
AC_MSG_CHECKING(whether to enable ZeroMQ support)
AC_ARG_ENABLE(zmq,
[ --enable-zmq Enable ZeroMQ support (default: no)],
[ case "$enableval" in
yes)
AC_MSG_RESULT(yes)
PKG_CHECK_MODULES([ZMQ], [libzmq >= 4.2.0], [
SUPPORTS="${SUPPORTS} zmq"
USING_ZMQ="yes"
PMACCT_CFLAGS="$PMACCT_CFLAGS $ZMQ_CFLAGS"
AC_DEFINE(WITH_ZMQ, 1)
_save_LIBS="$LIBS"
LIBS="$LIBS $ZMQ_LIBS"
AC_CHECK_LIB([zmq], [zmq_send])
LIBS="$_save_LIBS"
_save_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS $ZMQ_CFLAGS"
AC_CHECK_HEADER([zmq.h])
CFLAGS="$_save_CFLAGS"
], [
AC_MSG_ERROR([Missing ZeroMQ. Refer to: http://zeromq.org/intro:get-the-software])
])
;;
no)
AC_MSG_RESULT(no)
;;
esac ],
[
AC_MSG_RESULT(no)
]
)
dnl finish: ZeroMQ handling
dnl start: Kafka handling
AC_MSG_CHECKING(whether to enable Kafka support)
AC_ARG_ENABLE(kafka,
[ --enable-kafka Enable Kafka support (default: no)],
[ case "$enableval" in
yes)
AC_MSG_RESULT(yes)
PKG_CHECK_MODULES([KAFKA], [rdkafka >= 0.9.2], [
PLUGINS="${PLUGINS} kafka"
USING_KAFKA="yes"
PMACCT_CFLAGS="$PMACCT_CFLAGS $KAFKA_CFLAGS"
AC_DEFINE(WITH_KAFKA, 1)
_save_LIBS="$LIBS"
LIBS="$LIBS $KAFKA_LIBS"
AC_CHECK_LIB([rdkafka], [rd_kafka_produce])
LIBS="$_save_LIBS"
_save_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS $KAFKA_CFLAGS"
AC_CHECK_HEADER([librdkafka/rdkafka.h])
CFLAGS="$_save_CFLAGS"
], [
AC_MSG_ERROR([Missing librdkafka. Refer to: https://github.com/edenhill/librdkafka/])
])
;;
no)
AC_MSG_RESULT(no)
;;
esac ],
[
AC_MSG_RESULT(no)
]
)
dnl finish: Kafka handling
dnl start: Redis handling
AC_MSG_CHECKING(whether to enable Redis support)
AC_ARG_ENABLE(redis,
[ --enable-redis Enable Redis support (default: no)],
[ case "$enableval" in
yes)
AC_MSG_RESULT(yes)
PKG_CHECK_MODULES([REDIS], [hiredis >= 0.13.0], [
SUPPORTS="${SUPPORTS} redis"
USING_REDIS="yes"
PMACCT_CFLAGS="$PMACCT_CFLAGS $REDIS_CFLAGS"
AC_DEFINE(WITH_REDIS, 1)
_save_LIBS="$LIBS"
LIBS="$LIBS $REDIS_LIBS"
AC_CHECK_LIB([hiredis], [redisConnect])
LIBS="$_save_LIBS"
_save_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS $REDIS_CFLAGS"
AC_CHECK_HEADER([hiredis/hiredis.h])
CFLAGS="$_save_CFLAGS"
])
;;
no)
AC_MSG_RESULT(no)
;;
esac ],
[
AC_MSG_RESULT(no)
]
)
dnl finish: Redis handling
dnl start: GnuTLS handling
AC_MSG_CHECKING(whether to enable GnuTLS support)
AC_ARG_ENABLE(gnutls,
[ --enable-gnutls Enable GnuTLS support (default: no)],
[ case "$enableval" in
yes)
AC_MSG_RESULT(yes)
PKG_CHECK_MODULES([GNUTLS], [gnutls >= 3.6], [
SUPPORTS="${SUPPORTS} gnutls"
USING_GNUTLS="yes"
PMACCT_CFLAGS="$PMACCT_CFLAGS $GNUTLS_CFLAGS"
AC_DEFINE(WITH_GNUTLS, 1)
_save_LIBS="$LIBS"
LIBS="$LIBS $GNUTLS_LIBS"
AC_CHECK_LIB([gnutls], [gnutls_global_init])
LIBS="$_save_LIBS"
_save_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS $GNUTLS_CFLAGS"
AC_CHECK_HEADER([gnutls/gnutls.h])
CFLAGS="$_save_CFLAGS"
])
;;
no)
AC_MSG_RESULT(no)
;;
esac ],
[
AC_MSG_RESULT(no)
]
)
dnl finish: GnuTLS handling
AC_MSG_CHECKING(whether to enable GeoIPv2 (libmaxminddb) support)
AC_ARG_ENABLE(geoipv2,
[ --enable-geoipv2 Enable GeoIPv2 (libmaxminddb) support (default: no)],
[ case "$enableval" in
yes)
AC_MSG_RESULT(yes)
PKG_CHECK_MODULES([GEOIPV2], [libmaxminddb >= 1.2], [
SUPPORTS="${SUPPORTS} geoipv2"
USING_MMGEOIPV2="yes"
PMACCT_CFLAGS="$PMACCT_CFLAGS $GEOIPV2_CFLAGS"
AC_DEFINE(WITH_GEOIPV2, 1)
_save_LIBS="$LIBS"
LIBS="$LIBS $GEOIPV2_LIBS"
AC_CHECK_LIB([maxminddb], [MMDB_open])
LIBS="$_save_LIBS"
_save_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS $GEOIPV2_CFLAGS"
AC_CHECK_HEADER([maxminddb.h])
CFLAGS="$_save_CFLAGS"
], [
AC_MSG_ERROR([Missing Maxmind libmaxminddb C library. Refer to: https://github.com/maxmind/libmaxminddb])
])
;;
no)
AC_MSG_RESULT(no)
;;
esac ],
[
AC_MSG_RESULT(no)
]
)
dnl finish: GeoIP handling
dnl start: Jansson handling
AC_MSG_CHECKING(whether to enable Jansson support)
AC_ARG_ENABLE(jansson,
[ --enable-jansson Enable Jansson support (default: no)],
[ case "$enableval" in
yes)
AC_MSG_RESULT(yes)
dnl reasonably old Jansson already support pkg-config
PKG_CHECK_MODULES([JANSSON], [jansson >= 2.5], [
SUPPORTS="${SUPPORTS} jansson"
USING_JANSSON="yes"
PMACCT_CFLAGS="$PMACCT_CFLAGS $JANSSON_CFLAGS"
AC_DEFINE(WITH_JANSSON, 1)
_save_LIBS="$LIBS"
LIBS="$LIBS $JANSSON_LIBS"
AC_CHECK_LIB([jansson], [json_object])
LIBS="$_save_LIBS"
_save_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS $JANSSON_CFLAGS"
AC_CHECK_HEADER([jansson.h])
CFLAGS="$_save_CFLAGS"
], [
AC_MSG_ERROR([Missing libjansson. Refer to: http://www.digip.org/jansson/])
])
;;
no)
AC_MSG_RESULT(no)
;;
esac ],
[
AC_MSG_RESULT(no)
]
)
dnl finish: Jansson handling
dnl start: Avro handling
AC_MSG_CHECKING(whether to enable Avro support)
AC_ARG_ENABLE(avro,
[ --enable-avro Enable Apache Avro support (default: no)],
[ case "$enableval" in
yes)
AC_MSG_RESULT(yes)
PKG_CHECK_MODULES([AVRO], [avro-c >= 1.8], [
SUPPORTS="${SUPPORTS} avro"
USING_AVRO="yes"
PMACCT_CFLAGS="$PMACCT_CFLAGS $AVRO_CFLAGS"
AC_DEFINE(WITH_AVRO, 1)
_save_LIBS="$LIBS"
LIBS="$LIBS $AVRO_LIBS"
AC_CHECK_LIB([avro], [avro_record_get])
LIBS="$_save_LIBS"
_save_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS $AVRO_CFLAGS"
AC_CHECK_HEADER([avro.h])
CFLAGS="$_save_CFLAGS"
], [
AC_MSG_ERROR([Missing Apache Avro C library. Refer to: http://www.apache.org/dyn/closer.cgi/avro/])
])
;;
no)
AC_MSG_RESULT(no)
;;
esac ],
[
AC_MSG_RESULT(no)
]
)
dnl finish: Avro handling
dnl start: libserdes handling
AC_MSG_CHECKING(whether to enable Confluent schema-registry support)
AC_ARG_ENABLE(serdes,
[ --enable-serdes Enable Confluent schema-registry support (default: no)],
[ case "$enableval" in
yes)
AC_MSG_RESULT(yes)
AC_SUBST(SERDES_CFLAGS)
AC_SUBST(SERDES_LIBS)
SUPPORTS="${SUPPORTS} serdes"
USING_SERDES="yes"
PMACCT_CFLAGS="$PMACCT_CFLAGS $SERDES_CFLAGS"
SERDES_LIBS="$SERDES_LIBS -lserdes"
AC_DEFINE(WITH_SERDES, 1)
_save_LIBS="$LIBS"
LIBS="$LIBS $SERDES_LIBS"
AC_CHECK_LIB([serdes], [serdes_new],, AC_MSG_ERROR([Missing Confluent serdes library. Refer to: https://github.com/confluentinc/libserdes]))
LIBS="$_save_LIBS"
_save_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS $SERDES_CFLAGS"
AC_CHECK_HEADER([libserdes/serdes.h],, AC_MSG_ERROR([Missing Confluent serdes headers. Refer to: https://github.com/confluentinc/libserdes]))
CFLAGS="$_save_CFLAGS"
;;
no)
AC_MSG_RESULT(no)
;;
esac ],
[
AC_MSG_RESULT(no)
]
)
dnl finish: libserdes handling
dnl start: nDPI handling
AC_ARG_WITH(ndpi-static-lib,
[ --with-ndpi-static-lib=DIR Search the specified directory for nDPI static library],
[
AC_LINEARIZE_PATH($withval, withval=$absdir)
NDPI_CUST_STATIC_LIB=$withval
])
if test x"$NDPI_CUST_STATIC_LIB" != x""; then
AC_MSG_CHECKING(your own nDPI library)
if test -r $NDPI_CUST_STATIC_LIB/libndpi.a; then
AC_MSG_RESULT(ok)
NDPI_CUST_STATIC_LIB_FOUND="yes"
else
AC_MSG_RESULT(no)
AC_MSG_ERROR(ERROR: unable to find nDPI library in $NDPI_CUST_STATIC_LIB)
fi
fi
AC_MSG_CHECKING(whether to enable nDPI support)
AC_ARG_ENABLE(ndpi,
[ --enable-ndpi Enable nDPI support (default: no)],
[ case "$enableval" in
yes)
AC_MSG_RESULT(yes)
PKG_CHECK_MODULES([NDPI], [libndpi >= 4.6], [
SUPPORTS="${SUPPORTS} ndpi"
USING_NDPI="yes"
if test x"$NDPI_CFLAGS" != x""; then
NDPI_CFLAGS_INST=`echo $NDPI_CFLAGS | sed 's/ $//'`
NDPI_CFLAGS_INST="$NDPI_CFLAGS_INST/libndpi"
else
NDPI_CFLAGS_INST=""
fi
PMACCT_CFLAGS="$PMACCT_CFLAGS $NDPI_CFLAGS $NDPI_CFLAGS_INST"
AC_DEFINE(WITH_NDPI, 1)
_save_LIBS="$LIBS"
LIBS="$LIBS $NDPI_LIBS"
AC_CHECK_LIB([ndpi], [ndpi_init_detection_module])
LIBS="$_save_LIBS"
_save_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS $NDPI_CFLAGS"
AC_CHECK_HEADER([libndpi/ndpi_main.h])
CFLAGS="$_save_CFLAGS"
],
[AC_MSG_ERROR([Missing nDPI API. Refer to: https://github.com/ntop/nDPI/])])
;;
no)
AC_MSG_RESULT(no)
;;
esac ],
[
AC_MSG_RESULT(no)
]
)
dnl finish: nDPI handling
dnl start: unyte udp notif handling
AC_MSG_CHECKING(whether to enable Unyte UDP-Notif support)
AC_ARG_ENABLE(unyte-udp-notif,
[ --enable-unyte-udp-notif Enable Unyte UDP Notif support (default: no)],
[ case "$enableval" in
yes)
AC_MSG_RESULT(yes)
PKG_CHECK_MODULES([UNYTE_UDP_NOTIF], [unyte-udp-notif >= 0.6.0], [
AC_SUBST(UNYTE_UDP_NOTIF_CFLAGS)
AC_SUBST(UNYTE_UDP_NOTIF_LIBS)
SUPPORTS="${SUPPORTS} unyte-udp-notif"
USING_UNYTE_UDP_NOTIF="yes"
PMACCT_CFLAGS="$PMACCT_CFLAGS $UNYTE_UDP_NOTIF_CFLAGS"
UNYTE_UDP_NOTIF_LIBS="$UNYTE_UDP_NOTIF_LIBS -lunyte-udp-notif"
AC_DEFINE(WITH_UNYTE_UDP_NOTIF, 1)
_save_LIBS="$LIBS"
LIBS="$LIBS $UNYTE_UDP_NOTIF_LIBS -lpthread"
AC_CHECK_LIB([unyte-udp-notif], [unyte_udp_start_collector], [], [AC_MSG_ERROR([
ERROR: missing unyte-udp-notif library. Refer to: https://github.com/network-analytics/udp-notif-c-collector
])])
LIBS="$_save_LIBS"
_save_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS $UNYTE_UDP_NOTIF_CFLAGS"
AC_CHECK_HEADER([unyte-udp-notif/unyte_udp_collector.h], [], [AC_MSG_ERROR(ERROR: missing unyte-udp-notif headers)])
CFLAGS="$_save_CFLAGS"
],
[AC_MSG_ERROR([ERROR: missing unyte-udp-notif pkg-config. Refer to: https://github.com/network-analytics/udp-notif-c-collector])])
;;
no)
AC_MSG_RESULT(no)
;;
esac ],
[
AC_MSG_RESULT(no)
]
)
dnl finish: unyte udp notif handling
dnl start: grpc-collector handling
AC_MSG_CHECKING(whether to enable grpc-collector support)
AC_ARG_ENABLE(grpc-collector,
[ --enable-grpc-collector Enable grpc-collector support (default: no)],
[ case "$enableval" in
yes)
AC_MSG_RESULT(yes)
PKG_CHECK_MODULES([GRPC_COLLECTOR], [grpc-collector >= v1.0.0], [
AC_SUBST(GRPC_COLLECTOR_CFLAGS)
AC_SUBST(GRPC_COLLECTOR_LIBS)
SUPPORTS="${SUPPORTS} grpc-collector"
USING_GRPC_COLLECTOR="yes"
PMACCT_CFLAGS="$PMACCT_CFLAGS $GRPC_COLLECTOR_CFLAGS"
GRPC_COLLECTOR_LIBS="$GRPC_COLLECTOR_LIBS -lgrpc_collector -lpthread"
AC_DEFINE(WITH_GRPC_COLLECTOR, 1)
_save_LIBS="$LIBS"
LIBS="$LIBS $GRPC_COLLECTOR_LIBS"
LIBS="$_save_LIBS"
_save_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS $GRPC_COLLECTOR_CFLAGS"
AC_CHECK_HEADER([grpc_collector_bridge/grpc_collector_bridge.h], [], [AC_MSG_ERROR(ERROR: missing grpc-collector headers)])
CFLAGS="$_save_CFLAGS"
],
[AC_MSG_ERROR([ERROR: missing grpc-collector pkg-config. Refer to: https://github.com/network-analytics/mdt-dialout-collector])])
;;
no)
AC_MSG_RESULT(no)
;;
esac ],
[
AC_MSG_RESULT(no)
]
)
dnl finish: grpc-collector handling
dnl start: eBPF handling
AC_MSG_CHECKING(whether to enable eBPF support)
AC_ARG_ENABLE(ebpf,
[ --enable-ebpf Enable eBPF support (default: no)],
[ case "$enableval" in
yes)
AC_MSG_RESULT(yes)
AC_SUBST(EBPF_CFLAGS)
AC_SUBST(EBPF_LIBS)
SUPPORTS="${SUPPORTS} ebpf"
USING_EBPF="yes"
PMACCT_CFLAGS="$PMACCT_CFLAGS $EBPF_CFLAGS"
EBPF_LIBS="$EBPF_LIBS -lbpf"
AC_DEFINE(WITH_EBPF, 1)
_save_LIBS="$LIBS"
LIBS="$LIBS $EBPF_LIBS"
AC_CHECK_LIB([bpf], [bpf_object__open_file], [], [AC_MSG_ERROR([
ERROR: missing libbpf library. Refer to: https://github.com/libbpf/libbpf
])])
LIBS="$_save_LIBS"
_save_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS $EBPF_CFLAGS"
AC_CHECK_HEADER([bpf/libbpf.h], [], [AC_MSG_ERROR(ERROR: missing libbpf headers)])
CFLAGS="$_save_CFLAGS"
;;
no)
AC_MSG_RESULT(no)
;;
esac ],
[
AC_MSG_RESULT(no)
]
)
dnl finish: ebpf handling
if test x"$USING_DLOPEN" = x"yes"; then
AC_DEFINE(HAVE_DLOPEN, 1)
else
# Adding linking to libdl here 1) if required and 2) in case of --disable-so
if test x"$USING_MYSQL" = x"yes" -o x"$USING_SQLITE3" = x"yes"; then
AC_CHECK_LIB([dl], [dlopen], [LIBS="${LIBS} -ldl"], [AC_MSG_ERROR([
ERROR: missing libdl devel.
])])
fi
fi
if test x"$USING_SQL" = x"yes"; then
AC_CHECK_LIB([z], [zlibVersion], [], [AC_MSG_ERROR([ERROR: missing zlib. Requirement for building SQL plugins.])])
fi
LIBS="${LIBS} -lm -lpthread"
dnl Extra checks for header files
AC_CHECK_HEADERS([arpa/inet.h assert.h ctype.h dirent.h dlfcn.h errno.h fcntl.h getopt.h grp.h inttypes.h])
AC_CHECK_HEADERS([limits.h malloc.h math.h netdb.h net/if.h netinet/in.h netinet/in_systm.h netinet/ip.h])
AC_CHECK_HEADERS([netinet/udp.h pthread.h pwd.h signal.h string.h sys/ansi.h sys/errno.h sys/file.h])
AC_CHECK_HEADERS([sys/ioctl.h syslog.h sys/mbuf.h sys/mman.h sys/param.h sys/poll.h sys/resource.h])
AC_CHECK_HEADERS([sys/select.h sys/socket.h sys/stat.h sys/time.h sys/types.h sys/un.h sys/utsname.h])
AC_CHECK_HEADERS([sys/wait.h time.h unistd.h])
dnl Checks for typedefs, structures, and compiler characteristics.
AC_CHECK_TYPE(u_int64_t, [AC_DEFINE(HAVE_U_INT64_T, 1)])
AC_CHECK_TYPE(u_int32_t, [AC_DEFINE(HAVE_U_INT32_T, 1)])
AC_CHECK_TYPE(u_int16_t, [AC_DEFINE(HAVE_U_INT16_T, 1)])
AC_CHECK_TYPE(u_int8_t, [AC_DEFINE(HAVE_U_INT8_T, 1)])
AC_CHECK_TYPE(uint64_t, [AC_DEFINE(HAVE_UINT64_T, 1)])
AC_CHECK_TYPE(uint32_t, [AC_DEFINE(HAVE_UINT32_T, 1)])
AC_CHECK_TYPE(uint16_t, [AC_DEFINE(HAVE_UINT16_T, 1)])
AC_CHECK_TYPE(uint8_t, [AC_DEFINE(HAVE_UINT8_T, 1)])
AC_MSG_CHECKING(whether to enable NFLOG support)
AC_ARG_ENABLE(nflog,
[ --enable-nflog Enable NFLOG support (default: no)],
[ case "$enableval" in
yes)
AC_MSG_RESULT(yes)
PKG_CHECK_MODULES([NFLOG], [libnetfilter_log >= 1], [
SUPPORTS="${SUPPORTS} nflog"
USING_NFLOG="yes"
AC_DEFINE(WITH_NFLOG, 1)
])
;;
no)
AC_MSG_RESULT(no)
;;
esac ],
AC_MSG_RESULT(no))
AC_MSG_CHECKING(whether to link IPv4/IPv6 traffic accounting accounting binaries)
AC_ARG_ENABLE(traffic-bins,
[ --enable-traffic-bins Link IPv4/IPv6 traffic accounting binaries (default: yes)],
[
if test x$enableval = x"yes" ; then
AC_MSG_RESULT(yes)
AC_DEFINE(HAVE_TRAFFIC_BINS, 1)
USING_TRAFFIC_BINS="yes"
else
AC_MSG_RESULT(no)
fi
],
[
AC_MSG_RESULT(yes)
AC_DEFINE(HAVE_TRAFFIC_BINS, 1)
USING_TRAFFIC_BINS="yes"
COMPILE_ARGS="${COMPILE_ARGS} '--enable-traffic-bins'"
]
)
AC_MSG_CHECKING(whether to link BGP daemon binaries)
AC_ARG_ENABLE(bgp-bins,
[ --enable-bgp-bins Link BGP daemon binaries (default: yes)],
[
if test x$enableval = x"yes" ; then
AC_MSG_RESULT(yes)
AC_DEFINE(HAVE_BGP_BINS, 1)
USING_BGP_BINS="yes"
else
AC_MSG_RESULT(no)
fi
],
[
AC_MSG_RESULT(yes)
AC_DEFINE(HAVE_BGP_BINS, 1)
USING_BGP_BINS="yes"
COMPILE_ARGS="${COMPILE_ARGS} '--enable-bgp-bins'"
]
)
AC_MSG_CHECKING(whether to link BMP daemon binaries)
AC_ARG_ENABLE(bmp-bins,
[ --enable-bmp-bins Link BMP daemon binaries (default: yes)],
[
if test x$enableval = x"yes" ; then
AC_MSG_RESULT(yes)
AC_DEFINE(HAVE_BMP_BINS, 1)
USING_BMP_BINS="yes"
else
AC_MSG_RESULT(no)
fi
],
[
AC_MSG_RESULT(yes)
AC_DEFINE(HAVE_BMP_BINS, 1)
USING_BMP_BINS="yes"
COMPILE_ARGS="${COMPILE_ARGS} '--enable-bmp-bins'"
]
)
AC_MSG_CHECKING(whether to link Streaming Telemetry daemon binaries)
AC_ARG_ENABLE(st-bins,
[ --enable-st-bins Link Streaming Telemetry daemon binaries (default: yes)],
[
if test x$enableval = x"yes" ; then
AC_MSG_RESULT(yes)
AC_DEFINE(HAVE_ST_BINS, 1)
USING_ST_BINS="yes"
else
AC_MSG_RESULT(no)
fi
],
[
AC_MSG_RESULT(yes)
AC_DEFINE(HAVE_ST_BINS, 1)
USING_ST_BINS="yes"
COMPILE_ARGS="${COMPILE_ARGS} '--enable-st-bins'"
]
)
AC_CHECK_FUNCS([setproctitle mallopt tdestroy strlcpy vfork])
dnl Check for SO_BINDTODEVICE
AC_CHECK_DECL([SO_BINDTODEVICE],
AC_DEFINE(HAVE_SO_BINDTODEVICE, 1, [Check if kernel supports SO_BINDTODEVICE]),,
[
#include
]
)
dnl Check for SO_REUSEPORT & friends
AC_CHECK_DECL([SO_REUSEPORT],
AC_DEFINE(HAVE_SO_REUSEPORT, 1, [Check if kernel supports SO_REUSEPORT]),,
[
#include
#include
]
)
AC_CHECK_DECL([SO_ATTACH_REUSEPORT_EBPF],
AC_DEFINE(HAVE_SO_ATTACH_REUSEPORT_EBPF, 1, [Check if kernel supports SO_ATTACH_REUSEPORT_EBPF]),,
[
#include
#include
]
)
dnl --------------------------------------
dnl Git submodule Dependencies buid system
dnl --------------------------------------
dnl First check whether to build git submodule deps
WITH_EXTERNAL_DEPS_DEFAULT=yes
if [ test ! -f "$srcdir/src/external_libs/libcdada/include/cdada.h" ] && [ test -z `git rev-parse HEAD 2> /dev/null` ]; then
WITH_EXTERNAL_DEPS_DEFAULT=no
fi
AC_MSG_CHECKING([whether external dependencies (git submodules) should be compiled])
AC_ARG_WITH(external-deps,
AS_HELP_STRING([--without-external-deps], [Do not build external dependencies (git submodules), specially useful for package maintainers [default=with]]),
[WITH_EXTERNAL_DEPS="$withval"],
[WITH_EXTERNAL_DEPS="$WITH_EXTERNAL_DEPS_DEFAULT"]
)
if test x"$WITH_EXTERNAL_DEPS" = x"yes"; then
dnl Compiled-in dependencies
INCLUDES="-I${ac_pwd}/src/external_libs/rootfs/include ${INCLUDES} "
LDFLAGS="-L${ac_pwd}/src/external_libs/rootfs/lib ${LDFLAGS}"
AC_MSG_RESULT(yes)
else
AC_MSG_RESULT(no)
fi
AM_CONDITIONAL([WITH_EXTERNAL_DEPS], [test "x$WITH_EXTERNAL_DEPS" = "xyes"])
AS_CASE(["$AM_DEFAULT_VERBOSITY"],
[0], [AC_SUBST([configure_silent_rules_val], [--enable-silent-rules])],
[1], [AC_SUBST([configure_silent_rules_val], [--disable-silent-rules])],
[AC_SUBST([configure_silent_rules_val], [--enable-silent-rules])])
dnl --------------------------------------
dnl libcdada requires C++ (and needs to add libstdc++ to LDFLAGS
AC_PROG_CXX
AC_MSG_CHECKING([for a valid C++ compiler])
AC_LANG_PUSH([C++])
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],[AC_MSG_RESULT(yes)],[AC_MSG_ERROR([No C++ compiler found])])
AC_LANG_POP([C++])
LIBS="-lcdada -lstdc++ ${LIBS}"
AS_CASE(["$WITH_EXTERNAL_DEPS"],
[yes], [],
[no], [AC_CHECK_LIB([cdada], [cdada_get_ver], [], [AC_MSG_ERROR([Could not find libcdada])])],
[])
dnl set debug level
AC_MSG_CHECKING([whether to enable debugging compiler options])
AC_ARG_ENABLE(debug,
[ --enable-debug Enable debugging compiler options (default: no)],
[
if test x$enableval = x"yes" ; then
AC_MSG_RESULT(yes)
tmp_CFLAGS=`echo $CFLAGS | sed 's/O2/O0/g'`
CFLAGS="$tmp_CFLAGS"
CFLAGS="$CFLAGS -g -Wall -Werror"
else
CFLAGS="$CFLAGS -Wall -Werror"
AC_MSG_RESULT(no)
fi
],
[
AC_MSG_RESULT(no)
]
)
dnl Necessary for autogenerated build string
INCLUDES="${INCLUDES} -I$(pwd)/src"
dnl final checks
dnl trivial solution to portability issue
AC_DEFINE_UNQUOTED(COMPILE_ARGS, "$COMPILE_ARGS")
CFLAGS="${CFLAGS} ${INCLUDES}"
INCLUDES=""
echo "
PLATFORM ..... : `uname -m`
OS ........... : `uname -rs` (`uname -n`)
COMPILER ..... : ${CC}
CFLAGS ....... : ${CFLAGS}
LIBS ......... : ${LIBS}
LDFLAGS ...... : ${LDFLAGS}
PLUGINS ...... : ${PLUGINS}
SUPPORTS ..... : ${SUPPORTS}
Now type 'make' to compile the source code.
Wanting to get in touch with other pmacct users?
Join the pmacct mailing-list with an email to [email protected]
Need for documentation and examples?
Start by reading the README.md file
Star, watch or contribute to the project on GitHub:
https://github.com/pmacct/pmacct
"
AC_SUBST([PMACCT_CFLAGS])
AM_CONDITIONAL([WITH_MYSQL], [test x"$USING_MYSQL" = x"yes"])
AM_CONDITIONAL([WITH_PGSQL], [test x"$USING_PGSQL" = x"yes"])
AM_CONDITIONAL([WITH_MONGODB], [test x"$USING_MONGODB" = x"yes"])
AM_CONDITIONAL([WITH_SQLITE3], [test x"$USING_SQLITE3" = x"yes"])
AM_CONDITIONAL([WITH_RABBITMQ], [test x"$USING_RABBITMQ" = x"yes"])
AM_CONDITIONAL([WITH_RABBITMQ_9], [test x"$USING_RABBITMQ_9" = x"yes"])
AM_CONDITIONAL([WITH_RABBITMQ_13], [test x"$USING_RABBITMQ_13" = x"yes"])
AM_CONDITIONAL([WITH_ZMQ], [test x"$USING_ZMQ" = x"yes"])
AM_CONDITIONAL([WITH_KAFKA], [test x"$USING_KAFKA" = x"yes"])
AM_CONDITIONAL([WITH_REDIS], [test x"$USING_REDIS" = x"yes"])
AM_CONDITIONAL([WITH_GNUTLS], [test x"$USING_GNUTLS" = x"yes"])
AM_CONDITIONAL([USING_SQL], [test x"$USING_SQL" = x"yes"])
AM_CONDITIONAL([WITH_JANSSON], [test x"$USING_JANSSON" = x"yes"])
AM_CONDITIONAL([WITH_AVRO], [test x"$USING_AVRO" = x"yes"])
AM_CONDITIONAL([WITH_SERDES], [test x"$USING_SERDES" = x"yes"])
AM_CONDITIONAL([WITH_NDPI], [test x"$USING_NDPI" = x"yes"])
AM_CONDITIONAL([WITH_UNYTE_UDP_NOTIF], [test x"$USING_UNYTE_UDP_NOTIF" = x"yes"])
AM_CONDITIONAL([WITH_GRPC_COLLECTOR], [test x"$USING_GRPC_COLLECTOR" = x"yes"])
AM_CONDITIONAL([WITH_EBPF], [test x"$USING_EBPF" = x"yes"])
AM_CONDITIONAL([WITH_NFLOG], [test x"$USING_NFLOG" = x"yes"])
AM_CONDITIONAL([WITH_DLOPEN], [test x"$USING_DLOPEN" = x"yes"])
AM_CONDITIONAL([USING_TRAFFIC_BINS], [test x"$USING_TRAFFIC_BINS" = x"yes"])
AM_CONDITIONAL([USING_BGP_BINS], [test x"$USING_BGP_BINS" = x"yes"])
AM_CONDITIONAL([USING_BMP_BINS], [test x"$USING_BMP_BINS" = x"yes"])
AM_CONDITIONAL([USING_ST_BINS], [test x"$USING_ST_BINS" = x"yes"])
AC_CONFIG_FILES([
src/pmacct-version.h Makefile \
src/Makefile src/external_libs/Makefile \
src/nfprobe_plugin/Makefile \
src/sfprobe_plugin/Makefile src/bgp/Makefile \
src/tee_plugin/Makefile src/isis/Makefile \
src/bmp/Makefile src/rpki/Makefile \
src/telemetry/Makefile src/ndpi/Makefile \
src/filters/Makefile examples/lg/Makefile \
src/ebpf/Makefile examples/custom/Makefile ])
AC_OUTPUT