ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/gvpe/configure.ac
Revision: 1.1
Committed: Sat Mar 1 15:53:02 2003 UTC (21 years, 2 months ago) by pcg
Branch: MAIN
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, 0.1)
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 HMAC=16 dnl see also the AC_HELP_STRING
187 AC_ARG_ENABLE(hmac-length,
188 [AC_HELP_STRING(--enable-hmac-length=BYTES, [use a hmac of length BYTES bytes (default 16). Allowed values are 4, 8, 12, 16.])],
189 HMAC=$enableval
190 )
191 AC_DEFINE_UNQUOTED(HMACLENGTH, $HMAC, [Size of HMAC in each packet in bytes.])
192
193 RAND=8 dnl see also the AC_HELP_STRING
194 AC_ARG_ENABLE(rand-length,
195 [AC_HELP_STRING(--enable-rand-length=BYTES, [use BYTES bytes of extra randomness (default 8). Allowed values are 0, 4, 8.])],
196 RAND=$enableval
197 )
198 AC_DEFINE_UNQUOTED(RAND_SIZE, $RAND, [Add this many bytes of randomness to each packet.])
199
200 MTU=1500 dnl see also the AC_HELP_STRING
201 AC_ARG_ENABLE(mtu,
202 [AC_HELP_STRING(--enable-max-mtu=BYTES, enable mtu sizes upto BYTES bytes (default 1500). Use 9100 for jumbogram support.)],
203 MTU=$enableval
204 )
205 AC_DEFINE_UNQUOTED(MAX_MTU, $MTU + 14, [Maximum MTU supported.])
206
207 COMPRESS=1
208 AC_ARG_ENABLE(compression,
209 [AC_HELP_STRING(--disable-compression, Disable compression support.)],
210 if test "x$enableval" = xno; then
211 COMPRESS=0
212 fi
213 )
214 AC_DEFINE_UNQUOTED(ENABLE_COMPRESSION, $COMPRESS, [Enable compression support.])
215
216 CIPHER=bf_cbc
217 AC_ARG_ENABLE(cipher,
218 [AC_HELP_STRING(--enable-cipher, [
219 Select the symmetric cipher (default "bf"). Must be one of
220 "bf" (blowfish), "aes-128", "aes-192" or "aes-256".])],
221 if test "x$enableval" = xbf ; then CIPHER=bf_cbc ; fi
222 if test "x$enableval" = xaes-128; then CIPHER=aes_128_cbc; fi
223 if test "x$enableval" = xaes-192; then CIPHER=aes_192_cbc; fi
224 if test "x$enableval" = xaes-256; then CIPHER=aes_256_cbc; fi
225 )
226 AC_DEFINE_UNQUOTED(ENABLE_CIPHER, EVP_${CIPHER}, [Select the symmetric cipher to use.])
227
228 DIGEST=sha1
229 AC_ARG_ENABLE(digest,
230 [AC_HELP_STRING(--enable-digest, [
231 Select the digets algorithm to use (default "sha1"). Must be one of
232 "sha1", "ripemd160", "md4" or "md5".])],
233 if test "x$enableval" = xsha1 ; then DIGEST=sha1 ; fi
234 if test "x$enableval" = xripemd160; then DIGEST=ripemd160; fi
235 if test "x$enableval" = xmd4 ; then DIGEST=md4 ; fi
236 if test "x$enableval" = xmd5 ; then DIGEST=md5 ; fi
237 )
238 AC_DEFINE_UNQUOTED(ENABLE_DIGEST, EVP_${DIGEST}, [Select the digest algorithm to use.])
239
240 TRUST=1
241 m4_if([
242 AC_ARG_ENABLE(trust,
243 [AC_HELP_STRING(--enable-trust, [
244 Make authentication faster but allow decoding by all hosts of a VPN.
245 Use this when the VPN hosts DO trust each other and you don't care
246 wether man-in-the-middle sniffing attacks are possible by admins
247 of other VPN hosts. On pentiums or similar machines this can cut down
248 the time for reconnects by 0.4 seconds or more.])],
249 if test "x$enableval" = xyes; then
250 TRUST=1
251 fi
252 )
253 ])
254 AC_DEFINE_UNQUOTED(ENABLE_TRUST, $TRUST, [Faster, but VPN hosts may sniff each others data.])
255
256 if $CXX -v --help 2>&1 | grep -q fno-rtti; then
257 CXXFLAGS="$CXXFLAGS -fno-rtti"
258 fi
259
260 if $CXX -v --help 2>&1 | grep -q fexceptions; then
261 CXXFLAGS="$CXXFLAGS -fno-exceptions"
262 fi
263
264 if $CXX -v --help 2>&1 | grep -q ffunction-sections; then
265 CXXFLAGS="$CXXFLAGS -ffunction-sections"
266 fi
267
268 if $LD -v --help 2>&1 | grep -q gc-sections; then
269 LDFLAGS="$LDFLAGS -Wl,--gc-sections"
270 fi
271
272 AC_CONFIG_COMMANDS_POST([
273
274 echo
275 echo "***"
276 echo "*** Configuration Summary"
277 echo "***"
278 echo "*** Cipher used: $CIPHER"
279 echo "*** Digest used: $DIGEST"
280 echo "*** HMAC length: $HMAC"
281 echo "*** RAND used: $RAND"
282 echo "*** Max. MTU: $MTU"
283 echo "*** Compression: $COMPRESS"
284 dnl echo "*** Trusted Mode: $TRUST"
285 echo "***"
286 echo
287
288 ])
289
290 AC_SUBST(INCLUDES)
291
292 AC_OUTPUT(Makefile po/Makefile.in
293 src/Makefile
294 doc/Makefile
295 lib/Makefile
296 m4/Makefile
297 )