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