chiark / gitweb /
Add support for Ethereal protocol analysis.
[tripe] / configure.in
1 dnl -*-autoconf-*-
2 dnl
3 dnl $Id: configure.in,v 1.13 2003/10/15 09:30:18 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 dnl ----- Revision history --------------------------------------------------
29 dnl
30 dnl $Log: configure.in,v $
31 dnl Revision 1.13  2003/10/15 09:30:18  mdw
32 dnl Add support for Ethereal protocol analysis.
33 dnl
34 dnl Revision 1.12  2003/07/13 11:54:40  mdw
35 dnl Version bump.
36 dnl
37 dnl Revision 1.11  2003/05/17 11:04:38  mdw
38 dnl Ship new configuration and startup kit.
39 dnl
40 dnl Revision 1.9  2003/04/06 10:33:31  mdw
41 dnl And again.  (Sigh.)
42 dnl
43 dnl Revision 1.8  2003/04/06 10:31:13  mdw
44 dnl Fix stupid bug.
45 dnl
46 dnl Revision 1.7  2003/04/06 10:25:17  mdw
47 dnl Support Linux TUN/TAP device.  Fix some bugs.
48 dnl
49 dnl Revision 1.6  2001/06/19 22:13:57  mdw
50 dnl Version bump.
51 dnl
52 dnl Revision 1.5  2001/03/03 12:30:39  mdw
53 dnl Make this a pre-release.
54 dnl
55 dnl Revision 1.4  2001/02/22 09:07:28  mdw
56 dnl Build documents now.
57 dnl
58 dnl Revision 1.3  2001/02/16 21:24:12  mdw
59 dnl Don't link the client against Catacomb.
60 dnl
61 dnl Revision 1.2  2001/02/04 01:17:54  mdw
62 dnl Create a configuration header file to tidy up command lines.
63 dnl
64 dnl Revision 1.1  2001/02/03 20:26:37  mdw
65 dnl Initial checkin.
66 dnl
67
68 AC_INIT(tripe.c)
69 AM_INIT_AUTOMAKE(tripe, 1.0.0pre5)
70 AM_CONFIG_HEADER(config.h)
71 AC_CANONICAL_HOST
72
73 AC_PROG_MAKE_SET
74 AC_PROG_CC
75 AM_PROG_LIBTOOL
76 mdw_GCC_FLAGS([-Wall])
77 mdw_OPT_TRACE
78
79 AC_ARG_WITH([linux-includes],
80 [  --with-linux-includes=DIR
81                           search for Linux kernel includes in DIR],
82 [CFLAGS="$CFLAGS -I$withval"],
83 [:])
84
85 DIRS=""
86 AC_ARG_WITH([ethereal],
87 [  --with-ethereal        build and install Ethereal plugin],
88 [case "$withval" in
89    no) ethereal=false;;
90    yes) ethereal='${prefix}/lib/ethereal/plugins';; 
91    *) ethereal=$withval;;
92 esac],
93 [ethereal=false])
94
95 case $host_os in
96   linux*)
97     case `uname -r` in
98 changequote(,)dnl
99       2.[4-9].* | 2.[1-9][0-9]*.* | [3-9].* | [1-9][0-9]*.*)
100 changequote([,])dnl
101         tun=linux
102         AC_DEFINE([TUN_TYPE], [TUN_LINUX])
103         ;;
104       *)
105         tun=unet
106         AC_DEFINE([TUN_TYPE], [TUN_UNET])
107         ;;
108     esac
109     ;;
110   *bsd*)
111     tun=bsd
112     AC_DEFINE([TUN_TYPE], [TUN_BSD])
113     ;;
114   *)
115     AC_MSG_ERROR([Unsupported OS: no tunnel interface available])
116     ;;
117 esac
118 AC_SUBST(tun)
119
120 mdw_MLIB(2.0.0)
121 mdw_CATACOMB(2.0.1, [CFLAGS="$CFLAGS $CATACOMB_CFLAGS"])
122
123 if test "$ethereal" != false; then
124   AM_PATH_GLIB([1.2.0], [], AC_MSG_ERROR([failed to find GLib]), [gmodule])
125   bad=true
126   mdw_CFLAGS=$CFLAGS
127   AC_CACHE_CHECK([how to find the Ethereal headers], 
128     [mdw_cv_ethereal_includes], [
129     for i in "" "-I/usr/include/ethereal"; do
130       CFLAGS="$GLIB_CFLAGS $i"
131       AC_TRY_COMPILE([
132 #include <netinet/in.h>
133 #include <glib.h>
134 #include <epan/packet.h>
135 ], [
136         dissector_handle_t dh;
137         dh = creat_dissector_handle(0, 0);
138       ], [bad=false; break])
139     done
140     if $bad; then
141       AC_MSG_ERROR([failed to find Ethereal headers])
142     fi
143     mdw_cv_ethereal_includes=$i
144     CFLAGS=$mdw_CFLAGS
145   ])
146   AC_CACHE_CHECK([whether the Ethereal headers are broken],
147     [mdw_cv_ethereal_buggered], [
148     CFLAGS="$GLIB_CFLAGS $i"
149     AC_TRY_COMPILE([
150 #include <netinet/in.h>
151 #include <glib.h>
152 #include <epan/packet.h>
153 #include <plugins/plugin_api.h>
154 ], [
155       G_MODULE_EXPORT void plugin_init(plugin_address_table_t *pat)
156       {
157         plugin_address_table_init(pat);
158       }
159     ], [mdw_cv_ethereal_buggered=no], [mdw_cv_ethereal_buggered=yes])
160     CFLAGS=$mdw_CFLAGS
161   ])
162   if test $mdw_cv_ethereal_buggered = yes; then
163     AC_DEFINE(ETHEREAL_BUGGERED)
164   fi
165
166   ETHEREAL_CFLAGS="$CFLAGS $GLIB_CFLAGS $mdw_cv_ethereal_includes"
167   ETHEREAL_PLUGIN_DIR=$ethereal
168   AC_SUBST(ETHEREAL_CFLAGS)
169   AC_SUBST(ETHEREAL_PLUGIN_DIR)
170   DIRS="$DIRS ethereal"
171 fi
172
173 AC_SUBST(DIRS)
174 AC_OUTPUT(Makefile doc/Makefile ethereal/Makefile tripe-init)
175
176 dnl ----- That's all, folks -------------------------------------------------