chiark / gitweb /
server, common: Split more code into utilities.
[tripe] / configure.ac
CommitLineData
6b6ad670
MW
1dnl -*-autoconf-*-
2dnl
3dnl Configuration script for TrIPE
4dnl
5dnl (c) 2001 Straylight/Edgeware
6dnl
7
8dnl ----- Licensing notice --------------------------------------------------
9dnl
10dnl This file is part of Trivial IP Encryption (TrIPE).
11dnl
12dnl TrIPE is free software; you can redistribute it and/or modify
13dnl it under the terms of the GNU General Public License as published by
14dnl the Free Software Foundation; either version 2 of the License, or
15dnl (at your option) any later version.
16dnl
17dnl TrIPE is distributed in the hope that it will be useful,
18dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
19dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20dnl GNU General Public License for more details.
21dnl
22dnl You should have received a copy of the GNU General Public License
23dnl along with TrIPE; if not, write to the Free Software Foundation,
24dnl Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
25
26dnl--------------------------------------------------------------------------
27dnl Initialization.
28
29mdw_AUTO_VERSION
30AC_INIT([tripe], AUTO_VERSION, [mdw@distorted.org.uk])
31AC_CONFIG_SRCDIR([server/tripe.h])
32AC_CONFIG_AUX_DIR([config])
33AM_INIT_AUTOMAKE([foreign])
34
35AC_PROG_CC
36AM_PROG_CC_C_O
37AX_CFLAGS_WARN_ALL
38AC_CANONICAL_HOST
39AM_PROG_LIBTOOL
40
41dnl--------------------------------------------------------------------------
42dnl C programming environment.
43
44AC_CHECK_HEADERS([stdarg.h])
45
46AC_SEARCH_LIBS([socket], [socket])
47
48case "$host_os" in
49 linux)
50 AC_ARG_WITH([linux-includes],
51 AS_HELP_STRING(
52 [--with-linux-includes=DIR],
53 [Linux kernel includes]),
54 [CFLAGS="$CFLAGS -I$withval"], [:])
55 ;;
56esac
57
58PKG_CHECK_MODULES([mLib], [mLib >= 2.0.4])
59PKG_CHECK_MODULES([catacomb], [catacomb >= 2.1.1])
60
61CFLAGS="$CFLAGS $mLib_CFLAGS $catacomb_CFLAGS"
62LIBS="$LIBS $mLib_LIBS"
63
64dnl--------------------------------------------------------------------------
65dnl Directories to install things into.
66
67dnl TRIPE_DEFINE_PATH(VAR, ARG, HELP, DEFAULT, [DEFINE, DEFINEHELP])
68AC_DEFUN([TRIPE_DEFINE_PATH], [
69 AC_ARG_WITH([$1], AS_HELP_STRING([--with-$1=$2], [$3]),
70 [$1=$withval], [$1=$4])
71 AC_SUBST([$1])
72 m4_if([$5], [], [], [
73 mdw_DEFINE_PATHS([mdw_DEFINE_PATH([$5], [$][$1], [$6])])
74 ])
75])
76
77dnl Actual options.
78TRIPE_DEFINE_PATH(
79 [configdir], [DIR], [keys and other configuration [[LOCALSTATE/tripe]]],
80 ['${localstatedir}/tripe'],
81 [CONFIGDIR], [Look for keys and other configuration here.])
82
83TRIPE_DEFINE_PATH(
84 [socketdir], [DIR], [admin socket [[.]]], [.],
85 [SOCKETDIR], [Create or look for administration socket here.])
86
87TRIPE_DEFINE_PATH(
88 [pidfile], [FILE], [process-id [[./tripectl.pid]]], [tripectl.pid])
89
90TRIPE_DEFINE_PATH(
91 [initconfig], [FILE], [configuration for init script [[/etc/tripe.conf]]],
92 [/etc/tripe.conf])
93
94TRIPE_DEFINE_PATH(
95 [logfile], [FILE], [logging output [[./tripe.log]]], [tripe.log])
96
97dnl--------------------------------------------------------------------------
98dnl Other options.
99
100AC_ARG_WITH([tracing],
101 AS_HELP_STRING(
102 [--without-tracing],
103 [compile out tracing support (not recommended)]),
104 [test "$withval" = no &&
105 AC_DEFINE([NTRACE], [1], [Disable all tracing.])],
106 [:])
107
108dnl--------------------------------------------------------------------------
109dnl Tunnel devices.
110
111dnl Provide the user with a choice.
112AC_ARG_WITH([tunnel],
113 AS_HELP_STRING(
114 [--with-tunnel=KIND],
115 [kinds of tunnel device to use (linux, unet, bsd, slip)]),
116 [tun=$withval], [tun=auto])
117
118dnl If he doesn't choose, pick something sensible.
119if test "$tun" = auto; then
120 AC_CACHE_CHECK([tunnel drivers to use], [mdw_cv_tunnel], [
121 mdw_cv_tunnel=""
122 case $host_os in
123 linux*)
124 case `uname -r` in
125 [2.[4-9].*] | [2.[1-9][0-9]*.*] | [[3-9].*] | [[1-9][0-9]*.*])
126 mdw_cv_tunnel=linux
127 ;;
128 *)
129 mdw_cv_tunnel=unet
130 ;;
131 esac
132 ;;
133 *bsd*)
134 mdw_cv_tunnel=bsd
135 ;;
136 esac
137 mdw_cv_tunnel=$mdw_cv_tunnel${mdw_cv_tunnel:+ }slip
138 ])
139 tun=$mdw_cv_tunnel
140fi
141
142tunnels=""
143for i in $tun; do
144 case $i in
145 linux) AC_DEFINE([TUN_LINUX], [1],
146 [Install the Linux TUN/TAP driver.]) ;;
147 bsd) AC_DEFINE([TUN_BSD], [1],
148 [Install the BSD tunnel driver.]) ;;
149 unet) AC_DEFINE([TUN_UNET], [1],
150 [Install the obsolete Linux Usernet driver.]) ;;
151 slip) ;;
152 *) AC_MSG_ERROR([Unknown tunnel type]) ;;
153 esac
154 tunnels="$tunnels&tun_$i, "
155done
156AC_DEFINE_UNQUOTED([TUN_LIST], [$tunnels 0],
157 [List of tunnel drivers to install.])
158
159dnl--------------------------------------------------------------------------
160dnl Python.
161
162dnl Find out whether Python exists at all.
163AM_PATH_PYTHON([2.4], [python=yes], [python=no])
164AM_CONDITIONAL([HAVE_PYTHON], [test $python = yes])
165
166dnl Find out whether we can use Catacomb and GTK.
167if test $python = yes; then
168 AC_PYTHON_MODULE([pygtk])
169 AC_PYTHON_MODULE([catacomb])
170fi
171AM_CONDITIONAL([HAVE_PYGTK], [test ${HAVE_PYMOD_PYGTK-no} = yes])
172AM_CONDITIONAL([HAVE_PYCATACOMB], [test ${HAVE_PYMOD_CATACOMB-no} = yes])
173
174dnl--------------------------------------------------------------------------
175dnl Wireshark.
176dnl
177dnl This is all distressingly ugly and complicated. Why they can't just
178dnl provide a pkg-config dropping containing all the useful information about
179dnl the installation I don't know.
180
181WIRESHARK_CFLAGS=""
182: ${wireshark_plugindir=unknown}
183
184dnl Get the user to help.
185AC_ARG_WITH([wireshark],
186 AS_HELP_STRING(
187 [--with-wireshark[=DIR]],
188 [build and install Wireshark plugin]),
189 [case "$withval" in
190 no) haveshark=no needshark=no ;;
191 yes) haveshark=yes needshark=yes ;;
192 *) haveshark=yes needshark=yes
63efe3ef 193 wireshark_plugindir=$withval ;;
6b6ad670
MW
194 esac],
195 [haveshark=yes needshark=no])
196
197dnl Try to find the Wireshark installation directory the hard way.
198case "$haveshark,$wireshark_plugindir" in
199 yes,unknown)
200 AC_CACHE_CHECK([where to put Wireshark plugins],
201 [mdw_cv_wireshark_plugin_dir], [
202 mdw_cv_wireshark_plugin_dir="failed"
203 wsprefix=none
204 for i in "${prefix}" /usr/local /usr `echo $PATH | tr : " "`; do
205 if test -x "$i/bin/tshark"; then
206 wsprefix=$i
207 break
208 fi
209 done
210 if test "$wsprefix" != none; then
211 wsbin=$wsprefix/bin/tshark
212 wsver=`$wsbin -v | sed ['s/^[^ ]* \([0-9A-Za-z.]*\).*$/\1/;q']`
213 dir=$wsprefix/lib/wireshark/plugins
214 test -d "$dir/$wsver" && dir="$dir/$wsver"
215 if test -d "$dir"; then
216 mdw_cv_wireshark_plugin_dir=$dir
217 fi
218 fi
219 ])
220 case $mdw_cv_wireshark_plugin_dir in
221 failed) haveshark=no ;;
222 *) wireshark_plugindir=$mdw_cv_wireshark_plugin_dir ;;
223 esac
224esac
225
226dnl If we're still interested, find Glib.
227case "$haveshark" in
228 yes) AM_PATH_GLIB([1.2.0], [], haveshark=false, [gmodule]) ;;
229esac
230
231dnl Find the include directory. This would be much easier if they just
232dnl provided a pkg-config file.
233case "$haveshark" in
234 yes)
235 bad=yes
236 mdw_CFLAGS=$CFLAGS
237 wsprefix=`echo $wireshark_plugindir | sed 's:/lib/.*$::'`
238 AC_CACHE_CHECK([how to find the Wireshark headers],
63efe3ef 239 [mdw_cv_wireshark_includes], [
6b6ad670
MW
240 mdw_cv_wireshark_includes=failed
241 for i in \
242 "" \
243 "-I${wsprefix}/include/wireshark" \
244 "-I${wsprefix}/include" \
245 "-I${prefix}/include/wireshark" \
246 "-I${prefix}/include" \
247 "-I/usr/include/wireshark" \
248 "-I/usr/local/include/wireshark" \
249 "-I/usr/local/include"; do
250 CFLAGS="$GLIB_CFLAGS $i"
251 AC_TRY_COMPILE([
252#include <netinet/in.h>
253#include <glib.h>
254#include <wireshark/config.h>
255#include <wireshark/epan/packet.h>],
256 [dissector_handle_t dh; dh = create_dissector_handle(0, 0);],
257 [bad=no; break])
258 done
259 case "$bad" in
260 no) mdw_cv_wireshark_includes=$i ;;
261 esac
262 CFLAGS=$mdw_CFLAGS
263 ])
264 case "$mdw_cv_wireshark_includes" in
265 failed) haveshark=no ;;
266 esac
267esac
268
269case "$haveshark,$needshark" in
270 no,yes)
271 AC_MSG_ERROR([failed to configure Wireshark plugin])
272 ;;
273 yes,*)
274 WIRESHARK_CFLAGS="$CFLAGS $GLIB_CFLAGS $mdw_cv_wireshark_includes"
275 AC_SUBST(WIRESHARK_CFLAGS)
276 AC_SUBST(wireshark_plugindir)
277 ;;
278esac
279
280AM_CONDITIONAL([HAVE_WIRESHARK], [test "$haveshark" = yes])
281
282dnl--------------------------------------------------------------------------
283dnl Produce output.
284
285AC_CONFIG_HEADER([config/config.h])
286
287AC_CONFIG_FILES(
288 [Makefile]
289 [common/Makefile]
290 [client/Makefile]
291 [server/Makefile]
292 [proxy/Makefile]
293 [pkstream/Makefile]
294 [wireshark/Makefile]
295 [init/Makefile]
296 [keys/Makefile]
297 [mon/Makefile])
298AC_OUTPUT
299
300dnl ----- That's all, folks -------------------------------------------------