vdetaplib: port/mode/group can be set up
[vde.git] / vde-2 / configure.ac
blob94d6a407b1aa971351aafa33ec0bf9e550b0167f
1 #                                               -*- Autoconf -*-
2 # Process this file with autoconf to produce a configure script.
4 AC_PREREQ(2.59)
5 AC_INIT([vde2], [2.2.2], [info@v2.cs.unibo.it])
6 AM_INIT_AUTOMAKE([foreign dist-bzip2 subdir-objects])
7 AC_CONFIG_SRCDIR([include/vde.h])
8 AC_CONFIG_HEADER([include/config.h])
9 AC_CONFIG_LIBOBJ_DIR(src/common)
11 # Checks for programs.
12 AC_PROG_CXX
13 AC_PROG_CC
14 AC_PROG_INSTALL
15 AC_PROG_LN_S
16 AC_PROG_LIBTOOL
17 AM_PROG_CC_C_O
19 # Checks for libraries.
20 AC_CHECK_LIB([dl], [dlopen])
21 AC_CHECK_LIB([crypto], [EVP_EncryptInit],
22                 [add_cryptcab_support=yes],
23                 [add_cryptcab_support=no ; warn_cryptcab=yes])
24 AC_CHECK_LIB([pcap], [pcap_open_dead],
25                 [add_pcap=yes],
26                 [add_pcap=no ; warn_pcap=yes])
28 # Checks for header files.
29 AC_HEADER_STDC
30 AC_HEADER_SYS_WAIT
31 AC_CHECK_HEADERS([arpa/inet.h fcntl.h netdb.h netinet/in.h stddef.h stdint.h stdlib.h string.h strings.h sys/ioctl.h sys/param.h sys/socket.h sys/time.h syslog.h termio.h termios.h unistd.h sys/filio.h sys/bitypes.h sys/wait.h sys/select.h sys/signal.h sys/stropts.h termios.h sys/type32.h])
33 AC_CHECK_HEADERS([syslimits.h sys/syslimits.h])
35 AC_CHECK_HEADERS([openssl/blowfish.h],
36                  [],
37                  [add_cryptcab_support=no ; warn_cryptcab=yes])
39 # Checks for typedefs, structures, and compiler characteristics.
40 AC_C_CONST
41 AC_C_INLINE
42 AC_C_BIGENDIAN
43 AC_C_PROTOTYPES
44 AC_TYPE_MODE_T
45 AC_TYPE_PID_T
46 AC_TYPE_SIZE_T
47 AC_HEADER_TIME
49 # Checks for library functions.
50 AC_FUNC_CHOWN
51 AC_FUNC_FORK
52 AC_PROG_GCC_TRADITIONAL
53 AC_FUNC_MALLOC
54 AC_FUNC_MEMCMP
55 AC_FUNC_REALLOC
56 AC_FUNC_SELECT_ARGTYPES
57 AC_TYPE_SIGNAL
58 AC_FUNC_VPRINTF
59 AC_CHECK_FUNCS([atexit dup2 gethostbyname gethostname gettimeofday inet_ntoa memmove memset putenv select setenv socket strchr strdup strerror strstr uname inet_aton sprintf readv random srandom index bcmp drand48 memmove gethostid revoke fchmod getopt_long_only funopen])
60 AC_REPLACE_FUNCS([open_memstream strndup])
61 AC_CHECK_FUNC([poll],
62         [
63                 AC_MSG_CHECKING([for poll sanity])
64                 if expr "$build_os" : "darwin8\..*" > /dev/null; then
65                         AC_MSG_RESULT([present but broken, emulating with select])
66                         AC_LIBOBJ([poll])
67                         AC_DEFINE([poll], [vde_poll], [Define to vde_poll if the replacement function should be used.])
68                 else
69                         AC_DEFINE([HAVE_POLL], 1, [Define to 1 if your system has a working poll() function.])
70                         AC_MSG_RESULT([yes])
71                 fi
72         ],
73         [])
75 # All other nice checks I have to make for recostructing missing parts of
76 # slirp's config.h file
77 AC_CHECK_SIZEOF(char)
78 AC_CHECK_SIZEOF(short)
79 AC_CHECK_SIZEOF(int)
80 AC_CHECK_SIZEOF(char *)
82 # Define VDE_LINUX or VDE_DARWIN
83 case "$build_os" in
84         linux*)
85                 AC_DEFINE([VDE_LINUX], 1, [If defined, this is a Linux system])
86                 ;;
87         darwin*)
88                 AC_DEFINE([VDE_DARWIN], 1, [If defined, this is a Darwin system])
89                 darwin_gcc=yes
90                 ;;
91         freebsd*)
92                 AC_DEFINE([VDE_FREEBSD], 1, [If defined, this is a FreeBSD system])
93                 ;;
94         *)
95                 AC_MSG_ERROR([Unsupported architecture: $build_os. At the moment, only
96 Linux, Darwin and FreeBSD are supported. Contributions are appreciated! :-)])
97                 ;;
98 esac
100 # Enable profiling options
101 AC_ARG_ENABLE([profile],
102         AS_HELP_STRING([--enable-profile],
103                 [Compile with debugging/profiling options]),
104         [if test $enableval = "yes"; then enable_profile=yes; fi])
106 # Enable experimental features
107 AC_ARG_ENABLE([experimental],
108         AS_HELP_STRING([--enable-experimental],
109                 [Enable experimental features (async notifies, plugin support, packet counter)]),
110         [if test $enableval = "yes"; then enable_experimental=yes; fi])
112 # Disable vde_cryptcab? (depends on ssl, maybe unwanted)
113 AC_ARG_ENABLE([cryptcab],
114         AS_HELP_STRING([--disable-cryptcab],
115                 [Disable libcrypto-dependend vde_cryptcab compilation]),
116         [if test $enableval = "no" ; then add_cryptcab_support=no ; warn_cryptcab=no ; fi])
118 # Check of tuntap device
119 AC_ARG_ENABLE([tuntap],
120     AS_HELP_STRING([--disable-tuntap],
121       [Disable tuntap compilation]), [:],
122         [case "$build_os" in
123                 linux*)
124                         AC_CHECK_HEADER([linux/if_tun.h],
125                                 [AC_DEFINE([HAVE_TUNTAP], 1, [If defined, tuntap support is compiled in])],
126                                 [warn_tuntap=yes])
127                         can_make_libvdetap=yes
128                         ;;
129                 darwin*)
130                         # I don't use AC_CHECK_FILES because I need test -e and not test -r
131                         for i in /dev/tap0 /Library/Extensions/tap.kext /System/Library/Extensions/tap.kext ; do
132                                 AC_MSG_CHECKING([for $i])
133                                 if test -e "$i" ; then
134                                         AC_MSG_RESULT([yes])
135                                         definename="`echo "$i" | tr "a-z*" "A-ZP" | tr -c "0-9A-Z" "_"`"
136                                         AC_DEFINE_UNQUOTED([HAVE_$definename])
137                                         eval HAVE_$definename=yes
138                                 else
139                                         AC_MSG_RESULT([no])
140                                         warn_tuntap=yes
141                                 fi
142                         done
143                         
144                         if test "$HAVE__DEV_TAP0_" ; then
145                                 AC_DEFINE([HAVE_TUNTAP], 1, [If defined, tuntap support is compiled in])
146                                 if ! test "$HAVE__LIBRARY_EXTENSIONS_TAP_KEXT_" -o "$HAVE__SYSTEM_LIBRARY_EXTENSIONS_TAP_KEXT_" ; then
147                                         AC_MSG_WARN([/dev/tap0 exists, but the kext cannot be found. Let's hope your
148 configuration does work...])
149                                 fi
150                         else
151                                 warn_tuntap=yes
152                                 AC_MSG_WARN([You do not have tuntap support. You can get it here:
153 http://www-user.rhrk.uni-kl.de/~nissler/tuntap/])
154                         fi
155                         ;;
156                 freebsd*)
157                         AC_CHECK_HEADER([net/if_tun.h],
158                                 [AC_DEFINE([HAVE_TUNTAP], 1, [If defined, tuntap support is compiled in])],
159                                 [warn_tuntap=yes])
160                         ;;
161         esac])
163 AM_CONDITIONAL(ENABLE_CRYPTCAB, test "$add_cryptcab_support" = yes)
164 AM_CONDITIONAL(ENABLE_PCAP, test "$add_pcap" = yes)
165 AM_CONDITIONAL(CAN_MAKE_LIBVDETAP, test "$can_make_libvdetap" = yes)
166 AM_CONDITIONAL(ENABLE_EXPERIMENTAL, test "$enable_experimental" = yes)
167 AM_CONDITIONAL(ENABLE_PROFILE, test "$enable_profile" = yes)
168 AM_CONDITIONAL(DARWIN_GCC, test "$darwin_gcc" = yes)
170 if test "x${prefix}" = "xNONE"; then
171         AC_DEFINE_UNQUOTED(INSTALLPATH, "${ac_default_prefix}",[PREFIX])
172 else
173         AC_DEFINE_UNQUOTED(INSTALLPATH, "${prefix}",[PREFIX])
176 CFLAGS="-Wall -O2 $CFLAGS"
177 AC_SUBST(CFLAGS)
179 AC_CONFIG_FILES(
180                 [Makefile]
181                 [doc/Makefile]
182                 [include/Makefile]
183                 [man/Makefile]
184                 [src/Makefile]
185                 [src/lib/Makefile]
186                 [src/vde_switch/Makefile]
187                 [src/kvde_switch/Makefile]
188                 [src/vde_over_ns/Makefile]
189                 [src/common/Makefile]
190                 [src/vdetaplib/Makefile]
191                 [src/vde_l3/Makefile]
192                 [src/vde_cryptcab/Makefile]
193                 [src/slirpvde/Makefile]
194                 [src/vde_switch/plugins/Makefile]
195                 )
197 #               [src/kvde_switch/Makefile]
199 AC_OUTPUT
202 echo
203 echo
204 echo "Configure results:"
205 echo
206 if test x$add_cryptcab_support = "xyes" ; then
207         echo " + VDE CryptCab............ enabled"
208 else
209         echo " - VDE CryptCab............ disabled"
212 if test x$warn_tuntap = "xyes" ; then
213         echo " - TAP support............. disabled"
214 else
215         echo " + TAP support............. enabled"
218 if test x$warn_pcap = "xyes" ; then
219         echo " - pcap support............ disabled"
220 else
221         echo " + pcap support............ enabled"
224 if test x$enable_experimental = "xyes" ; then
225         echo " + Experimental features... enabled"
226 else
227         echo " - Experimental features... disabled"
230 if test x$enable_profile = "xyes" ; then
231         echo " + Profiling options....... enabled"
232 else
233         echo " - Profiling options....... disabled"
236 echo
237 echo
238 if ! test x$add_cryptcab_support = "xyes" ; then
239         if test x$warn_cryptcab = "xyes" ; then
240                 AC_MSG_WARN([VDE CryptCab support has been disabled because libcrypto is
241 not installed on your system, or because openssl/blowfish.h could not be
242 found. Please install them if you want CryptCab to be compiled and installed.])
243         fi
246 if test x$warn_pcap = "xyes" ; then
247         AC_MSG_WARN([VDE vde_pcapplug and packet dump plugin have been disabled because
248 libpcap is not installed on your system, or because it's too old.
249 Please install it if you want vde_pcapplug and pdump to be compiled and installed.])
252 echo
253 echo "Type 'make' to compile $PACKAGE $VERSION"
254 echo "and then type 'make install' to install it into $prefix"
255 echo