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