ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/gvpe/configure.ac
Revision: 1.4
Committed: Tue Apr 8 03:00:44 2003 UTC (21 years, 1 month ago) by pcg
Branch: MAIN
Changes since 1.3: +5 -0 lines
Log Message:
*** empty log message ***

File Contents

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