#!/bin/bash
# This isn't a configure generated by autoconf!
# netsniff-ng build system
# Copyright 2013-2016 Tobias Klauser <tklauser@distanz.ch>
# Copyright 2013 Daniel Borkmann <borkmann@gnumaniacs.org>
# Subject to the GNU GPL, version 2.

MISSING_TOOLCHAIN=0
MISSING_DEFS=0
MISSING_NACL=0

TOOLS="netsniff-ng trafgen astraceroute flowtop ifpps bpfc curvetun mausezahn"
TOOLS_NOBUILD=""

HAVE_LIBNL=0
HAVE_LIBPCAP=0
HAVE_HWTSTAMP=0
HAVE_LIBGEOIP=0
HAVE_LIBZ=0
HAVE_TPACKET3=0

DISABLE_LIBNL=0
DISABLE_GEOIP=0
DISABLE_ZLIB=0
ENABLE_DEBUG=0

PREFIX="/usr/local"
SYSCONF_DIR="/etc"

usage()
{
	echo "Usage: ./configure [OPTION]... [VAR=VALUE]..."
	echo ""
	echo "  -h, --help       Display this help and exit"
	echo ""
	echo "Installation directories:"
	echo "  --prefix=PREFIX  install architecture-independent files in PREFIX"
	echo "                   [$PREFIX]"
	echo "  --sysconfdir=DIR read-only single-machine data [$SYSCONF_DIR]"
	echo ""
	echo "By default, \`make install' will install all the files in"
	echo "\`$PREFIX/bin', \`$PREFIX/lib' etc.  You can specify"
	echo "an installation prefix other than \`$PREFIX' using \`--prefix',"
	echo "for instance \`--prefix=\$HOME'."
	echo ""
	echo "Optional Features:"
	echo "  --disable-libnl  Disable libnl support"
	echo "  --disable-geoip  Disable geoip support"
	echo "  --disable-zlib   Disable zlib support"
	echo "  --enable-debug   Enable debug mode (default disabled)"
	echo ""
	echo "Some influential environment variables:"
	echo "  CC               C compiler command"
	echo "  CROSS_COMPILE    C cross-compiler prefix"

	exit 0
}

while [ $# -gt 0 ] ; do
	case "$1" in
	-h|--help)
		usage
		;;
	--prefix=*)
		PREFIX="${1#*=}"
		;;
	--sysconfdir=*)
		SYSCONF_DIR="${1#*=}"
		;;
	--disable-libnl)
		DISABLE_LIBNL=1
		;;
	--disable-geoip)
		DISABLE_GEOIP=1
		;;
	--disable-zlib)
		DISABLE_ZLIB=1
		;;
	--enable-debug)
		ENABLE_DEBUG=1
		;;
	*)
		echo "[!] Unrecognized option: '$1'. Try './configure --help' for more information"
		exit 1
		;;
	esac
	shift
done

[ -z "$CC" ] && CC="${CROSS_COMPILE}gcc"
[ -z "$LD" ] && LD="${CROSS_COMPILE}gcc"
if [ "x$SYSROOT" != "x" ] ; then
	PKG_CONFIG_PATH="$SYSROOT/usr/lib/pkgconfig:$PKG_CONFIG_PATH"
fi
[ -z $PKG_CONFIG ] && PKG_CONFIG="${CROSS_COMPILE}pkg-config"

TMPDIR=$(mktemp -d config.XXXXXX)
trap 'status=$?; rm -rf $TMPDIR; exit $status' EXIT HUP INT QUIT TERM

