chiark / gitweb /
configure.ac, Makefile.am: More subsetting based on module availability.
[tripe] / configure.ac
CommitLineData
6b6ad670
MW
1dnl -*-autoconf-*-
2dnl
3dnl Configuration script for TrIPE
4dnl
5dnl (c) 2001 Straylight/Edgeware
6dnl
7
8f3f3ac7 8dnl----- Licensing notice ---------------------------------------------------
6b6ad670
MW
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])
2171b19e 34mdw_SILENT_RULES
6b6ad670
MW
35
36AC_PROG_CC
37AM_PROG_CC_C_O
38AX_CFLAGS_WARN_ALL
cb160b86 39AX_TYPE_SOCKLEN_T
6b6ad670
MW
40AC_CANONICAL_HOST
41AM_PROG_LIBTOOL
42
1c5f4539
MW
43AC_CHECK_PROGS([AUTOM4TE], [autom4te])
44
b90b8384
MW
45mdw_ORIG_CFLAGS=$CFLAGS
46mdw_ORIG_CPPFLAGS=$CPPFLAGS
47AC_SUBST(AM_CFLAGS)
48AC_SUBST(AM_CPPFLAGS)
49
6b6ad670
MW
50dnl--------------------------------------------------------------------------
51dnl C programming environment.
52
53AC_CHECK_HEADERS([stdarg.h])
54
55AC_SEARCH_LIBS([socket], [socket])
56
57case "$host_os" in
58 linux)
59 AC_ARG_WITH([linux-includes],
b90b8384 60 AS_HELP_STRING(
6b6ad670
MW
61 [--with-linux-includes=DIR],
62 [Linux kernel includes]),
b90b8384 63 [AM_CPPFLAGS="AM_CPPFLAGS -I$withval"], [:])
6b6ad670
MW
64 ;;
65esac
66
99deb7e8 67PKG_CHECK_MODULES([mLib], [mLib >= 2.2.1])
04ed79b8 68PKG_CHECK_MODULES([catacomb], [catacomb >= 2.1.4])
6b6ad670 69
b90b8384 70AM_CFLAGS="$AM_CFLAGS $mLib_CFLAGS $catacomb_CFLAGS"
6b6ad670
MW
71
72dnl--------------------------------------------------------------------------
73dnl Directories to install things into.
74
75dnl TRIPE_DEFINE_PATH(VAR, ARG, HELP, DEFAULT, [DEFINE, DEFINEHELP])
76AC_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
85dnl Actual options.
86TRIPE_DEFINE_PATH(
87 [configdir], [DIR], [keys and other configuration [[LOCALSTATE/tripe]]],
88 ['${localstatedir}/tripe'],
89 [CONFIGDIR], [Look for keys and other configuration here.])
90
91TRIPE_DEFINE_PATH(
92 [socketdir], [DIR], [admin socket [[.]]], [.],
93 [SOCKETDIR], [Create or look for administration socket here.])
94
95TRIPE_DEFINE_PATH(
96 [pidfile], [FILE], [process-id [[./tripectl.pid]]], [tripectl.pid])
97
98TRIPE_DEFINE_PATH(
288fc12b
MW
99 [initconfig], [FILE],
100 [configuration for init script [[SYSCONFDIR/tripe.conf]]],
101 ['${sysconfdir}/tripe.conf'])
6b6ad670
MW
102
103TRIPE_DEFINE_PATH(
104 [logfile], [FILE], [logging output [[./tripe.log]]], [tripe.log])
105
106dnl--------------------------------------------------------------------------
388e0319
MW
107dnl Privilege-separation helper.
108
109mdw_DEFINE_PATHS([
110 AC_DEFINE_UNQUOTED([PRIVSEP_HELPER],
111 ["mdw_PATH([$libexecdir])/mdw_PROG([tripe-privhelper])"],
112 [Pathname of privilege-separation helper.])
113])
114
115dnl--------------------------------------------------------------------------
6b6ad670
MW
116dnl Other options.
117
118AC_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
126dnl--------------------------------------------------------------------------
127dnl Tunnel devices.
128
129dnl Provide the user with a choice.
130AC_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
136dnl If he doesn't choose, pick something sensible.
137if 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
158fi
159
160tunnels=""
161for 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, "
173done
174AC_DEFINE_UNQUOTED([TUN_LIST], [$tunnels 0],
175 [List of tunnel drivers to install.])
176
177dnl--------------------------------------------------------------------------
178dnl Python.
179
180dnl Find out whether Python exists at all.
181AM_PATH_PYTHON([2.4], [python=yes], [python=no])
182AM_CONDITIONAL([HAVE_PYTHON], [test $python = yes])
183
207f030a 184dnl Find out whether we can use the various external modules.
6b6ad670
MW
185if test $python = yes; then
186 AC_PYTHON_MODULE([pygtk])
207f030a
MW
187 AC_PYTHON_MODULE([cdb])
188 AC_PYTHON_MODULE([mLib])
6b6ad670
MW
189 AC_PYTHON_MODULE([catacomb])
190fi
191AM_CONDITIONAL([HAVE_PYGTK], [test ${HAVE_PYMOD_PYGTK-no} = yes])
207f030a
MW
192AM_CONDITIONAL([HAVE_PYCDB], [test ${HAVE_PYMOD_CDB-no} = yes])
193AM_CONDITIONAL([HAVE_PYMLIB], [test ${HAVE_PYMOD_MLIB-no} = yes])
6b6ad670
MW
194AM_CONDITIONAL([HAVE_PYCATACOMB], [test ${HAVE_PYMOD_CATACOMB-no} = yes])
195
196dnl--------------------------------------------------------------------------
197dnl Wireshark.
198dnl
199dnl This is all distressingly ugly and complicated. Why they can't just
200dnl provide a pkg-config dropping containing all the useful information about
201dnl the installation I don't know.
202
203WIRESHARK_CFLAGS=""
204: ${wireshark_plugindir=unknown}
205
206dnl Get the user to help.
207AC_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
63efe3ef 215 wireshark_plugindir=$withval ;;
6b6ad670
MW
216 esac],
217 [haveshark=yes needshark=no])
218
e0603e88
MW
219dnl Try to find the Wireshark installation directory the hard way. This is
220dnl remarkably annoying. This is, unfortunately, very likely to guess wrong,
221dnl but there doesn't seem to be a better way.
6b6ad670
MW
222case "$haveshark,$wireshark_plugindir" in
223 yes,unknown)
224 AC_CACHE_CHECK([where to put Wireshark plugins],
225 [mdw_cv_wireshark_plugin_dir], [
e0603e88
MW
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 )
6b6ad670
MW
245 ])
246 case $mdw_cv_wireshark_plugin_dir in
247 failed) haveshark=no ;;
248 *) wireshark_plugindir=$mdw_cv_wireshark_plugin_dir ;;
249 esac
250esac
251
252dnl If we're still interested, find Glib.
253case "$haveshark" in
9db701ca 254 yes) AM_PATH_GLIB_2_0([2.4.0], [], [haveshark=false], [gmodule]) ;;
6b6ad670
MW
255esac
256
257dnl Find the include directory. This would be much easier if they just
258dnl provided a pkg-config file.
259case "$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],
63efe3ef 265 [mdw_cv_wireshark_includes], [
6b6ad670
MW
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
293esac
294
295case "$haveshark,$needshark" in
296 no,yes)
297 AC_MSG_ERROR([failed to configure Wireshark plugin])
298 ;;
299 yes,*)
b90b8384 300 WIRESHARK_CFLAGS="$GLIB_CFLAGS $mdw_cv_wireshark_includes"
6b6ad670
MW
301 AC_SUBST(WIRESHARK_CFLAGS)
302 AC_SUBST(wireshark_plugindir)
303 ;;
304esac
305
306AM_CONDITIONAL([HAVE_WIRESHARK], [test "$haveshark" = yes])
307
308dnl--------------------------------------------------------------------------
309dnl Produce output.
310
b90b8384
MW
311CFLAGS=$mdw_ORIG_CFLAGS
312CPPFLAGS=$mdw_ORIG_CPPFLAGS
313
6b6ad670 314AC_CONFIG_HEADER([config/config.h])
1c5f4539 315AC_CONFIG_TESTDIR([t])
6b6ad670
MW
316
317AC_CONFIG_FILES(
318 [Makefile]
319 [common/Makefile]
49f86fe4 320 [uslip/Makefile]
c64d8cd5 321 [pathmtu/Makefile]
6b6ad670 322 [client/Makefile]
388e0319 323 [priv/Makefile]
6b6ad670
MW
324 [server/Makefile]
325 [proxy/Makefile]
326 [pkstream/Makefile]
327 [wireshark/Makefile]
328 [init/Makefile]
2fa80010 329 [py/Makefile]
6005ef9b 330 [peerdb/Makefile]
6b6ad670 331 [keys/Makefile]
2aff5dbb 332 [svc/Makefile]
1c5f4539 333 [mon/Makefile]
a4f886c3 334 [contrib/Makefile]
1c5f4539 335 [t/Makefile t/atlocal])
6b6ad670
MW
336AC_OUTPUT
337
8f3f3ac7 338dnl----- That's all, folks --------------------------------------------------