mirror of
https://github.com/ntop/ntopng.git
synced 2026-05-02 00:40:10 +00:00
451 lines
12 KiB
Text
451 lines
12 KiB
Text
dnl> Do not add anything above
|
|
AC_INIT([ntopng],[@VERSION@])
|
|
dnl> Do not add anything above
|
|
|
|
AC_PROG_CPP
|
|
|
|
dnl> Add /usr/local/ /opt/local
|
|
CFLAGS="-I${PWD} -I${PWD}/include"
|
|
CPPFLAGS="${CPPFLAGS} -I${PWD} -I${PWD}/include"
|
|
NTOPNG_VERSION="@VERSION@"
|
|
NTOPNG_SHORT_VERSION="@SHORT_VERSION@"
|
|
|
|
#
|
|
# On CentOS 6 `git rev-list HEAD --count` does not work
|
|
#
|
|
#
|
|
REVISION=`git log --pretty=oneline | wc -l`
|
|
|
|
if test -d "/usr/local/include"; then
|
|
CFLAGS="${CFLAGS} -I/usr/local/include"
|
|
CPPFLAGS="${CPPFLAGS} -I/usr/local/include"
|
|
LDFLAGS="${LDFLAGS} -L/usr/local/lib"
|
|
fi
|
|
|
|
if test -d /opt/local/include; then :
|
|
CFLAGS="${CFLAGS} -I/opt/local/include"
|
|
CPPFLAGS="${CPPFLAGS} -I/opt/local/include"
|
|
fi
|
|
|
|
if test -d /opt/local/lib; then :
|
|
LDFLAGS="${LDFLAGS} -L/opt/local/lib"
|
|
fi
|
|
|
|
SHORT_MACHINE=`uname -m | cut -b1-3`
|
|
if test $SHORT_MACHINE = "arm"; then
|
|
LIBNUMA=""
|
|
else
|
|
LIBNUMA="-lnuma"
|
|
fi
|
|
|
|
GIT_RELEASE="@GIT_RELEASE@"
|
|
GIT_DATE="@GIT_DATE@"
|
|
GIT_BRANCH="@GIT_BRANCH@"
|
|
PRO_GIT_RELEASE="@PRO_GIT_RELEASE@"
|
|
PRO_GIT_DATE="@PRO_GIT_DATE@"
|
|
|
|
AC_MSG_CHECKING(for nDPI)
|
|
NDPI_HOME=./nDPI
|
|
if test -d "$NDPI_HOME" ; then :
|
|
AC_MSG_RESULT(found in $NDPI_HOME)
|
|
else
|
|
NDPI_HOME=../nDPI
|
|
if test -d "$NDPI_HOME"; then :
|
|
AC_MSG_RESULT(found in $NDPI_HOME)
|
|
else
|
|
NDPI_HOME=$HOME/nDPI
|
|
if test -d "$NDPI_HOME"; then :
|
|
AC_MSG_RESULT(found in $NDPI_HOME)
|
|
else
|
|
AC_MSG_RESULT(not found)
|
|
echo "Please do cd ..; git clone https://github.com/ntop/nDPI.git; cd nDPI; ./autogen.sh; make; cd ../ntopng"
|
|
echo " and try again"
|
|
exit
|
|
fi
|
|
fi
|
|
fi
|
|
|
|
NDPI_LIB=$NDPI_HOME/src/lib/.libs/libndpi.a
|
|
AC_MSG_CHECKING(for $NDPI_LIB)
|
|
if test -f "$NDPI_LIB" ; then :
|
|
AC_MSG_RESULT(found $NDPI_LIB)
|
|
else
|
|
AC_MSG_RESULT(not found $NDPI_LIB: compiling)
|
|
cd $NDPI_HOME; ./autogen.sh; make; cd -
|
|
fi
|
|
|
|
AC_MSG_CHECKING(for ntopng professional edition)
|
|
if test -d "pro"; then :
|
|
AC_MSG_RESULT(yes)
|
|
PRO_OBJECTS='$(patsubst pro/%.cpp, pro/%.o, $(wildcard pro/*.cpp)) $(patsubst pro/%.c, pro/%.o, $(wildcard pro/*.c))'
|
|
PRO_HEADERS='$(wildcard pro/*.h)'
|
|
PRO_MAKEFILE_INC="include ./pro/inc.Makefile"
|
|
PWD=`pwd`
|
|
CPPFLAGS="${CPPFLAGS} -I${PWD}/pro"
|
|
dnl> Remove heading spaces
|
|
AC_DEFINE_UNQUOTED(NTOPNG_PRO, 1, [Building ntopng professional])
|
|
AC_DEFINE_UNQUOTED(NTOPNG_PRO_GIT_RELEASE, "r${PRO_GIT_RELEASE}", [ntopng professional release])
|
|
AC_DEFINE_UNQUOTED(NTOPNG_PRO_GIT_DATE, "${PRO_GIT_DATE}", [ntopng professional date])
|
|
PRO_LIBS='$(PRO_LIBS)'
|
|
PRO_INC='$(PRO_INC)'
|
|
DUMMY=`cd ./pro; make build`
|
|
|
|
if test -r "../license/systemId.c"; then :
|
|
AC_DEFINE_UNQUOTED(NTOPNG_PRO_HAVE_LICENSE, 1, [ntopng has license])
|
|
fi
|
|
else
|
|
AC_MSG_RESULT(not found)
|
|
PRO_MAKEFILE_INC=
|
|
PRO_INC=
|
|
PRO_LIBS=
|
|
PRO_OBJECTS=
|
|
PRO_HEADERS=
|
|
PRO_LIBS=
|
|
fi
|
|
|
|
AC_DEFINE_UNQUOTED(NTOPNG_GIT_RELEASE, "${GIT_BRANCH}:${GIT_RELEASE}", [GIT Release])
|
|
AC_DEFINE_UNQUOTED(NTOPNG_GIT_DATE, "${GIT_DATE}", [Last GIT change])
|
|
|
|
if test -z `which pkg-config`; then
|
|
echo "#!/bin/sh\n" > pkg-config
|
|
fi
|
|
|
|
if test -f ".git/index"; then
|
|
GIT_INDEX=".git/index"
|
|
fi
|
|
|
|
MACHINE=`uname -m`
|
|
SYSTEM=`uname -s`
|
|
|
|
if test $SYSTEM = "Linux"; then
|
|
if test -f /etc/debian_version; then
|
|
DEBIAN_VERSION=`cat /etc/debian_version`
|
|
OSNAME="Debian $DEBIAN_VERSION"
|
|
else
|
|
OSNAME=`./config.guess`
|
|
fi
|
|
else
|
|
dnl> wget -O config.guess 'http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD'
|
|
OSNAME=`./config.guess`
|
|
fi
|
|
AC_DEFINE_UNQUOTED(PACKAGE_OSNAME, "${OSNAME}", [OS name])
|
|
|
|
if test $MACHINE = "x86_64"; then
|
|
EXTN="amd64"
|
|
else
|
|
if test $MACHINE = "i686"; then
|
|
EXTN="i386"
|
|
fi
|
|
fi
|
|
|
|
DATE=`date +"%Y-%m-%d"`
|
|
|
|
if test -d "/usr/include/hiredis"; then
|
|
AC_DEFINE_UNQUOTED(HAVE_HIREDIS, 1, [Local hiredis package present])
|
|
HIREDIS_INC="`pkg-config --cflags hiredis` -I/usr/include/hiredis"
|
|
HIREDIS_LIB="`pkg-config --libs hiredis` -lhiredis"
|
|
else
|
|
HIREDIS_INC="-I ${PWD}/third-party/hiredis"
|
|
fi
|
|
|
|
PF_RING_HOME=${HOME}/PF_RING
|
|
if test -d ${PF_RING_HOME}; then
|
|
AC_MSG_CHECKING(for PF_RING source installed in $PF_RING_HOME)
|
|
fi
|
|
|
|
if test -f "/usr/local/lib/libpfring.a" || test -f "/opt/pfring/lib/libpfring.a" || test -f "${PF_RING_HOME}/userland/lib/libpfring.a"; then
|
|
AC_DEFINE_UNQUOTED(HAVE_PF_RING, 1, [Native PF_RING support])
|
|
if test -f "${PF_RING_HOME}/userland/lib/libpfring.a"; then
|
|
echo "${PF_RING_HOME}/userland/libpcap/libpcap.a"
|
|
if test -f "${PF_RING_HOME}/userland/libpcap/libpcap.a"; then
|
|
LDFLAGS="${LDFLAGS} ${PF_RING_HOME}/userland/lib/libpfring.a -L${PF_RING_HOME}/userland/libpcap/ ${LIBNUMA} `${PF_RING_HOME}/userland/lib/pfring_config --libs`"
|
|
CPPFLAGS="${CPPFLAGS} -I${PF_RING_HOME}/kernel -I${PF_RING_HOME}/userland/lib -I${PF_RING_HOME}/userland/libpcap"
|
|
echo "Using PF_RING installed in ${PF_RING_HOME}"
|
|
else
|
|
echo "Found PF_RING but the userland libs have not been compiled"
|
|
exit
|
|
fi
|
|
else
|
|
if test -d "/opt/pfring"; then
|
|
if test -f "/opt/pfring/lib/libpfring.a"; then
|
|
echo "/opt/pfring/lib/libpfring.a"
|
|
LDFLAGS="${LDFLAGS} /opt/pfring/lib/libpfring.a -L/opt/pfring/lib"
|
|
CPPFLAGS="${CPPFLAGS} -I/opt/pfring/include"
|
|
echo "Using PF_RING installed in /opt/pfring"
|
|
else
|
|
if test -f "/usr/local/lib/libpfring.a"; then
|
|
if test -f "/usr/local/lib/libpcap.a"; then
|
|
LDFLAGS="${LDFLAGS} /usr/local/lib/libpfring.a"
|
|
echo "Using PF_RING installed in /usr/local/lib"
|
|
AC_CHECK_LIB([pcap], [pcap_open_live], pcap=true)
|
|
if test x$pcap = x
|
|
then
|
|
echo "Found /usr/local/lib/libpfring.a but missing header files."
|
|
exit
|
|
fi
|
|
else
|
|
echo "Found /usr/local/lib/libpfring.a but missing libpcap.a in the same directory"
|
|
echo "Please make sure you have installed your PF_RING libraries and try again"
|
|
exit
|
|
fi
|
|
fi
|
|
fi
|
|
else
|
|
LDFLAGS="${LDFLAGS} -lpfring"
|
|
echo "Compiling ntopng with PF_RING support"
|
|
fi
|
|
fi
|
|
AC_CHECK_LIB([numa], [numa_available], [LDFLAGS="${LDFLAGS} -lnuma"])
|
|
else
|
|
AC_CHECK_LIB([pcap], [pcap_open_live], pcap=true)
|
|
if test x$pcap = x
|
|
then
|
|
echo "Please install libpcap(-dev) (http://tcpdump.org)"
|
|
exit
|
|
fi
|
|
fi
|
|
|
|
PFRING_GIT_RELEASE=""
|
|
if test -d $HOME/PF_RING; then
|
|
PFRING_GIT_RELEASE=`cd $HOME/PF_RING ; git rev-list --all |wc -l`
|
|
fi
|
|
|
|
PFRING_VERSION=""
|
|
if test -f "$HOME/PF_RING/kernel/linux/pf_ring.h"; then
|
|
PFRING_VERSION=`cat $HOME/PF_RING/kernel/linux/pf_ring.h | grep RING_VERSION | head -1 | cut -d '"' -f 2`
|
|
fi
|
|
|
|
AC_CHECK_HEADERS([netinet/in.h libnetfilter_queue/libnetfilter_queue.h])
|
|
AC_CHECK_LIB([netfilter_queue], [nfq_create_queue])
|
|
AC_CHECK_FUNC([nfq_set_verdict2], [AC_DEFINE([HAVE_NFQ_SET_VERDICT2],[1],[Define if nfq_set_verdict2 exists in netfilter_queue.])])
|
|
|
|
if test "x$ac_cv_lib_netfilter_queue_nfq_create_queue" = xyes; then
|
|
AC_DEFINE_UNQUOTED(HAVE_NETFILTER, 1, [NFQ is present])
|
|
LDFLAGS="${LDFLAGS} -lnetfilter_queue"
|
|
fi
|
|
|
|
AC_CHECK_LIB([nl], [nl_handle_alloc], [LDFLAGS="${LDFLAGS} -lnl"])
|
|
AC_CHECK_LIB([rt], [clock_gettime], [LDFLAGS="${LDFLAGS} -lrt"])
|
|
|
|
dnl> ldl (used by edjdb)
|
|
AC_CHECK_LIB([dl], [dlopen], [LDFLAGS="${LDFLAGS} -ldl"])
|
|
|
|
AC_CHECK_LIB([curl], [curl_easy_perform], [LDFLAGS="${LDFLAGS} -lcurl"])
|
|
if test ${ac_cv_lib_curl_curl_easy_perform} = "no"; then
|
|
echo "Please install libcurl(-dev) (http://curl.haxx.se/)"
|
|
exit
|
|
fi
|
|
|
|
CFLAGS="-Wall $CFLAGS"
|
|
|
|
OS=""
|
|
if test $SYSTEM = "Darwin"; then
|
|
OSXV=`sw_vers -productVersion`
|
|
OS="MacOSX $OSXV"
|
|
if test $MACHINE = "x86_64"; then
|
|
LINK_OPTS="-pagezero_size 10000 -image_base 100000000"
|
|
RES=`g++ -Wall -fno-color-diagnostics Prefs.cpp 2>&1 | grep "unrecognized command line option "|wc -l`
|
|
if test $RES -eq 0; then
|
|
CFLAGS="-fno-color-diagnostics $CFLAGS"
|
|
fi
|
|
fi
|
|
else
|
|
if test $SYSTEM = "Linux"; then
|
|
if [ test -f /etc/redhat-release ]; then
|
|
OS=`cat /etc/redhat-release`
|
|
else
|
|
if [ test -f /usr/bin/lsb_release ]; then
|
|
OS=`/usr/bin/lsb_release -d|cut -d ':' -f 2`
|
|
fi
|
|
fi
|
|
fi
|
|
fi
|
|
|
|
dnl> Remove spaces
|
|
OS="${OS#"${OS%%[![:space:]]*}"}"
|
|
|
|
dnl> Check for package install
|
|
DOWNLOAD_GEOIP=0
|
|
AC_CHECK_LIB([GeoIP], [GeoIP_record_by_ipnum])
|
|
AC_HAVE_HEADERS(GeoIP.h)
|
|
if test ".${ac_cv_lib_GeoIP_GeoIP_record_by_ipnum}" = ".yes" &&
|
|
test ".${ac_cv_header_GeoIP_h}" = ".yes"; then
|
|
|
|
AC_CHECK_LIB([GeoIP], [GeoIP_lib_version])
|
|
if test ".${ac_cv_lib_GeoIP_GeoIP_lib_version}" = ".yes"; then
|
|
AC_DEFINE_UNQUOTED(HAVE_GEOIP_IPv6, 1, [GeoIP IPv6 support is present])
|
|
dnl> LIBS="$LIBS -lGeoIP"
|
|
AC_DEFINE_UNQUOTED(HAVE_GEOIP, 1, [GeoIP support is present])
|
|
GEOIP_LIB="-lGeoIP"
|
|
dnl> Download databases
|
|
DOWNLOAD_GEOIP=1
|
|
else
|
|
AC_DEFINE_UNQUOTED(HAVE_GEOIP_IPv6, 1, [GeoIP not supported: library too old, plase upgrade first])
|
|
fi
|
|
else
|
|
AC_MSG_RESULT(Build ntop without geolocation - GeoIP (http://www.maxmind.com/))
|
|
GEOIP_DEP=""
|
|
fi
|
|
|
|
AC_CHECK_LIB([sqlite3], [sqlite3_open], sqlite=true)
|
|
if test x$sqlite = xtrue
|
|
then
|
|
AC_DEFINE_UNQUOTED([HAVE_SQLITE], 1, [We have sqlite])
|
|
SQLITE_LIB="-lsqlite3"
|
|
else
|
|
echo "SQLite 3.x missing (libsqlite3-dev): please install it and try again"
|
|
exit
|
|
fi
|
|
|
|
AC_CHECK_TOOL(MARIADB, mariadb_config)
|
|
if test "x$ac_cv_prog_ac_ct_MARIADB" = "xmariadb_config"; then
|
|
MYSQLTOOL="mariadb_config"
|
|
else
|
|
PATH=$PATH:/usr/local/mysql/bin
|
|
AC_CHECK_TOOL(MYSQL, mysql_config)
|
|
if test "x$ac_cv_prog_ac_ct_MYSQL" = "xmysql_config"; then
|
|
MYSQLTOOL="mysql_config"
|
|
else
|
|
MYSQLTOOL=""
|
|
fi
|
|
fi
|
|
|
|
if test -n "$MYSQLTOOL"; then
|
|
MYSQLLIBS="`$MYSQLTOOL --libs_r`"
|
|
if test ".$MYSQLLIBS" != "."; then
|
|
MYSQL_LIB="`$MYSQLTOOL --libs`"
|
|
else
|
|
MYSQL_LIB="`$MYSQLTOOL --libs_r`"
|
|
fi
|
|
|
|
MYSQL_INC="`$MYSQLTOOL --include`"
|
|
AC_DEFINE_UNQUOTED(HAVE_MYSQL, 1, [use mysql])
|
|
AC_CHECK_LIB([wrap], [main])
|
|
fi
|
|
|
|
if test -f /usr/bin/lsb_release; then
|
|
LINUX_OS_RELEASE=`lsb_release -r | cut -f 2|cut -d '.' -f 1`
|
|
else
|
|
LINUX_OS_RELEASE=0
|
|
fi
|
|
|
|
if test $LINUX_OS_RELEASE -eq 7; then
|
|
MYSQL_DEP="mariadb-libs >= 5.5 tcp_wrappers-libs >= 7.6"
|
|
else
|
|
MYSQL_DEP="mysql-libs >= 5.1.0 tcp_wrappers-libs >= 7.6"
|
|
fi
|
|
|
|
AC_DEFINE_UNQUOTED(_CRT_SECURE_NO_WARNINGS, 1, [Disable warning on windows])
|
|
|
|
GMAKE=`which gmake`
|
|
if test x$GMAKE = x
|
|
then
|
|
GMAKE="make"
|
|
fi
|
|
|
|
GPP=`which clang++`
|
|
if test x$GPP = x
|
|
then
|
|
GPP="g++"
|
|
else
|
|
GPP="$GPP -O0"
|
|
fi
|
|
|
|
GIT=`which git`
|
|
if test x$GIT = x
|
|
then
|
|
AC_MSG_RESULT(FATAL ERROR: git is not installed on your host)
|
|
fi
|
|
|
|
WGET=`which wget`
|
|
if test x$WGET = x
|
|
then
|
|
AC_MSG_RESULT(ERROR. wget is not installed on your host: you cannot download GeoIP data)
|
|
fi
|
|
|
|
umask 002
|
|
|
|
INSTALL_DIR=${prefix}
|
|
if test $INSTALL_DIR = "NONE"
|
|
then
|
|
INSTALL_DIR=${ac_default_prefix}
|
|
fi
|
|
|
|
if test $SYSTEM = "Darwin"; then
|
|
MAN_DIR=$INSTALL_DIR/share/man
|
|
else
|
|
MAN_DIR=$INSTALL_DIR/man
|
|
fi
|
|
|
|
if test $SYSTEM = "OpenBSD"; then
|
|
INSTALL_DIR=${prefix}
|
|
MAN_DIR=${prefix}
|
|
fi
|
|
|
|
AC_DEFINE_UNQUOTED(PACKAGE_RELEASE, "r$GIT_RELEASE", [GIT release of this package])
|
|
AC_DEFINE_UNQUOTED(PACKAGE_MACHINE, "$MACHINE", [Architecture of this host])
|
|
AC_DEFINE_UNQUOTED(PACKAGE_OS, "${OS}", [OS Name])
|
|
AC_SUBST(PWD)
|
|
AC_SUBST(MACHINE)
|
|
AC_SUBST(SYSTEM)
|
|
AC_SUBST(EXTN)
|
|
AC_SUBST(DATE)
|
|
AC_SUBST(KERNEL)
|
|
AC_SUBST(GIT_RELEASE)
|
|
AC_SUBST(LINK_OPTS)
|
|
AC_SUBST(GEOIP_LIB)
|
|
AC_SUBST(SQLITE_LIB)
|
|
AC_SUBST(GMAKE)
|
|
AC_SUBST(GPP)
|
|
AC_SUBST(CFLAGS)
|
|
AC_SUBST(CXXFLAGS)
|
|
AC_SUBST(CPPFLAGS)
|
|
AC_SUBST(LDFLAGS)
|
|
AC_SUBST(PACKAGE_VERSION)
|
|
AC_SUBST(NTOPNG_VERSION)
|
|
AC_SUBST(NTOPNG_SHORT_VERSION)
|
|
AC_SUBST(GIT_RELEASE)
|
|
AC_SUBST(GIT_DATE)
|
|
AC_SUBST(GIT_INDEX)
|
|
AC_SUBST(INSTALL_DIR)
|
|
AC_SUBST(MAN_DIR)
|
|
AC_SUBST(NDPI_HOME)
|
|
AC_SUBST(HIREDIS_INC)
|
|
AC_SUBST(HIREDIS_LIB)
|
|
AC_SUBST(PRO_OBJECTS)
|
|
AC_SUBST(PRO_HEADERS)
|
|
AC_SUBST(PRO_MAKEFILE_INC)
|
|
AC_SUBST(PRO_LIBS)
|
|
AC_SUBST(PRO_INC)
|
|
AC_SUBST(REVISION)
|
|
AC_SUBST(MYSQL_LIB)
|
|
AC_SUBST(MYSQL_INC)
|
|
AC_SUBST(MYSQL_DEP)
|
|
AC_SUBST(PFRING_GIT_RELEASE)
|
|
AC_SUBST(PFRING_VERSION)
|
|
AC_CONFIG_HEADERS(include/config.h)
|
|
AC_CONFIG_FILES(packages/ntopng.spec)
|
|
AC_CONFIG_FILES(packages/ntopng-data.spec)
|
|
AC_CONFIG_FILES(Makefile)
|
|
AC_CONFIG_FILES(doc/doxygen.conf)
|
|
|
|
AC_OUTPUT
|
|
|
|
echo ""
|
|
echo "You are now ready to compile typing $GMAKE"
|
|
|
|
if test $DOWNLOAD_GEOIP = "1"
|
|
then
|
|
if ! test -f "./httpdocs/geoip/GeoIPASNum.dat"; then
|
|
echo "Please do not forget to download GeoIP databases doing: $GMAKE geoip"
|
|
fi
|
|
fi
|
|
|
|
dnl>
|
|
dnl> ntopng release history
|
|
dnl>
|
|
dnl> 0.1 r6089 2013-03-25
|
|
dnl> 1.0 r6533 2013-06-30
|
|
dnl> 1.1 r6929 2013-11-03
|
|
dnl> 1.2 r8114 2014-15-08-13
|
|
dnl> 1.2.1 r8202 2014-15-09-06
|