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]) mdw_SILENT_RULES AC_PROG_CC AM_PROG_CC_C_O AX_CFLAGS_WARN_ALL AC_CANONICAL_HOST AM_PROG_LIBTOOL AC_CHECK_PROGS([AUTOM4TE], [autom4te]) 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.1.0]) PKG_CHECK_MODULES([catacomb], [catacomb >= 2.1.1]) CFLAGS="$CFLAGS $mLib_CFLAGS $catacomb_CFLAGS" 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 [[SYSCONFDIR/tripe.conf]]], ['${sysconfdir}/tripe.conf']) TRIPE_DEFINE_PATH( [logfile], [FILE], [logging output [[./tripe.log]]], [tripe.log]) dnl-------------------------------------------------------------------------- dnl Privilege-separation helper. mdw_DEFINE_PATHS([ AC_DEFINE_UNQUOTED([PRIVSEP_HELPER], ["mdw_PATH([$libexecdir])/mdw_PROG([tripe-privhelper])"], [Pathname of privilege-separation helper.]) ]) 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 Path MTU discovery. case $host_os in linux*) pmtu=yes ;; *) pmtu=no ;; esac AM_CONDITIONAL([PATHMTU], [test $pmtu = yes]) 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_2_0([2.4.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 #include #include #include ], [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_TESTDIR([t]) AC_CONFIG_FILES( [Makefile] [common/Makefile] [uslip/Makefile] [pathmtu/Makefile] [client/Makefile] [priv/Makefile] [server/Makefile] [proxy/Makefile] [pkstream/Makefile] [wireshark/Makefile] [init/Makefile] [py/Makefile] [peerdb/Makefile] [keys/Makefile] [svc/Makefile] [mon/Makefile] [t/Makefile t/atlocal] [manual/Makefile]) AC_OUTPUT dnl ----- That's all, folks -------------------------------------------------