ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/gvpe/configure.ac
Revision: 1.7
Committed: Sat Oct 4 13:20:06 2003 UTC (21 years, 2 months ago) by pcg
Branch: MAIN
CVS Tags: VPE_1_0
Changes since 1.6: +1 -1 lines
Log Message:
*** empty log message ***

File Contents

# Content
1 dnl Process this file with autoconf to produce a configure script.
2
3 AC_PREREQ(2.57)
4 AC_INIT(src/vped.C)
5 AC_CANONICAL_TARGET
6 AM_INIT_AUTOMAKE(vpe, 1.0)
7 AM_CONFIG_HEADER(config.h)
8 AM_MAINTAINER_MODE
9
10 AH_TOP([
11 #ifndef CONFIG_H__
12 #define CONFIG_H__
13
14 #ifdef __cplusplus
15 using namespace std;
16 #endif
17
18 ])
19
20 AH_BOTTOM([
21 #if __CYGWIN__
22
23 typedef unsigned char u8;
24 typedef unsigned short u16;
25 typedef unsigned int u32;
26
27 #else
28 #include <inttypes.h>
29
30 /* old modula-2 habits */
31 typedef unsigned char u8;
32 typedef uint16_t u16;
33 typedef uint32_t u32;
34 #endif
35
36 #endif
37 ])
38
39 dnl Include the macros from the m4/ directory
40 AM_ACLOCAL_INCLUDE(m4)
41
42 AM_GNU_GETTEXT([external])
43 AM_GNU_GETTEXT_VERSION(0.11.5)
44
45 # Enable GNU extensions.
46 # Define this here, not in acconfig's @TOP@ section, since definitions
47 # in the latter don't make it into the configure-time tests.
48 AC_DEFINE([_GNU_SOURCE], 1, [Enable GNU extenstions])
49 AC_DEFINE([__USE_BSD], 1, [Enable BSD extensions])
50
51 ALL_LINGUAS=""
52
53 dnl Checks for programs.
54 AC_PROG_CC
55 AC_PROG_CPP
56 AC_PROG_CXX
57 AC_PROG_GCC_TRADITIONAL
58 AC_PROG_AWK
59 AC_PROG_INSTALL
60 AC_PROG_LN_S
61 AC_PROG_MAKE_SET
62 AC_PROG_RANLIB
63
64 AC_ISC_POSIX
65
66 m4_if([
67 dnl Check and set OS
68
69 case $target_os in
70 *linux*)
71 AC_DEFINE(HAVE_LINUX, 1, [Linux])
72 [ rm -f src/device.c; ln -sf linux/device.c src/device.c ]
73 ;;
74 *freebsd*)
75 AC_DEFINE(HAVE_FREEBSD, 1, [FreeBSD])
76 [ rm -f src/device.c; ln -sf freebsd/device.c src/device.c ]
77 ;;
78 *darwin*)
79 AC_DEFINE(HAVE_DARWIN, 1, [Darwin (MacOS/X)])
80 [ rm -f src/device.c; ln -sf darwin/device.c src/device.c ]
81 ;;
82 *solaris*)
83 AC_DEFINE(HAVE_SOLARIS, 1, [Solaris/SunOS])
84 [ rm -f src/device.c; ln -sf solaris/device.c src/device.c ]
85 ;;
86 *openbsd*)
87 AC_DEFINE(HAVE_OPENBSD, 1, [OpenBSD])
88 [ rm -f src/device.c; ln -sf openbsd/device.c src/device.c ]
89 ;;
90 *netbsd*)
91 AC_DEFINE(HAVE_NETBSD, 1, [NetBSD])
92 [ rm -f src/device.c; ln -sf netbsd/device.c src/device.c ]
93 ;;
94 *cygwin*)
95 AC_DEFINE(HAVE_CYGWIN, 1, [Cygwin])
96 [ rm -f src/device.c; ln -sf cygwin/device.c src/device.c ]
97 ;;
98 *)
99 AC_MSG_ERROR("Unknown operating system.")
100 ;;
101 esac
102 ])
103
104 AC_CACHE_SAVE
105
106 dnl Checks for libraries.
107
108 AC_LANG(C++)
109 AC_CHECK_HEADERS(ext/hash_map)
110
111 dnl Checks for header files.
112 AC_CHECK_HEADERS([fcntl.h inttypes.h limits.h malloc.h stdint.h strings.h syslog.h unistd.h \
113 sys/file.h sys/ioctl.h sys/param.h sys/time.h netinet/in_systm.h cygwin.h])
114 AC_CHECK_HEADERS([net/ethernet.h net/if.h netinet/ip.h netinet/tcp.h], [], [],
115 [#include <sys/types.h>
116 #include <sys/socket.h>
117 #ifdef HAVE_NETINET_IN_SYSTM_H
118 #include <netinet/in_systm.h>
119 #endif])
120
121 dnl Checks for typedefs, structures, and compiler characteristics.
122 AC_C_CONST
123 AC_TYPE_PID_T
124 AC_TYPE_SIZE_T
125 AC_HEADER_TIME
126 AC_STRUCT_TM
127
128 AC_CACHE_CHECK([for socklen_t], ac_cv_type_socklen_t,
129 [
130 AC_TRY_COMPILE(
131 [#include <sys/types.h>
132 #include <sys/socket.h>],
133 [socklen_t len = 42; return len;],
134 ac_cv_type_socklen_t=yes,
135 ac_cv_type_socklen_t=no)
136 ])
137 if test $ac_cv_type_socklen_t = yes; then
138 AC_DEFINE(HAVE_SOCKLEN_T, 1, [socklen_t available])
139 fi
140
141 AC_CACHE_CHECK([for struct addrinfo], ac_cv_struct_addrinfo,
142 [
143 AC_TRY_COMPILE(
144 [#include <sys/types.h>
145 #include <sys/socket.h>
146 #include <netdb.h>],
147 [struct addrinfo ai; ai.ai_family = AF_INET; return ai.ai_family;],
148 ac_cv_struct_addrinfo=yes,
149 ac_cv_struct_addrinfo=no)
150 ])
151 if test $ac_cv_struct_addrinfo = yes; then
152 AC_DEFINE(HAVE_STRUCT_ADDRINFO, 1, [struct addrinfo available])
153 fi
154
155 dnl Checks for library functions.
156 AC_TYPE_SIGNAL
157
158 AC_LANG_PUSH(C)
159
160 AC_HEADER_STDC
161
162 AC_CHECK_FUNCS(asprintf daemon get_current_dir_name putenv select strerror strsignal strtol unsetenv mlockall)
163
164 AC_FUNC_ALLOCA
165
166 dnl Support for SunOS
167
168 AC_CHECK_FUNC(socket, [], [
169 AC_CHECK_LIB(socket, connect)
170 ])
171 AC_CHECK_FUNC(gethostbyname, [], [
172 AC_CHECK_LIB(nsl, gethostbyname)
173 ])
174
175 AC_LANG_POP
176
177 dnl AC_CHECK_FUNCS([freeaddrinfo gai_strerror getaddrinfo getnameinfo])
178
179 AC_CACHE_SAVE
180
181 dnl These are defined in files in m4/
182 tinc_TUNTAP
183 tinc_OPENSSL
184 dnl tinc_ZLIB
185
186 AC_ARG_ENABLE(rohc,
187 [AC_HELP_STRING(--enable-rohc, [enable robust header compression (rfc3095).])],
188 [
189 echo
190 echo "**********************************************************************"
191 echo "**********************************************************************"
192 echo "**** --enable-rohc not yet implemented *******************************"
193 echo "**********************************************************************"
194 echo "**** uuh sorry, I am such an ass, but I didn't find any rfc3095 (ROHC)"
195 echo "**** implementation to be used in GPL code on the web."
196 echo "**** so this option is just a fake. Please implement one and send it"
197 echo "**** to me ;)"
198 echo "**********************************************************************"
199 echo "**********************************************************************"
200 echo "**********************************************************************"
201 echo "**********************************************************************"
202 echo
203 ]
204 )
205
206 AC_ARG_ENABLE(icmp,
207 [AC_HELP_STRING(--enable-icmp, [enable icmp protocol support.])],
208 AC_DEFINE_UNQUOTED(ENABLE_ICMP, 1, [ICMP protocol support.])
209 )
210
211 AC_ARG_ENABLE(tcp,
212 [AC_HELP_STRING(--enable-tcp, [enable tcp protocol support.])],
213 AC_DEFINE_UNQUOTED(ENABLE_TCP, 1, [TCP protocol support.])
214 )
215
216 AC_ARG_ENABLE(http-proxy,
217 [AC_HELP_STRING(--enable-http-proxy, [enable http proxy connect support.])],
218 AC_DEFINE_UNQUOTED(ENABLE_HTTP_PROXY, 1, [http proxy connect support.])
219 )
220
221 HMAC=16 dnl see also the AC_HELP_STRING
222 AC_ARG_ENABLE(hmac-length,
223 [AC_HELP_STRING(--enable-hmac-length=BYTES, [use a hmac of length BYTES bytes (default 16). Allowed values are 4, 8, 12, 16.])],
224 HMAC=$enableval
225 )
226 AC_DEFINE_UNQUOTED(HMACLENGTH, $HMAC, [Size of HMAC in each packet in bytes.])
227
228 RAND=8 dnl see also the AC_HELP_STRING
229 AC_ARG_ENABLE(rand-length,
230 [AC_HELP_STRING(--enable-rand-length=BYTES, [use BYTES bytes of extra randomness (default 8). Allowed values are 0, 4, 8.])],
231 RAND=$enableval
232 )
233 AC_DEFINE_UNQUOTED(RAND_SIZE, $RAND, [Add this many bytes of randomness to each packet.])
234
235 MTU=1500 dnl see also the AC_HELP_STRING
236 AC_ARG_ENABLE(mtu,
237 [AC_HELP_STRING(--enable-max-mtu=BYTES, enable mtu sizes upto BYTES bytes (default 1500). Use 9100 for jumbogram support.)],
238 MTU=$enableval
239 )
240 AC_DEFINE_UNQUOTED(MAX_MTU, $MTU + 14, [Maximum MTU supported.])
241
242 COMPRESS=1
243 AC_ARG_ENABLE(compression,
244 [AC_HELP_STRING(--disable-compression, Disable compression support.)],
245 if test "x$enableval" = xno; then
246 COMPRESS=0
247 fi
248 )
249 AC_DEFINE_UNQUOTED(ENABLE_COMPRESSION, $COMPRESS, [Enable compression support.])
250
251 CIPHER=bf_cbc
252 AC_ARG_ENABLE(cipher,
253 [AC_HELP_STRING(--enable-cipher, [
254 Select the symmetric cipher (default "bf"). Must be one of
255 "bf" (blowfish), "aes-128", "aes-192" or "aes-256".])],
256 if test "x$enableval" = xbf ; then CIPHER=bf_cbc ; fi
257 if test "x$enableval" = xaes-128; then CIPHER=aes_128_cbc; fi
258 if test "x$enableval" = xaes-192; then CIPHER=aes_192_cbc; fi
259 if test "x$enableval" = xaes-256; then CIPHER=aes_256_cbc; fi
260 )
261 AC_DEFINE_UNQUOTED(ENABLE_CIPHER, EVP_${CIPHER}, [Select the symmetric cipher to use.])
262
263 DIGEST=sha1
264 AC_ARG_ENABLE(digest,
265 [AC_HELP_STRING(--enable-digest, [
266 Select the digets algorithm to use (default "sha1"). Must be one of
267 "sha1", "ripemd160", "md4" or "md5".])],
268 if test "x$enableval" = xsha1 ; then DIGEST=sha1 ; fi
269 if test "x$enableval" = xripemd160; then DIGEST=ripemd160; fi
270 if test "x$enableval" = xmd4 ; then DIGEST=md4 ; fi
271 if test "x$enableval" = xmd5 ; then DIGEST=md5 ; fi
272 )
273 AC_DEFINE_UNQUOTED(ENABLE_DIGEST, EVP_${DIGEST}, [Select the digest algorithm to use.])
274
275 TRUST=1
276 m4_if([
277 AC_ARG_ENABLE(trust,
278 [AC_HELP_STRING(--enable-trust, [
279 Make authentication faster but allow decoding by all hosts of a VPN.
280 Use this when the VPN hosts DO trust each other and you don't care
281 wether man-in-the-middle sniffing attacks are possible by admins
282 of other VPN hosts. On pentiums or similar machines this can cut down
283 the time for reconnects by 0.4 seconds or more.])],
284 if test "x$enableval" = xyes; then
285 TRUST=1
286 fi
287 )
288 ])
289 AC_DEFINE_UNQUOTED(ENABLE_TRUST, $TRUST, [Faster, but VPN hosts may sniff each others data.])
290
291 if $CXX -v --help 2>&1 | grep -q fno-rtti; then
292 CXXFLAGS="$CXXFLAGS -fno-rtti"
293 fi
294
295 if $CXX -v --help 2>&1 | grep -q fexceptions; then
296 CXXFLAGS="$CXXFLAGS -fno-exceptions"
297 fi
298
299 if $CXX -v --help 2>&1 | grep -q ffunction-sections; then
300 CXXFLAGS="$CXXFLAGS -ffunction-sections"
301 fi
302
303 if $LD -v --help 2>&1 | grep -q gc-sections; then
304 LDFLAGS="$LDFLAGS -Wl,--gc-sections"
305 fi
306
307 AC_CONFIG_COMMANDS_POST([
308
309 echo
310 echo "***"
311 echo "*** Configuration Summary"
312 echo "***"
313 echo "*** Cipher used: $CIPHER"
314 echo "*** Digest used: $DIGEST"
315 echo "*** HMAC length: $HMAC"
316 echo "*** RAND used: $RAND"
317 echo "*** Max. MTU: $MTU"
318 echo "*** Compression: $COMPRESS"
319 dnl echo "*** Trusted Mode: $TRUST"
320 echo "***"
321 echo
322
323 ])
324
325 AC_SUBST(INCLUDES)
326
327 AC_OUTPUT(Makefile po/Makefile.in
328 src/Makefile
329 doc/Makefile
330 lib/Makefile
331 m4/Makefile
332 )