chiark / gitweb /
Expunge CVS cruft.
[tripe] / configure.in
1 dnl -*-autoconf-*-
2 dnl
3 dnl $Id: configure.in,v 1.16 2004/04/19 07:44:16 mdw Exp $
4 dnl
5 dnl Configuration script for TrIPE
6 dnl
7 dnl (c) 2001 Straylight/Edgeware
8 dnl
9
10 dnl ----- Licensing notice --------------------------------------------------
11 dnl
12 dnl This file is part of Trivial IP Encryption (TrIPE).
13 dnl
14 dnl TrIPE is free software; you can redistribute it and/or modify
15 dnl it under the terms of the GNU General Public License as published by
16 dnl the Free Software Foundation; either version 2 of the License, or
17 dnl (at your option) any later version.
18 dnl 
19 dnl TrIPE is distributed in the hope that it will be useful,
20 dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
21 dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
22 dnl GNU General Public License for more details.
23 dnl 
24 dnl You should have received a copy of the GNU General Public License
25 dnl along with TrIPE; if not, write to the Free Software Foundation,
26 dnl Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
27
28 AC_INIT(tripe.c)
29 AM_INIT_AUTOMAKE(tripe, 1.0.0pre6)
30 AM_CONFIG_HEADER(config.h)
31 AC_CANONICAL_HOST
32
33 AC_PROG_MAKE_SET
34 AC_PROG_CC
35 AM_PROG_LIBTOOL
36 mdw_GCC_FLAGS([-Wall])
37 mdw_OPT_TRACE
38
39 AC_ARG_WITH([linux-includes],
40 [  --with-linux-includes=DIR
41                           search for Linux kernel includes in DIR],
42 [CFLAGS="$CFLAGS -I$withval"],
43 [:])
44
45 AC_ARG_WITH([configdir],
46 [  --with-configdir=DIR    look for keys and other configuration in DIR
47                           [default=/var/lib/tripe]],
48 [configdir=$withval],
49 [configdir=/var/lib/tripe])
50
51 AC_ARG_WITH([socketdir],
52 [  --with-socketdir=DIR    put admin socket in DIR [default=.]],
53 [socketdir=$withval],
54 [socketdir=.])
55
56 AC_ARG_WITH([pidfile],
57 [  --with-pidfile=FILE     make tripectl write its pid to FILE
58                           [default=./tripectl.pid]],
59 [pidfile=$withval],
60 [pidfile=tripectl.pid])
61
62 AC_ARG_WITH([initconfig],
63 [  --with-initconfig=FILE  read definitions from FILE in init script
64                           [default=/etc/tripe.conf]],
65 [initconfig=$withval],
66 [initconfig=/etc/tripe.conf])
67
68 AC_ARG_WITH([logfile],
69 [  --with-logfile=DIR       make tripectl write its log to FILE 
70                            [default=./tripe.log]],
71 [logfile=$withval],
72 [logfile=tripe.log])
73
74 DIRS=""
75 ETHEREAL_CFLAGS=""
76 ETHEREAL_PLUGIN_DIR="unknown"
77 AC_ARG_WITH([ethereal],
78 [  --with-ethereal         build and install Ethereal plugin],
79 [case "$withval" in
80    no) ethereal=false requireethereal=false;;
81    yes) ethereal=true; requireethereal=true;;
82    *) ethereal=true requireethereal=true ETHEREAL_PLUGIN_DIR=$withval;;
83 esac],
84 [ethereal=true requireethereal=false])
85
86 case $host_os in
87   linux*)
88     case `uname -r` in
89 changequote(,)dnl
90       2.[4-9].* | 2.[1-9][0-9]*.* | [3-9].* | [1-9][0-9]*.*)
91 changequote([,])dnl
92         tun=linux
93         AC_DEFINE([TUN_TYPE], [TUN_LINUX])
94         ;;
95       *)
96         tun=unet
97         AC_DEFINE([TUN_TYPE], [TUN_UNET])
98         ;;
99     esac
100     ;;
101   *bsd*)
102     tun=bsd
103     AC_DEFINE([TUN_TYPE], [TUN_BSD])
104     ;;
105   *)
106     AC_MSG_ERROR([Unsupported OS: no tunnel interface available])
107     ;;
108 esac
109 AC_SUBST(tun)
110
111 mdw_MLIB(2.0.0)
112 mdw_CATACOMB(2.1.0, [CFLAGS="$CFLAGS $CATACOMB_CFLAGS"])
113
114 if test "$ethereal" = true -a "$ETHEREAL_PLUGIN_DIR" = unknown; then
115   AC_CACHE_CHECK([where to put Ethereal plugins], 
116     [mdw_cv_ethereal_plugin_dir], [
117     changequote(,)
118     mdw_cv_ethereal_plugin_dir="failed"
119     ethprefix=none
120     for i in "${prefix}" /usr/local /usr `echo $PATH | tr : " "`; do
121       if test -x "$i/bin/ethereal"; then
122          ethprefix=$i
123          break
124       fi
125     done
126     if test "$ethprefix" != none; then
127       ethbin=$ethprefix/bin/ethereal
128       ethver=`$ethbin -v | sed 's/^[^ ]* \([0-9A-Za-z.]*\).*$/\1/'`
129       dir=$ethprefix/lib/ethereal/plugins/$ethver
130       if test -d "$dir"; then
131         mdw_cv_ethereal_plugin_dir=$dir
132       fi
133     fi
134     changequote([, ])
135   ])
136   case $mdw_cv_ethereal_plugin_dir in
137     failed) ethereal=false;;
138     *) ETHEREAL_PLUGIN_DIR=$mdw_cv_ethereal_plugin_dir;;
139   esac
140 fi
141
142 if test "$ethereal" = true; then
143   AM_PATH_GLIB([1.2.0], [], ethereal=false, [gmodule])
144 fi
145 if test "$ethereal" = true; then
146   bad=true
147   mdw_CFLAGS=$CFLAGS
148   ethprefix=`echo $ETHEREAL_PLUGIN_DIR | sed 's:/lib/.*$::'`
149   AC_CACHE_CHECK([how to find the Ethereal headers], 
150     [mdw_cv_ethereal_includes], [
151     mdw_cv_ethereal_includes=failed
152     for i in \
153         "" \
154         "-I${ethprefix}/include/ethereal" \
155         "-I${ethprefix}/include" \
156         "-I${prefix}/include/ethereal" \
157         "-I${prefix}/include" \
158         "-I/usr/include/ethereal" \
159         "-I/usr/local/include/ethereal" \
160         "-I/usr/local/include"; do
161       CFLAGS="$GLIB_CFLAGS $i"
162       AC_TRY_COMPILE([
163 #include <netinet/in.h>
164 #include <glib.h>
165 #include <epan/packet.h>
166 ], [
167         dissector_handle_t dh;
168         dh = creat_dissector_handle(0, 0);
169       ], [bad=false; break])
170     done
171     if test $bad = false; then
172       mdw_cv_ethereal_includes=$i
173     fi
174     CFLAGS=$mdw_CFLAGS
175   ])
176   case $mdw_cv_ethereal_plugin_dir in
177     failed) ethereal=false;;
178     *) ETHEREAL_PLUGIN_DIR=$mdw_cv_ethereal_plugin_dir;;
179   esac  
180 fi
181
182 if test "$ethereal" = true; then
183   AC_CACHE_CHECK([whether the Ethereal headers are broken],
184     [mdw_cv_ethereal_buggered], [
185     CFLAGS="$GLIB_CFLAGS $i"
186     AC_TRY_COMPILE([
187 #include <netinet/in.h>
188 #include <glib.h>
189 #include <epan/packet.h>
190 #include <plugins/plugin_api.h>
191 ], [
192       G_MODULE_EXPORT void plugin_init(plugin_address_table_t *pat)
193       {
194         plugin_address_table_init(pat);
195       }
196     ], [mdw_cv_ethereal_buggered=no], [mdw_cv_ethereal_buggered=yes])
197     CFLAGS=$mdw_CFLAGS
198   ])
199   if test $mdw_cv_ethereal_buggered = yes; then
200     AC_DEFINE(ETHEREAL_BUGGERED)
201   fi
202
203   ETHEREAL_CFLAGS="$CFLAGS $GLIB_CFLAGS $mdw_cv_ethereal_includes"
204   AC_SUBST(ETHEREAL_CFLAGS)
205   AC_SUBST(ETHEREAL_PLUGIN_DIR)
206   DIRS="$DIRS ethereal"
207 fi
208
209 if test "$ethereal" = false -a "$requireethereal" = true; then
210   AC_MSG_ERROR([failed to configure Ethereal plugin])
211 fi
212
213 mdw_DEFINE_PATHS([
214   mdw_DEFINE_PATH([CONFIGDIR], [$configdir])
215   mdw_DEFINE_PATH([SOCKETDIR], [$socketdir])
216   AC_SUBST(socketdir) AC_SUBST(configdir) AC_SUBST(logfile) AC_SUBST(pidfile)
217   AC_SUBST(initconfig)
218 ])
219 AC_SUBST(DIRS)
220 AC_OUTPUT(Makefile doc/Makefile ethereal/Makefile tripe-init)
221
222 dnl ----- That's all, folks -------------------------------------------------