tools_remove()
{
	local _tools=$TOOLS
	local _todel=$1
	TOOLS=""
	for tool in $_tools ; do
		case "$tool" in
		$_todel)
			case $_todel in
			$TOOLS_NOBUILD) ;;
			*) TOOLS_NOBUILD="$TOOLS_NOBUILD $tool" ;;
			esac ;;
		*) TOOLS="$TOOLS $tool" ;;
		esac
	done

	TOOLS=${TOOLS# }
	TOOLS_NOBUILD=${TOOLS_NOBUILD# }
}

check_command()
{
	local cmd="$1"

	[ "x$(which "$cmd" 2>> config.log)" == "x" ]
}

check_toolchain()
{
	if [ "x$CROSS_COMPILE" != "x" ] ; then
		echo "[*] Cross-compiling for $($CC -print-multiarch)"
		echo "CROSS_COMPILE=$CROSS_COMPILE" >> Config
	fi

	echo -n "[*] Checking compiler $CC ... "
	if check_command $CC ; then
		echo "[NO]"
		MISSING_TOOLCHAIN=1
	else
		echo "[YES]"
		echo "CC=$CC" >> Config
	fi

	echo -n "[*] Checking linker $LD ... "
	if check_command $LD ; then
		echo "[NO]"
		MISSING_TOOLCHAIN=1
	else
		echo "[YES]"
		echo "LD=$LD" >> Config
	fi

	echo -n "[*] Checking $PKG_CONFIG ... "
	if check_command $PKG_CONFIG ; then
		echo "[NO]"
		MISSING_TOOLCHAIN=1
	else
		echo "[YES]"
		echo "PKG_CONFIG=$PKG_CONFIG" >> Config
		echo "PKG_CONFIG_PATH=$PKG_CONFIG_PATH" >> Config
	fi
}

check_flex()
{
	echo -n "[*] Checking flex ... "

	if check_command flex ; then
		echo "[NO]"
		MISSING_DEFS=1
		tools_remove "trafgen"
		tools_remove "bpfc"
	else
		echo "[YES]"
	fi
}

check_bison()
{
	echo -n "[*] Checking bison ... "

	if check_command bison ; then
		echo "[NO]"
		MISSING_DEFS=1
		tools_remove "trafgen"
		tools_remove "bpfc"
	else
		echo "[YES]"
	fi
}

check_nacl()
{
	echo -n "[*] Checking nacl/sodium ... "

	cat > $TMPDIR/nacltest.c << EOF
#include "crypto_hash_sha512.h"
#include "crypto_verify_32.h"
#include "crypto_hash_sha512.h"
#include "crypto_box_curve25519xsalsa20poly1305.h"
#include "crypto_scalarmult_curve25519.h"
#include "crypto_auth_hmacsha512256.h"

int main(void) { }
EOF

	if [ -z $NACL_INC_DIR ] ; then
		NACL_INC_DIR=$(pkg-config --variable=includedir libsodium)
		if [ -z $NACL_INC_DIR ] ; then
			NACL_INC_DIR="$SYSROOT/usr/include/nacl"
		else
			NACL_INC_DIR="$NACL_INC_DIR/sodium"
			NACL_LIB="sodium"
		fi
	fi

	if [ -z $NACL_LIB_DIR ] ; then
		NACL_LIB_DIR="$SYSROOT/usr/lib"
	fi

	if [ -z $NACL_LIB ] ; then
		NACL_LIB="nacl"
	fi

	LDFLAGS="-L $NACL_LIB_DIR"
	CFLAGS="-I $NACL_INC_DIR"

	$CC $CFLAGS $LDFLAGS -o $TMPDIR/nacltest $TMPDIR/nacltest.c >> config.log 2>&1
	if [ ! -x $TMPDIR/nacltest ] ; then
		echo "[NO]"
		MISSING_NACL=1
		tools_remove "curvetun"
	else
		echo "[YES]"
		echo "CONFIG_NACL_INC_DIR:=$NACL_INC_DIR" >> Config
		echo "CONFIG_NACL_LIB_DIR:=$NACL_LIB_DIR" >> Config
		echo "CONFIG_NACL_LIB:=$NACL_LIB" >> Config
	fi
}

check_libnl()
{
	echo -n "[*] Checking libnl ... "

	if [ "$DISABLE_LIBNL" == "1" ] ; then
		echo "[DISABLED]"
		return
	fi

	cat > $TMPDIR/libnltest.c << EOF
#include <netlink/genl/genl.h>
#include <netlink/genl/family.h>
#include <netlink/genl/ctrl.h>
#include <netlink/msg.h>
#include <netlink/attr.h>
#include <netlink/version.h>

#if LIBNL_VER_NUM < LIBNL_VER(3,0)
# error incompatible libnl version
#endif

int main(void)
{
	struct nl_sock *sock = nl_socket_alloc();
	struct nl_cache *nl_cache;
	int ret = genl_connect(sock);

	ret = genl_ctrl_alloc_cache(sock, &nl_cache);
}
EOF

	$CC \
		$($PKG_CONFIG --cflags libnl-3.0 2>> config.log) \
		$($PKG_CONFIG --cflags libnl-genl-3.0 2>> config.log) \
		-o $TMPDIR/libnltest \
		$TMPDIR/libnltest.c \
		$($PKG_CONFIG --libs libnl-3.0 2>> config.log) \
		$($PKG_CONFIG --libs libnl-genl-3.0 2>> config.log) \
			>> config.log 2>&1
	if [ ! -x $TMPDIR/libnltest ] ; then
		echo "[NO]"
		MISSING_DEFS=1
	else
		echo "[YES]"
		HAVE_LIBNL=1
	fi
}

check_libnl_route()
{
	echo -n "[*] Checking libnl-route ... "

	if [ "$DISABLE_LIBNL" == "1" ] ; then
		echo "[DISABLED]"
		return
	fi

	if [ "$HAVE_LIBNL" == "0" ] ; then
		echo "[SKIPPED]"
		return
	fi

	cat > $TMPDIR/libnlroutetest.c << EOF
#include <netlink/route/link.h>
#include <netlink/route/addr.h>

int main(void)
{
	char str[100];

	rtnl_addr_flags2str(1, str, sizeof(str));
	rtnl_link_flags2str(1, str, sizeof(str));
	rtnl_link_operstate2str(1, str, sizeof(str));

	return 0;
}
EOF

	$CC \
		$($PKG_CONFIG --cflags libnl-route-3.0 2>> config.log) \
		-o $TMPDIR/libnlroutetest \
		$TMPDIR/libnlroutetest.c \
		$($PKG_CONFIG --libs libnl-route-3.0 2>> config.log) \
			>> config.log 2>&1
	if [ ! -x $TMPDIR/libnlroutetest ] ; then
		echo "[NO]"
		MISSING_DEFS=1
		HAVE_LIBNL=0
	else
		echo "[YES]"
		# HAVE_LIBNL already set by check_libnl()
	fi
}

check_tpacket_v3()
{
	echo -n "[*] Checking tpacket_v3 ... "

	cat > $TMPDIR/tpacketv3test.c << EOF
#include <stdio.h>
#include <linux/if_packet.h>

int main(void)
{
	struct tpacket3_hdr *hdr;
	int foo[] = {
		TP_STATUS_BLK_TMO,
	};

	printf("%d\n", hdr->tp_status);
}
EOF

	$CC -o $TMPDIR/tpacketv3test $TMPDIR/tpacketv3test.c >> config.log 2>&1
	if [ ! -x $TMPDIR/tpacketv3test ] ; then
		echo "[NO]"
		MISSING_DEFS=1
	else
		echo "[YES]"
		HAVE_TPACKET3=1
	fi
}

check_tpacket_v2()
{
	echo -n "[*] Checking tpacket_v2 ... "

	cat > $TMPDIR/tpacketv2test.c << EOF
#include <stdio.h>
#include <linux/if_packet.h>

int main(void)
{
	struct tpacket2_hdr *hdr;
	int foo[] = {
		TP_STATUS_AVAILABLE,
		TP_STATUS_SEND_REQUEST,
		TP_STATUS_SENDING,
		TP_STATUS_KERNEL,
		TP_STATUS_USER,
	};

	printf("%d\n", hdr->tp_status);
}
EOF

	$CC -o $TMPDIR/tpacketv2test $TMPDIR/tpacketv2test.c >> config.log 2>&1
	if [ ! -x $TMPDIR/tpacketv2test ] ; then
		echo "[NO]"
		MISSING_DEFS=1
		tools_remove "netsniff-ng"
		tools_remove "trafgen"
	else
		echo "[YES]"
	fi
}

check_fopencookie()
{
	echo -n "[*] Checking fopencookie ... "

	cat > $TMPDIR/fopencookietest.c << EOF
#define _GNU_SOURCE
#include <stdio.h>

static cookie_io_functions_t cookie_fns;

int main(void)
{
	FILE *f = fopencookie(NULL, "w", cookie_fns);
}
EOF

	$CC -o $TMPDIR/fopencookietest $TMPDIR/fopencookietest.c >> config.log 2>&1
	if [ ! -x $TMPDIR/fopencookietest ] ; then
		echo "[NO]"
		MISSING_DEFS=1
		tools_remove "curvetun"
	else
		echo "[YES]"
	fi
}

check_ncurses()
{
	echo -n "[*] Checking ncurses ... "

	cat > $TMPDIR/ncursestest.c << EOF
#include <curses.h>

int main(void)
{
	WINDOW *screen = initscr();
}
EOF

	$CC \
		$($PKG_CONFIG --cflags ncurses 2>> config.log) \
		-o $TMPDIR/ncursestest $TMPDIR/ncursestest.c \
		$($PKG_CONFIG --libs ncurses 2>> config.log \
	          || echo '-lncurses' ) \
			>> config.log 2>&1
	if [ ! -x $TMPDIR/ncursestest ] ; then
		echo "[NO]"
		MISSING_DEFS=1
		tools_remove "flowtop"
		tools_remove "ifpps"
	else
		echo "[YES]"
	fi
}

check_libgeoip()
{
	echo -n "[*] Checking libGeoIP ... "

	if [ "$DISABLE_GEOIP" == "1" ] ; then
		echo "[DISABLED]"
		return
	fi

	cat > $TMPDIR/geoiptest.c << EOF
#include <GeoIP.h>
#include <GeoIPCity.h>

int main(void)
{
	int dbs[] = {
		GEOIP_CITY_EDITION_REV1,
		GEOIP_CITY_EDITION_REV1_V6,
		GEOIP_COUNTRY_EDITION,
		GEOIP_COUNTRY_EDITION_V6,
		GEOIP_ASNUM_EDITION,
		GEOIP_ASNUM_EDITION_V6,
	};
	GeoIP *geoip = GeoIP_new(0);
}
EOF

	$CC -o $TMPDIR/geoiptest $TMPDIR/geoiptest.c -lGeoIP >> config.log 2>&1
	if [ ! -x $TMPDIR/geoiptest ] ; then
		echo "[NO]"
		MISSING_DEFS=1
	else
		echo "[YES]"
		HAVE_LIBGEOIP=1
	fi
}

check_libnf_ct()
{
	echo -n "[*] Checking libnetfilter-conntrack ... "

	cat > $TMPDIR/nfcttest.c << EOF
#include <libnetfilter_conntrack/libnetfilter_conntrack.h>
#include <libnetfilter_conntrack/libnetfilter_conntrack_tcp.h>
#include <libnetfilter_conntrack/libnetfilter_conntrack_dccp.h>
#include <libnetfilter_conntrack/libnetfilter_conntrack_sctp.h>

int main(void)
{
	struct nf_conntrack *ct;
	const uint32_t id = nfct_get_attr_u32(ct, ATTR_ID);
}
EOF

	$CC \
		$($PKG_CONFIG --cflags libnetfilter_conntrack 2>> config.log) \
		-o $TMPDIR/nfcttest \
		$TMPDIR/nfcttest.c \
		$($PKG_CONFIG --libs libnetfilter_conntrack 2>> config.log) \
			>> config.log 2>&1
	if [ ! -x $TMPDIR/nfcttest ] ; then
		echo "[NO]"
		MISSING_DEFS=1
		tools_remove "flowtop"
	else
		echo "[YES]"
	fi
}

check_zlib()
{
	echo -n "[*] Checking libz ... "

	if [ "$DISABLE_ZLIB" == "1" ] ; then
		echo "[DISABLED]"
		return
	fi

	cat > $TMPDIR/ztest.c << EOF
#include "zlib.h"

int main(void)
{
	gzFile fp = gzopen("foo.gz", "rb");
}
EOF

	$CC -o $TMPDIR/ztest $TMPDIR/ztest.c -lz >> config.log 2>&1
	if [ ! -x $TMPDIR/ztest ] ; then
		echo "[NO]"
		echo "CONFIG_LIBZ=0" >> Config
		MISSING_DEFS=1
		tools_remove "astraceroute"
		tools_remove "flowtop"
	else
		echo "[YES]"
		echo "CONFIG_LIBZ=1" >> Config
		HAVE_LIBZ=1
	fi
}

check_urcu()
{
	echo -n "[*] Checking liburcu ... "

	cat > $TMPDIR/urcutest.c << EOF
#include <urcu.h>

int main(void)
{
	rcu_init();
	synchronize_rcu();
}
EOF

	$CC -o $TMPDIR/urcutest $TMPDIR/urcutest.c -lurcu >> config.log 2>&1
	if [ ! -x $TMPDIR/urcutest ] ; then
		echo "[NO]"
		MISSING_DEFS=1
		tools_remove "flowtop"
	else
		echo "[YES]"
	fi
}

check_libpcap()
{
	echo -n "[*] Checking libpcap ... "

	cat > $TMPDIR/pcaptest.c << EOF
#include <pcap.h>

int main(void)
{
	struct bpf_program bpf;
	int ret = pcap_compile_nopcap(65535, 1, &bpf, "foo.bpf", 1, 0xffffffff);
}
EOF

	$CC -o $TMPDIR/pcaptest $TMPDIR/pcaptest.c \
		$($PKG_CONFIG --libs libpcap 2>> config.log) \
		>> config.log 2>&1
	if [ ! -x $TMPDIR/pcaptest ] ; then
		echo "[NO]"
		echo "CONFIG_LIBPCAP=0" >> Config
		MISSING_DEFS=1
		tools_remove "mausezahn"
	else
		echo "[YES]"
		echo "CONFIG_LIBPCAP=1" >> Config
		HAVE_LIBPCAP=1
	fi
}

check_hwtstamp()
{
	echo -n "[*] Checking hw timestamping ... "

	cat > $TMPDIR/hwtstest.c << EOF
#include <string.h>
#include <arpa/inet.h>
#include <sys/ioctl.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <linux/sockios.h>
#include <linux/net_tstamp.h>
#include <linux/if_packet.h>
#include <linux/if_ether.h>
#include <linux/if.h>

int main(void)
{
	int timesource = SOF_TIMESTAMPING_RAW_HARDWARE, ret;
	int sock = socket(PF_PACKET, SOCK_RAW, htons(ETH_P_ALL));
	struct hwtstamp_config hwconfig;
	struct ifreq ifr;

	memset(&hwconfig, 0, sizeof(hwconfig));
	hwconfig.tx_type = HWTSTAMP_TX_OFF;
	hwconfig.rx_filter = HWTSTAMP_FILTER_ALL;

	memset(&ifr, 0, sizeof(ifr));
	strncpy(ifr.ifr_name, "lo", sizeof(ifr.ifr_name));
	ifr.ifr_data = &hwconfig;

	ioctl(sock, SIOCSHWTSTAMP, &ifr);
	setsockopt(sock, SOL_PACKET, PACKET_TIMESTAMP, &timesource,
		   sizeof(timesource));
}
EOF

	$CC -o $TMPDIR/hwtstest $TMPDIR/hwtstest.c >> config.log 2>&1
	if [ ! -x $TMPDIR/hwtstest ] ; then
		echo "[NO]"
		echo "CONFIG_HWTSTAMP=0" >> Config
	else
		echo "[YES]"
		echo "CONFIG_HWTSTAMP=1" >> Config
		HAVE_HWTSTAMP=1
	fi
}

check_libcli()
{
	echo -n "[*] Checking libcli ... "

	cat > $TMPDIR/clitest.c << EOF
#include <sys/time.h>
#include <libcli.h>

int main(void)
{
	struct cli_def *cli = cli_init();
}
EOF

	$CC -o $TMPDIR/clitest $TMPDIR/clitest.c -lcli >> config.log 2>&1
	if [ ! -x $TMPDIR/clitest ] ; then
		echo "[NO]"
		MISSING_DEFS=1
		tools_remove "mausezahn"
	else
		echo "[YES]"
	fi
}

check_libnet()
{
	echo -n "[*] Checking libnet ... "

	cat > $TMPDIR/nettest.c << EOF
#include <libnet.h>

int main(void)
{
	char err_buf[LIBNET_ERRBUF_SIZE];
	libnet_t *l = libnet_init(LIBNET_LINK_ADV, "ethX", err_buf);
}
EOF

	$CC -o $TMPDIR/nettest $TMPDIR/nettest.c -lnet >> config.log 2>&1
	if [ ! -x $TMPDIR/nettest ] ; then
		echo "[NO]"
		MISSING_DEFS=1
		tools_remove "mausezahn"
	else
		echo "[YES]"
	fi
}

gen_version_appendix()
{
	local _appendix=""

	git rev-parse > /dev/null 2>&1
	if [ "$?" == "0" ] ; then
		if [ ! "`git describe --always`" == \
		       "`git describe --abbrev=0 --tags`" ] ; then
			_appendix="+"
		fi
	fi

	echo "CONFIG_RC=\"$_appendix\"" >> Config
}

gen_config_hdr()
{
	local _version=""
	local _have_libpcap=""
	local _have_libgeoip=""
	local _have_libnl=""
	local _have_libz=""
	local _have_hwts=""
	local _have_tp3=""

	echo "[*] Generating config.h ..."

	git rev-parse > /dev/null 2>&1
	if [ "$?" == "0" ] ; then
		_version="`git describe --always`"
	else
		_version="(none)"
	fi

	if [ "$HAVE_LIBNL" == "1" ] ; then
		_have_libnl="#define HAVE_LIBNL 1"
	else
		_have_libnl="/* HAVE_LIBNL is not defined */"
	fi

	if [ "$HAVE_LIBPCAP" == "1" ] ; then
		_have_libpcap="#define HAVE_TCPDUMP_LIKE_FILTER 1"
	else
		_have_libpcap="/* HAVE_TCPDUMP_LIKE_FILTER is not defined */"
	fi

	if [ "$HAVE_HWTSTAMP" == "1" ] ; then
		_have_hwts="#define HAVE_HARDWARE_TIMESTAMPING 1"
	else
		_have_hwts="/* HAVE_HARDWARE_TIMESTAMPING is not defined */"
	fi

	if [ "$HAVE_LIBGEOIP" == "1" ] ; then
		_have_libgeoip="#define HAVE_GEOIP 1"
	else
		_have_libgeoip="/* HAVE_GEOIP is not defined */"
	fi

	if [ "$HAVE_LIBZ" == "1" ] ; then
		_have_libz="#define HAVE_LIBZ 1"
	else
		_have_libz="/* HAVE_LIBZ is not defined */"
	fi

	if [ "$HAVE_TPACKET3" == "1" ] ; then
		_have_tp3="#define HAVE_TPACKET3 1"
	else
		_have_tp3="/* HAVE_TPACKET3 is not defined */"
	fi

	cat > config.h << EOF
#ifndef CONFIG_H
#define CONFIG_H
#define FILE_CLIENTS ".curvetun/clients"
#define FILE_SERVERS ".curvetun/servers"
#define FILE_PRIVKEY ".curvetun/priv.key"
#define FILE_PUBKEY ".curvetun/pub.key"
#define FILE_USERNAM ".curvetun/username"
#define GITVERSION "$_version"
$_have_libnl
$_have_libpcap
$_have_libgeoip
$_have_libz
$_have_hwts
$_have_tp3
#endif /* CONFIG_H */
EOF
}

rm -f config.log

echo "# This file is autogenerated by the configure script" > Config
check_toolchain

if [ "$MISSING_TOOLCHAIN" == "1" ] ; then
	echo "[!] One or more of the toolchain tools couldn't be found in your"
	echo "    \$PATH. Please check the file config.log for details."
	exit 1
fi

# external tools
check_flex
check_bison

# kernel features
check_tpacket_v2
check_tpacket_v3
check_hwtstamp

# libc features
check_fopencookie

# libraries
check_libcli
check_libgeoip
check_libnet
check_libnf_ct
check_libnl
check_libnl_route
check_libpcap
check_nacl
check_ncurses
check_urcu
check_zlib

gen_config_hdr
gen_version_appendix

if [ "$MISSING_DEFS" == "1" ] ; then
	echo "[!] Some libraries or header definitions are missing or too old. Thus"
	echo "    certain tools will not be built (see below) or they will be built"
	echo "    with reduced functionality. Please refer to the INSTALL file for"
	echo "    the libraries needed to build the complete netsniff-ng toolkit"
fi

if [ "$MISSING_NACL" == "1" ] ; then
	echo "[!] The NaCl crypto library is currently not present on your system or"
	echo "    could not be found. Either install it from your distro or build it"
	echo "    manually using 'make nacl' and make sure that the NACL_INC_DIR and"
	echo "    NACL_LIB_DIR environment variables are set appropriately."
fi

if [ "x$TOOLS_NOBUILD" != "x" ] ; then
	echo "[!] The following tools will *not* be built: $TOOLS_NOBUILD"
	echo "[*] The following tools will be built: $TOOLS"
else
	echo "[*] Looks good! All tools will be built!"
fi

if [ -s config.log ] ; then
	echo "[!] There were errors in the configure script. Please check the file"
	echo "    config.log for details."
fi

echo "CONFIG_LIBNL=$HAVE_LIBNL" >> Config

if [ "$HAVE_LIBGEOIP" == "1" -a "$HAVE_LIBZ" == "1" ] ; then
	echo "CONFIG_GEOIP=1" >> Config
else
	echo "CONFIG_GEOIP=0" >> Config
fi

echo "CONFIG_PREFIX=$PREFIX" >> Config
echo "CONFIG_ETCDIR=$SYSCONF_DIR" >> Config

echo "CONFIG_DEBUG=$ENABLE_DEBUG" >> Config
echo "CONFIG_TOOLS=$TOOLS" >> Config
echo "CONFIG_OK=1" >> Config

exit 0
