mirror of
https://github.com/vel21ripn/nDPI.git
synced 2026-05-02 17:00:16 +00:00
165 lines
5.2 KiB
Text
165 lines
5.2 KiB
Text
AC_INIT([libndpi], [@NDPI_VERSION_SHORT@])
|
|
|
|
AC_CONFIG_MACRO_DIR([m4])
|
|
|
|
AM_INIT_AUTOMAKE([foreign subdir-objects])
|
|
|
|
LT_INIT
|
|
|
|
AC_PROG_CC
|
|
AM_PROG_CC_C_O
|
|
AC_PROG_CXX
|
|
AC_PROG_CC_STDC
|
|
AC_LANG_WERROR
|
|
AX_PTHREAD
|
|
|
|
NDPI_VERSION_SHORT="@NDPI_VERSION_SHORT@"
|
|
NDPI_MAJOR="@NDPI_MAJOR@"
|
|
NDPI_MINOR="@NDPI_MINOR@"
|
|
NDPI_PATCH="@NDPI_PATCH@"
|
|
|
|
AC_DEFINE_UNQUOTED(NDPI_MAJOR_RELEASE, "${NDPI_MAJOR}", [nDPI major release])
|
|
AC_DEFINE_UNQUOTED(NDPI_MINOR_RELEASE, "${NDPI_MINOR}", [nDPI minor release])
|
|
AC_DEFINE_UNQUOTED(NDPI_PATCH_LEVEL, "${NDPI_PATCH}", [nDPI patch level])
|
|
|
|
if test -d ".git"; then :
|
|
GIT_TAG=`git log -1 --format=%h`
|
|
GIT_DATE=`git log -1 --format=%cd`
|
|
#
|
|
# On CentOS 6 `git rev-list HEAD --count` does not work
|
|
#
|
|
#
|
|
GIT_NUM=`git log --pretty=oneline | wc -l | tr -d '[[:space:]]'`
|
|
GIT_RELEASE="${PACKAGE_VERSION}-${GIT_NUM}-${GIT_TAG}"
|
|
else
|
|
GIT_RELEASE="${PACKAGE_VERSION}"
|
|
GIT_DATE=`date -u -r CHANGELOG.md`
|
|
fi
|
|
|
|
AC_DEFINE_UNQUOTED(NDPI_GIT_RELEASE, "${GIT_RELEASE}", [GIT Release])
|
|
AC_DEFINE_UNQUOTED(NDPI_GIT_DATE, "${GIT_DATE}", [Last GIT change])
|
|
|
|
AC_CHECK_HEADERS([netinet/in.h stdint.h stdlib.h string.h unistd.h])
|
|
|
|
PCAP_HOME=$HOME/PF_RING/userland
|
|
|
|
DPDK_TARGET=
|
|
if test -d $HOME/DPDK; then :
|
|
echo "Enabling DPDK support in ndpiReader"
|
|
DPDK_TARGET=dpdk
|
|
else
|
|
echo "DPDK support disabled (missing $HOME/DPDK)"
|
|
fi
|
|
|
|
if test -d $PCAP_HOME; then :
|
|
echo -n ""
|
|
else
|
|
PCAP_HOME=`pwd`/../../PF_RING/userland
|
|
fi
|
|
SHORT_MACHINE=`uname -m | cut -b1-3`
|
|
if test $SHORT_MACHINE = "arm"; then
|
|
LIBNUMA=""
|
|
else
|
|
AC_CHECK_LIB([numa], [numa_available], [LIBNUMA="-lnuma"])
|
|
fi
|
|
|
|
MACHINE=`uname -m`
|
|
SYSTEM=`uname -s`
|
|
if test $SYSTEM = "Darwin"; then
|
|
CC=clang
|
|
fi
|
|
|
|
CUSTOM_NDPI=
|
|
|
|
if test -d ../nDPI-custom; then :
|
|
CUSTOM_NDPI="-DCUSTOM_NDPI_PROTOCOLS"
|
|
AC_MSG_RESULT([Compiling with custom nDPI protocols])
|
|
fi
|
|
|
|
AC_ARG_WITH(hyperscan, [ --with-hyperscan Enable nDPI build with Intel Hyperscan])
|
|
|
|
AS_IF([test "${with_hyperscan+set}" = set],[
|
|
BKP=$LIBS
|
|
LIBS="$LIBS -lstdc++ -lm"
|
|
AC_CHECK_LIB([hs], [hs_compile_multi], AC_DEFINE_UNQUOTED(HAVE_HYPERSCAN, 1, [Intel Hyperscan is present]))
|
|
LIBS=$BKP
|
|
|
|
AS_IF([test "x$ac_cv_lib_hs_hs_compile_multi" = xyes],[
|
|
AC_CHECK_LIB([m], [pow])
|
|
AC_CHECK_LIB([stdc++], [main])
|
|
PKG_CHECK_MODULES([HS],[libhs])
|
|
LDFLAGS="$LDFLAGS $HS_LIBS"
|
|
AC_MSG_RESULT([compiling with Intel Hyperscan])
|
|
],[
|
|
AC_MSG_RESULT([Intel Hyperscan not found, exiting. See https://github.com/intel/hyperscan/blob/master/doc/dev-reference/getting_started.rst for install/build instructions])
|
|
exit 1
|
|
])
|
|
])
|
|
|
|
if test -f $PCAP_HOME/libpcap/libpcap.a; then :
|
|
echo "Using libpcap from $PCAP_HOME"
|
|
PCAP_INC="-I $PCAP_HOME/libpcap"
|
|
PCAP_LIB="$PCAP_HOME/libpcap/libpcap.a $PCAP_HOME/lib/libpfring.a $LIBNUMA `$PCAP_HOME/lib/pfring_config --libs`"
|
|
|
|
AC_CHECK_LIB([rt], [clock_gettime], [PCAP_LIB="$PCAP_LIB -lrt"])
|
|
AC_CHECK_LIB([nl], [nl_handle_alloc], [PCAP_LIB="$PCAP_LIB -lnl"])
|
|
# The dlopen() function is in libdl on GLIBC-based systems
|
|
# and in the C library for *BSD systems
|
|
AC_CHECK_LIB([dl], [dlopen, dlsym], [DL_LIB="-ldl"],
|
|
[AC_CHECK_LIB([c], [dlopen, dlsym], [DL_LIB="-lc"],
|
|
[AC_MSG_ERROR([unable to find the dlopen(), dlsym() functions]) ]) ])
|
|
else
|
|
AC_CHECK_LIB([pcap], [pcap_open_live], [PCAP_LIB="-lpcap"])
|
|
|
|
if test $ac_cv_lib_pcap_pcap_open_live = "no"; then :
|
|
echo ""
|
|
echo "ERROR: Missing libpcap(-dev) library required to compile the example application"
|
|
echo "ERROR: Please install it and try again"
|
|
exit
|
|
fi
|
|
fi
|
|
|
|
dnl> https://github.com/json-c/json-c
|
|
AC_ARG_ENABLE([json-c],
|
|
AS_HELP_STRING([--disable-json-c], [Disable json-c support]))
|
|
|
|
AS_IF([test "x$enable_json_c" != "xno"], [
|
|
PKG_CHECK_MODULES([JSONC],[json-c],
|
|
[
|
|
CFLAGS="$CFLAGS $JSONC_CFLAGS"
|
|
LDFLAGS="$LDFLAGS $JSONC_LIBS"
|
|
AC_CHECK_LIB(json-c, json_object_new_object, AC_DEFINE_UNQUOTED(HAVE_JSON_C, 1, [The JSON-C library is present]))
|
|
],
|
|
[
|
|
JSONC_HOME="$HOME/json-c"
|
|
if test -d "$JSONC_HOME"; then :
|
|
CFLAGS="$CFLAGS -I $JSONC_HOME"
|
|
LDFLAGS="$LDFLAGS $JSONC_HOME/.libs/libjson-c.a"
|
|
AC_MSG_RESULT([Found json-c in $JSONC_HOME])
|
|
AC_DEFINE_UNQUOTED(HAVE_JSON_C, 1, [The JSON-C library is present])
|
|
fi
|
|
])
|
|
])
|
|
|
|
AC_ARG_ENABLE([debug-messages],
|
|
AS_HELP_STRING([--enable-debug-messages], [Define NDPI_ENABLE_DEBUG_MESSAGES=1]), [
|
|
AC_DEFINE(NDPI_ENABLE_DEBUG_MESSAGES, 1, [Enable ndpi_debug_messages]) ])
|
|
|
|
AC_CHECK_LIB(pthread, pthread_setaffinity_np, AC_DEFINE_UNQUOTED(HAVE_PTHREAD_SETAFFINITY_NP, 1, [libc has pthread_setaffinity_np]))
|
|
|
|
AC_CONFIG_FILES([Makefile example/Makefile example/Makefile.dpdk tests/Makefile libndpi.pc src/include/ndpi_define.h src/lib/Makefile python/Makefile])
|
|
AC_CONFIG_HEADERS(src/include/ndpi_config.h)
|
|
AC_SUBST(GIT_RELEASE)
|
|
AC_SUBST(NDPI_MAJOR)
|
|
AC_SUBST(NDPI_MINOR)
|
|
AC_SUBST(NDPI_PATCH)
|
|
AC_SUBST(NDPI_VERSION_SHORT)
|
|
AC_SUBST(SVN_DATE)
|
|
AC_SUBST(JSON_C_LIB)
|
|
AC_SUBST(PCAP_INC)
|
|
AC_SUBST(PCAP_LIB)
|
|
AC_SUBST(DL_LIB)
|
|
AC_SUBST(DPDK_TARGET)
|
|
AC_SUBST(HAVE_PTHREAD_SETAFFINITY_NP)
|
|
AC_SUBST(CUSTOM_NDPI)
|
|
AC_OUTPUT
|