ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/gvpe/configure.ac
Revision: 1.5
Committed: Sun Apr 13 15:19:36 2003 UTC (21 years, 1 month ago) by pcg
Branch: MAIN
CVS Tags: VPE_0_9
Changes since 1.4: +20 -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.5 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 pcg 1.4 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 pcg 1.2 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 pcg 1.3 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 pcg 1.1 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     )