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