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

# 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     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     )