+dnl -*-autoconf-*-
+dnl
+dnl Configuration script for TrIPE
+dnl
+dnl (c) 2001 Straylight/Edgeware
+dnl
+
+dnl ----- Licensing notice --------------------------------------------------
+dnl
+dnl This file is part of Trivial IP Encryption (TrIPE).
+dnl
+dnl TrIPE is free software; you can redistribute it and/or modify
+dnl it under the terms of the GNU General Public License as published by
+dnl the Free Software Foundation; either version 2 of the License, or
+dnl (at your option) any later version.
+dnl
+dnl TrIPE is distributed in the hope that it will be useful,
+dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
+dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+dnl GNU General Public License for more details.
+dnl
+dnl You should have received a copy of the GNU General Public License
+dnl along with TrIPE; if not, write to the Free Software Foundation,
+dnl Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+dnl--------------------------------------------------------------------------
+dnl Initialization.
+
+mdw_AUTO_VERSION
+AC_INIT([tripe], AUTO_VERSION, [mdw@distorted.org.uk])
+AC_CONFIG_SRCDIR([server/tripe.h])
+AC_CONFIG_AUX_DIR([config])
+AM_INIT_AUTOMAKE([foreign])
+
+AC_PROG_CC
+AM_PROG_CC_C_O
+AX_CFLAGS_WARN_ALL
+AC_CANONICAL_HOST
+AM_PROG_LIBTOOL
+
+dnl--------------------------------------------------------------------------
+dnl C programming environment.
+
+AC_CHECK_HEADERS([stdarg.h])
+
+AC_SEARCH_LIBS([socket], [socket])
+
+case "$host_os" in
+ linux)
+ AC_ARG_WITH([linux-includes],
+ AS_HELP_STRING(
+ [--with-linux-includes=DIR],
+ [Linux kernel includes]),
+ [CFLAGS="$CFLAGS -I$withval"], [:])
+ ;;
+esac
+
+PKG_CHECK_MODULES([mLib], [mLib >= 2.0.4])
+PKG_CHECK_MODULES([catacomb], [catacomb >= 2.1.1])
+
+CFLAGS="$CFLAGS $mLib_CFLAGS $catacomb_CFLAGS"
+LIBS="$LIBS $mLib_LIBS"
+
+dnl--------------------------------------------------------------------------
+dnl Directories to install things into.
+
+dnl TRIPE_DEFINE_PATH(VAR, ARG, HELP, DEFAULT, [DEFINE, DEFINEHELP])
+AC_DEFUN([TRIPE_DEFINE_PATH], [
+ AC_ARG_WITH([$1], AS_HELP_STRING([--with-$1=$2], [$3]),
+ [$1=$withval], [$1=$4])
+ AC_SUBST([$1])
+ m4_if([$5], [], [], [
+ mdw_DEFINE_PATHS([mdw_DEFINE_PATH([$5], [$][$1], [$6])])
+ ])
+])
+
+dnl Actual options.
+TRIPE_DEFINE_PATH(
+ [configdir], [DIR], [keys and other configuration [[LOCALSTATE/tripe]]],
+ ['${localstatedir}/tripe'],
+ [CONFIGDIR], [Look for keys and other configuration here.])
+
+TRIPE_DEFINE_PATH(
+ [socketdir], [DIR], [admin socket [[.]]], [.],
+ [SOCKETDIR], [Create or look for administration socket here.])
+
+TRIPE_DEFINE_PATH(
+ [pidfile], [FILE], [process-id [[./tripectl.pid]]], [tripectl.pid])
+
+TRIPE_DEFINE_PATH(
+ [initconfig], [FILE], [configuration for init script [[/etc/tripe.conf]]],
+ [/etc/tripe.conf])
+
+TRIPE_DEFINE_PATH(
+ [logfile], [FILE], [logging output [[./tripe.log]]], [tripe.log])
+
+dnl--------------------------------------------------------------------------
+dnl Other options.
+
+AC_ARG_WITH([tracing],
+ AS_HELP_STRING(
+ [--without-tracing],
+ [compile out tracing support (not recommended)]),
+ [test "$withval" = no &&
+ AC_DEFINE([NTRACE], [1], [Disable all tracing.])],
+ [:])
+
+dnl--------------------------------------------------------------------------
+dnl Tunnel devices.
+
+dnl Provide the user with a choice.
+AC_ARG_WITH([tunnel],
+ AS_HELP_STRING(
+ [--with-tunnel=KIND],
+ [kinds of tunnel device to use (linux, unet, bsd, slip)]),
+ [tun=$withval], [tun=auto])
+
+dnl If he doesn't choose, pick something sensible.
+if test "$tun" = auto; then
+ AC_CACHE_CHECK([tunnel drivers to use], [mdw_cv_tunnel], [
+ mdw_cv_tunnel=""
+ case $host_os in
+ linux*)
+ case `uname -r` in
+ [2.[4-9].*] | [2.[1-9][0-9]*.*] | [[3-9].*] | [[1-9][0-9]*.*])
+ mdw_cv_tunnel=linux
+ ;;
+ *)
+ mdw_cv_tunnel=unet
+ ;;
+ esac
+ ;;
+ *bsd*)
+ mdw_cv_tunnel=bsd
+ ;;
+ esac
+ mdw_cv_tunnel=$mdw_cv_tunnel${mdw_cv_tunnel:+ }slip
+ ])
+ tun=$mdw_cv_tunnel
+fi
+
+tunnels=""
+for i in $tun; do
+ case $i in
+ linux) AC_DEFINE([TUN_LINUX], [1],
+ [Install the Linux TUN/TAP driver.]) ;;
+ bsd) AC_DEFINE([TUN_BSD], [1],
+ [Install the BSD tunnel driver.]) ;;
+ unet) AC_DEFINE([TUN_UNET], [1],
+ [Install the obsolete Linux Usernet driver.]) ;;
+ slip) ;;
+ *) AC_MSG_ERROR([Unknown tunnel type]) ;;
+ esac
+ tunnels="$tunnels&tun_$i, "
+done
+AC_DEFINE_UNQUOTED([TUN_LIST], [$tunnels 0],
+ [List of tunnel drivers to install.])
+
+dnl--------------------------------------------------------------------------
+dnl Python.
+
+dnl Find out whether Python exists at all.
+AM_PATH_PYTHON([2.4], [python=yes], [python=no])
+AM_CONDITIONAL([HAVE_PYTHON], [test $python = yes])
+
+dnl Find out whether we can use Catacomb and GTK.
+if test $python = yes; then
+ AC_PYTHON_MODULE([pygtk])
+ AC_PYTHON_MODULE([catacomb])
+fi
+AM_CONDITIONAL([HAVE_PYGTK], [test ${HAVE_PYMOD_PYGTK-no} = yes])
+AM_CONDITIONAL([HAVE_PYCATACOMB], [test ${HAVE_PYMOD_CATACOMB-no} = yes])
+
+dnl--------------------------------------------------------------------------
+dnl Wireshark.
+dnl
+dnl This is all distressingly ugly and complicated. Why they can't just
+dnl provide a pkg-config dropping containing all the useful information about
+dnl the installation I don't know.
+
+WIRESHARK_CFLAGS=""
+: ${wireshark_plugindir=unknown}
+
+dnl Get the user to help.
+AC_ARG_WITH([wireshark],
+ AS_HELP_STRING(
+ [--with-wireshark[=DIR]],
+ [build and install Wireshark plugin]),
+ [case "$withval" in
+ no) haveshark=no needshark=no ;;
+ yes) haveshark=yes needshark=yes ;;
+ *) haveshark=yes needshark=yes
+ wireshark_plugindir=$withval ;;
+ esac],
+ [haveshark=yes needshark=no])
+
+dnl Try to find the Wireshark installation directory the hard way.
+case "$haveshark,$wireshark_plugindir" in
+ yes,unknown)
+ AC_CACHE_CHECK([where to put Wireshark plugins],
+ [mdw_cv_wireshark_plugin_dir], [
+ mdw_cv_wireshark_plugin_dir="failed"
+ wsprefix=none
+ for i in "${prefix}" /usr/local /usr `echo $PATH | tr : " "`; do
+ if test -x "$i/bin/tshark"; then
+ wsprefix=$i
+ break
+ fi
+ done
+ if test "$wsprefix" != none; then
+ wsbin=$wsprefix/bin/tshark
+ wsver=`$wsbin -v | sed ['s/^[^ ]* \([0-9A-Za-z.]*\).*$/\1/;q']`
+ dir=$wsprefix/lib/wireshark/plugins
+ test -d "$dir/$wsver" && dir="$dir/$wsver"
+ if test -d "$dir"; then
+ mdw_cv_wireshark_plugin_dir=$dir
+ fi
+ fi
+ ])
+ case $mdw_cv_wireshark_plugin_dir in
+ failed) haveshark=no ;;
+ *) wireshark_plugindir=$mdw_cv_wireshark_plugin_dir ;;
+ esac
+esac
+
+dnl If we're still interested, find Glib.
+case "$haveshark" in
+ yes) AM_PATH_GLIB([1.2.0], [], haveshark=false, [gmodule]) ;;
+esac
+
+dnl Find the include directory. This would be much easier if they just
+dnl provided a pkg-config file.
+case "$haveshark" in
+ yes)
+ bad=yes
+ mdw_CFLAGS=$CFLAGS
+ wsprefix=`echo $wireshark_plugindir | sed 's:/lib/.*$::'`
+ AC_CACHE_CHECK([how to find the Wireshark headers],
+ [mdw_cv_wireshark_includes], [
+ mdw_cv_wireshark_includes=failed
+ for i in \
+ "" \
+ "-I${wsprefix}/include/wireshark" \
+ "-I${wsprefix}/include" \
+ "-I${prefix}/include/wireshark" \
+ "-I${prefix}/include" \
+ "-I/usr/include/wireshark" \
+ "-I/usr/local/include/wireshark" \
+ "-I/usr/local/include"; do
+ CFLAGS="$GLIB_CFLAGS $i"
+ AC_TRY_COMPILE([
+#include <netinet/in.h>
+#include <glib.h>
+#include <wireshark/config.h>
+#include <wireshark/epan/packet.h>],
+ [dissector_handle_t dh; dh = create_dissector_handle(0, 0);],
+ [bad=no; break])
+ done
+ case "$bad" in
+ no) mdw_cv_wireshark_includes=$i ;;
+ esac
+ CFLAGS=$mdw_CFLAGS
+ ])
+ case "$mdw_cv_wireshark_includes" in
+ failed) haveshark=no ;;
+ esac
+esac
+
+case "$haveshark,$needshark" in
+ no,yes)
+ AC_MSG_ERROR([failed to configure Wireshark plugin])
+ ;;
+ yes,*)
+ WIRESHARK_CFLAGS="$CFLAGS $GLIB_CFLAGS $mdw_cv_wireshark_includes"
+ AC_SUBST(WIRESHARK_CFLAGS)
+ AC_SUBST(wireshark_plugindir)
+ ;;
+esac
+
+AM_CONDITIONAL([HAVE_WIRESHARK], [test "$haveshark" = yes])
+
+dnl--------------------------------------------------------------------------
+dnl Produce output.
+
+AC_CONFIG_HEADER([config/config.h])
+
+AC_CONFIG_FILES(
+ [Makefile]
+ [common/Makefile]
+ [client/Makefile]
+ [server/Makefile]
+ [proxy/Makefile]
+ [pkstream/Makefile]
+ [wireshark/Makefile]
+ [init/Makefile]
+ [keys/Makefile]
+ [mon/Makefile])
+AC_OUTPUT
+
+dnl ----- That's all, folks -------------------------------------------------