build UML stuff only on --enable-uml
[strongswan.git] / configure.in
1 dnl  configure.in for linux strongSwan
2 dnl  Copyright (C) 2006 Martin Willi
3 dnl  Hochschule fuer Technik Rapperswil
4 dnl 
5 dnl  This program is free software; you can redistribute it and/or modify it
6 dnl  under the terms of the GNU General Public License as published by the
7 dnl  Free Software Foundation; either version 2 of the License, or (at your
8 dnl  option) any later version.  See <http://www.fsf.org/copyleft/gpl.txt>.
9 dnl 
10 dnl  This program is distributed in the hope that it will be useful, but
11 dnl  WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
12 dnl  or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
13 dnl  for more details.
14
15 dnl ===========================
16 dnl  initialize & set some vars
17 dnl ===========================
18
19 AC_INIT(strongSwan,4.1.6)
20 AM_INIT_AUTOMAKE(tar-ustar)
21 AC_C_BIGENDIAN
22 AC_SUBST(confdir, '${sysconfdir}')
23
24 dnl =================================
25 dnl  check --enable-xxx & --with-xxx
26 dnl =================================
27
28
29 AC_ARG_WITH(
30     [default-pkcs11],
31     AS_HELP_STRING([--with-default-pkcs11=lib],[set the default PKCS11 library other than "/usr/lib/opensc-pkcs11.so"]),
32     [AC_DEFINE_UNQUOTED(PKCS11_DEFAULT_LIB, "$withval")],
33     [AC_DEFINE_UNQUOTED(PKCS11_DEFAULT_LIB, "/usr/lib/opensc-pkcs11.so")]
34 )
35
36 AC_ARG_WITH(
37     [xauth-module],
38     AS_HELP_STRING([--with-xauth-module=lib],[set the path to the XAUTH module]),
39     [AC_DEFINE_UNQUOTED(XAUTH_DEFAULT_LIB, "$withval")],
40 )
41
42 AC_ARG_WITH(
43     [random-device],
44     AS_HELP_STRING([--with-random-device=dev],[set the device for real random data other than "/dev/random"]),
45     [AC_DEFINE_UNQUOTED(DEV_RANDOM, "$withval")],
46     [AC_DEFINE_UNQUOTED(DEV_RANDOM, "/dev/random")]
47 )
48 AC_ARG_WITH(
49     [resolv-conf],
50     AS_HELP_STRING([--with-resolv-conf=file],[set the file to store DNS server information other than "sysconfdir/resolv.conf"]),
51     [AC_DEFINE_UNQUOTED(RESOLV_CONF, "$withval")],
52     [AC_DEFINE_UNQUOTED(RESOLV_CONF, "${sysconfdir}/resolv.conf")]
53 )
54
55 AC_ARG_WITH(
56     [urandom-device],
57     AS_HELP_STRING([--with-urandom-device=dev],[set the device for pseudo random data other than "/dev/urandom"]),
58     [AC_DEFINE_UNQUOTED(DEV_URANDOM, "$withval")],
59     [AC_DEFINE_UNQUOTED(DEV_URANDOM, "/dev/urandom")]
60 )
61
62 AC_ARG_WITH(
63     [ipsecdir],
64     AS_HELP_STRING([--with-ipsecdir=dir],[installation path for ipsec tools other than "libexecdir/ipsec"]),
65     [AC_SUBST(ipsecdir, "$withval")],
66     [AC_SUBST(ipsecdir, "${libexecdir}/ipsec")]
67 )
68
69 AC_ARG_WITH(
70     [piddir],
71     AS_HELP_STRING([--with-piddir=dir],[path for PID and UNIX socket files other than "/var/run"]),
72     [AC_SUBST(piddir, "$withval")],
73     [AC_SUBST(piddir, "/var/run")]
74 )
75
76 AC_ARG_WITH(
77     [eapdir],
78     AS_HELP_STRING([--with-eapdir=dir],[path for pluggable EAP modules other than "ipsecdir/plugins/eap"]),
79     [AC_SUBST(eapdir, "$withval")],
80     [AC_SUBST(eapdir, "${ipsecdir}/plugins/eap")]
81 )
82
83 AC_ARG_WITH(
84     [backenddir],
85     AS_HELP_STRING([--with-backenddir=dir],[path for pluggable configuration backend modules other than "ipsecdir/plugins/backends"]),
86     [AC_SUBST(backenddir, "$withval")],
87     [AC_SUBST(backenddir, "${ipsecdir}/plugins/backends")]
88 )
89
90 AC_ARG_WITH(
91     [interfacedir],
92     AS_HELP_STRING([--with-interfacedir=dir],[path for pluggable control interface modules other than "ipsecdir/plugins/interfaces"]),
93     [AC_SUBST(interfacedir, "$withval")],
94     [AC_SUBST(interfacedir, "${ipsecdir}/plugins/interfaces")]
95 )
96
97 AC_ARG_WITH(
98     [sim-reader],
99     AS_HELP_STRING([--with-sim-reader=library.so],[library containing the sim_run_alg() function for EAP-SIM]),
100     [AC_DEFINE_UNQUOTED(SIM_READER_LIB, "$withval")]
101 )
102
103 AC_ARG_WITH(
104     [linux-headers],
105     AS_HELP_STRING([--with-linux-headers=dir],[use the linux header files in dir instead of the supplied ones in "src/include"]),
106     [AC_SUBST(linuxdir, "$withval")], [AC_SUBST(linuxdir, "../include")]
107 )
108 AC_SUBST(LINUX_HEADERS)
109
110 AC_ARG_WITH(
111     [uid],
112     AS_HELP_STRING([--with-uid=uid],[change user of the daemons to UID after startup (default is 0).]),
113     [AC_DEFINE_UNQUOTED(IPSEC_UID, $withval) AC_SUBST(ipsecuid, "$withval")],
114     [AC_DEFINE_UNQUOTED(IPSEC_UID, 0) AC_SUBST(ipsecuid, "0")]
115 )
116
117 AC_ARG_WITH(
118     [gid],
119     AS_HELP_STRING([--with-gid=gid],[change group of the daemons to GID after startup (default is 0).]),
120     [AC_DEFINE_UNQUOTED(IPSEC_GID, $withval) AC_SUBST(ipsecgid, "$withval")],
121     [AC_DEFINE_UNQUOTED(IPSEC_GID, 0) AC_SUBST(ipsecgid, "0")]
122 )
123
124 AC_ARG_ENABLE(
125     [http],
126     AS_HELP_STRING([--enable-http],[enable OCSP and fetching of Certificates and CRLs over HTTP (default is NO). Requires libcurl.]),
127     [if test x$enableval = xyes; then
128         http=true
129         AC_DEFINE(LIBCURL)
130     fi]
131 )
132 AM_CONDITIONAL(USE_LIBCURL, test x$http = xtrue)
133
134 AC_ARG_ENABLE(
135     [ldap],
136     AS_HELP_STRING([--enable-ldap],[enable fetching of CRLs from LDAP (default is NO). Requires openLDAP.]),
137     [if test x$enableval = xyes; then
138         ldap=true
139         AC_DEFINE(LIBLDAP)
140     fi]
141 )
142 AM_CONDITIONAL(USE_LIBLDAP, test x$ldap = xtrue)
143
144 AC_ARG_ENABLE(
145     [dbus],
146     AS_HELP_STRING([--enable-dbus],[enable DBUS configuration and control interface (default is NO). Requires libdbus.]),
147     [if test x$enableval = xyes; then
148         dbus=true
149         AC_DEFINE(LIBDBUS)
150     fi]
151 )
152 AM_CONDITIONAL(USE_LIBDBUS, test x$dbus = xtrue)
153
154 AC_ARG_ENABLE(
155     [xml],
156     AS_HELP_STRING([--enable-xml],[enable XML configuration and control interface (default is NO). Requires libxml.]),
157     [if test x$enableval = xyes; then
158         xml=true
159         AC_DEFINE(LIBXML)
160     fi]
161 )
162 AM_CONDITIONAL(USE_LIBXML, test x$xml = xtrue)
163
164 AC_ARG_ENABLE(
165     [smartcard],
166     AS_HELP_STRING([--enable-smartcard],[enable smartcard support (default is NO).]),
167     [if test x$enableval = xyes; then
168         smartcard=true
169         AC_DEFINE(SMARTCARD)
170     fi]
171 )
172 AM_CONDITIONAL(USE_SMARTCARD, test x$smartcard = xtrue)
173
174 AC_ARG_ENABLE(
175     [cisco-quirks],
176     AS_HELP_STRING([--enable-cisco-quirks],[enable support of Cisco VPN client (default is NO).]),
177     [if test x$enableval = xyes; then
178         cisco_quirks=true
179     fi]
180 )
181 AM_CONDITIONAL(USE_CISCO_QUIRKS, test x$cisco_quirks = xtrue)
182
183 AC_ARG_ENABLE(
184     [leak-detective],
185     AS_HELP_STRING([--enable-leak-detective],[enable malloc hooks to find memory leaks (default is NO).]),
186     [if test x$enableval = xyes; then
187         leak_detective=true
188     fi]
189 )
190 AM_CONDITIONAL(USE_LEAK_DETECTIVE, test x$leak_detective = xtrue)
191
192 AC_ARG_ENABLE(
193     [eap-sim],
194     AS_HELP_STRING([--enable-eap-sim],[build SIM authenication module for EAP (default is NO).]),
195     [if test x$enableval = xyes; then
196         eap_sim=true
197     fi]
198 )
199 AM_CONDITIONAL(BUILD_EAP_SIM, test x$eap_sim = xtrue)
200
201 AC_ARG_ENABLE(
202     [nat-transport],
203     AS_HELP_STRING([--enable-nat-transport],[enable NAT traversal with IPsec transport mode (default is NO).]),
204     [if test x$enableval = xyes; then
205         nat_transport=true
206     fi]
207 )
208 AM_CONDITIONAL(USE_NAT_TRANSPORT, test x$nat_transport = xtrue)
209
210 AC_ARG_ENABLE(
211     [vendor-id],
212     AS_HELP_STRING([--disable-vendor-id],[disable the sending of the strongSwan vendor ID (default is NO).]),
213     [if test x$enableval = xyes; then
214         vendor_id=true
215      else
216         vendor_id=false
217     fi],
218     vendor_id=true
219 )
220 AM_CONDITIONAL(USE_VENDORID, test x$vendor_id = xtrue)
221
222 AC_ARG_ENABLE(
223     [uml],
224     AS_HELP_STRING([--enable-uml],[build the UML test framework (default is NO).]),
225     [if test x$enableval = xyes; then
226         uml=true
227      else
228         uml=false
229     fi],
230     uml=true
231 )
232 AM_CONDITIONAL(USE_UML, test x$uml = xtrue)
233
234 dnl =========================
235 dnl  check required programs
236 dnl =========================
237
238 AC_PROG_INSTALL
239 AC_PROG_LIBTOOL
240 AC_PROG_LEX
241 AC_PROG_YACC
242 AC_PROG_CC()
243 AC_PATH_PROG([GPERF], [gperf], [], [$PATH:/bin:/usr/bin:/usr/local/bin])
244 AC_PATH_PROG([PERL], [perl], [], [$PATH:/bin:/usr/bin:/usr/local/bin])
245
246 dnl ==========================
247 dnl  check required libraries
248 dnl ==========================
249
250 AC_CHECK_FUNCS(backtrace)
251 AC_CHECK_FUNCS(getifaddrs)
252
253 AC_HAVE_LIBRARY([gmp],[LIBS="$LIBS"],[AC_MSG_ERROR([GNU Multi Precision library gmp not found])])       
254 if test "$ldap" = "true"; then
255     AC_HAVE_LIBRARY([ldap],[LIBS="$LIBS"],[AC_MSG_ERROR([LDAP enabled, but library ldap not found])])
256     AC_HAVE_LIBRARY([lber],[LIBS="$LIBS"],[AC_MSG_ERROR([LDAP enabled, but library lber not found])])
257 fi
258 if test "$http" = "true"; then
259     AC_HAVE_LIBRARY([curl],[LIBS="$LIBS"],[AC_MSG_ERROR([HTTP enabled, but library curl not found])])
260 fi
261
262 if test "$xml" = "true"; then
263         PKG_CHECK_MODULES(xml, libxml-2.0,, AC_MSG_ERROR([No libxml2 package information found]))
264         AC_SUBST(xml_CFLAGS)
265         AC_SUBST(xml_LIBS)
266 fi
267
268 if test "$dbus" = "true"; then
269         PKG_CHECK_MODULES(dbus, dbus-1,, AC_MSG_ERROR([No libdbus package information found]))
270         AC_SUBST(dbus_CFLAGS)
271         AC_SUBST(dbus_LIBS)
272 fi
273
274
275 dnl =============================
276 dnl  check required header files
277 dnl =============================
278
279
280 AC_MSG_CHECKING([gmp.h version >= 4.1.4])
281 AC_TRY_COMPILE(
282     [#include "gmp.h"],
283     [
284         #if (__GNU_MP_VERSION*100 +  __GNU_MP_VERSION_MINOR*10 + __GNU_MP_VERSION_PATCHLEVEL) < 414
285             #error bad gmp
286         #endif
287     ], 
288     [AC_MSG_RESULT([yes])], [AC_MSG_RESULT([no]); AC_MSG_ERROR([No usable gmp.h found!])]
289 )
290 AC_MSG_CHECKING([capset() definition])
291 AC_TRY_COMPILE(
292     [#include <linux/capset.h>],
293     [
294         void *test = capset;
295     ], 
296     [AC_MSG_RESULT([yes])], [AC_MSG_RESULT([no]); AC_DEFINE_UNQUOTED(NO_CAPSET_DEFINED, 1)]
297 )
298 if test "$ldap" = "true"; then
299     AC_CHECK_HEADER([ldap.h],,[AC_MSG_ERROR([LDAP enabled, but ldap.h not found!])])
300 fi
301 if test "$http" = "true"; then
302     AC_CHECK_HEADER([curl/curl.h],,[AC_MSG_ERROR([HTTP enabled, but curl.h not found!])])
303 fi
304
305 dnl ==============================
306 dnl  build Makefiles
307 dnl ==============================
308
309 AC_OUTPUT(
310         Makefile
311         src/Makefile
312         src/include/Makefile
313         src/libstrongswan/Makefile
314         src/libcrypto/Makefile
315         src/libfreeswan/Makefile
316         src/pluto/Makefile
317         src/whack/Makefile
318         src/charon/Makefile
319         src/stroke/Makefile
320         src/ipsec/Makefile
321         src/starter/Makefile
322         src/_updown/Makefile
323         src/_updown_espmark/Makefile
324         src/_copyright/Makefile
325         src/openac/Makefile
326         src/scepclient/Makefile
327         src/dumm/Makefile
328 )