merged EAP-MD5 into trunk
[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.10)
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     [routing-table],
112     AS_HELP_STRING([--with-routing-table=num],[use routing table for IPsec routes (default: 220)]),
113     [AC_DEFINE_UNQUOTED(IPSEC_ROUTING_TABLE, $withval) AC_SUBST(IPSEC_ROUTING_TABLE, "$withval")], 
114     [AC_DEFINE_UNQUOTED(IPSEC_ROUTING_TABLE, 220) AC_SUBST(IPSEC_ROUTING_TABLE, "220")]
115 )
116
117 AC_ARG_WITH(
118     [routing-table-prio],
119     AS_HELP_STRING([--with-routing-table-prio=prio],[priority for IPsec routing table (default: 220)]),
120     [AC_DEFINE_UNQUOTED(IPSEC_ROUTING_TABLE_PRIO, $withval) AC_SUBST(IPSEC_ROUTING_TABLE_PRIO, "$withval")], 
121     [AC_DEFINE_UNQUOTED(IPSEC_ROUTING_TABLE_PRIO, 220) AC_SUBST(IPSEC_ROUTING_TABLE_PRIO, "220")]
122 )
123
124 AC_ARG_WITH(
125     [uid],
126     AS_HELP_STRING([--with-uid=uid],[change user of the daemons to UID after startup (default is 0).]),
127     [AC_DEFINE_UNQUOTED(IPSEC_UID, $withval) AC_SUBST(ipsecuid, "$withval")],
128     [AC_DEFINE_UNQUOTED(IPSEC_UID, 0) AC_SUBST(ipsecuid, "0")]
129 )
130
131 AC_ARG_WITH(
132     [gid],
133     AS_HELP_STRING([--with-gid=gid],[change group of the daemons to GID after startup (default is 0).]),
134     [AC_DEFINE_UNQUOTED(IPSEC_GID, $withval) AC_SUBST(ipsecgid, "$withval")],
135     [AC_DEFINE_UNQUOTED(IPSEC_GID, 0) AC_SUBST(ipsecgid, "0")]
136 )
137
138 AC_ARG_ENABLE(
139     [http],
140     AS_HELP_STRING([--enable-http],[enable OCSP and fetching of Certificates and CRLs over HTTP (default is NO). Requires libcurl.]),
141     [if test x$enableval = xyes; then
142         http=true
143         AC_DEFINE(LIBCURL)
144     fi]
145 )
146 AM_CONDITIONAL(USE_LIBCURL, test x$http = xtrue)
147
148 AC_ARG_ENABLE(
149     [ldap],
150     AS_HELP_STRING([--enable-ldap],[enable fetching of CRLs from LDAP (default is NO). Requires openLDAP.]),
151     [if test x$enableval = xyes; then
152         ldap=true
153         AC_DEFINE(LIBLDAP)
154     fi]
155 )
156 AM_CONDITIONAL(USE_LIBLDAP, test x$ldap = xtrue)
157
158 AC_ARG_ENABLE(
159     [stroke],
160     AS_HELP_STRING([--disable-stroke],[disable charons stroke (pluto compatibility) configuration backend. (default is NO).]),
161     [if test x$enableval = xyes; then
162         stroke=true
163      else
164         stroke=false
165     fi],
166     stroke=true
167 )
168 AM_CONDITIONAL(USE_STROKE, test x$stroke = xtrue)
169
170 AC_ARG_ENABLE(
171     [dbus],
172     AS_HELP_STRING([--enable-dbus],[enable DBUS configuration and control interface (default is NO). Requires libdbus.]),
173     [if test x$enableval = xyes; then
174         dbus=true
175         AC_DEFINE(LIBDBUS)
176     fi]
177 )
178 AM_CONDITIONAL(USE_LIBDBUS, test x$dbus = xtrue)
179
180 AC_ARG_ENABLE(
181     [xml],
182     AS_HELP_STRING([--enable-xml],[enable XML configuration and control interface (default is NO). Requires libxml.]),
183     [if test x$enableval = xyes; then
184         xml=true
185         AC_DEFINE(LIBXML)
186     fi]
187 )
188 AM_CONDITIONAL(USE_LIBXML, test x$xml = xtrue)
189
190 AC_ARG_ENABLE(
191     [sqlite],
192     AS_HELP_STRING([--enable-sqlite],[enable SQLite configuration backend (default is NO). Requires libsqlite3.]),
193     [if test x$enableval = xyes; then
194         sqlite=true
195         AC_DEFINE(LIBSQLITE)
196     fi]
197 )
198 AM_CONDITIONAL(USE_LIBSQLITE, test x$sqlite = xtrue)
199
200 AC_ARG_ENABLE(
201     [smartcard],
202     AS_HELP_STRING([--enable-smartcard],[enable smartcard support (default is NO).]),
203     [if test x$enableval = xyes; then
204         smartcard=true
205         AC_DEFINE(SMARTCARD)
206     fi]
207 )
208 AM_CONDITIONAL(USE_SMARTCARD, test x$smartcard = xtrue)
209
210 AC_ARG_ENABLE(
211     [cisco-quirks],
212     AS_HELP_STRING([--enable-cisco-quirks],[enable support of Cisco VPN client (default is NO).]),
213     [if test x$enableval = xyes; then
214         cisco_quirks=true
215     fi]
216 )
217 AM_CONDITIONAL(USE_CISCO_QUIRKS, test x$cisco_quirks = xtrue)
218
219 AC_ARG_ENABLE(
220     [leak-detective],
221     AS_HELP_STRING([--enable-leak-detective],[enable malloc hooks to find memory leaks (default is NO).]),
222     [if test x$enableval = xyes; then
223         leak_detective=true
224     fi]
225 )
226 AM_CONDITIONAL(USE_LEAK_DETECTIVE, test x$leak_detective = xtrue)
227
228 AC_ARG_ENABLE(
229     [eap-sim],
230     AS_HELP_STRING([--enable-eap-sim],[build SIM authenication module for EAP (default is NO).]),
231     [if test x$enableval = xyes; then
232         eap_sim=true
233     fi]
234 )
235 AM_CONDITIONAL(USE_EAP_SIM, test x$eap_sim = xtrue)
236
237 AC_ARG_ENABLE(
238     [eap-identity],
239     AS_HELP_STRING([--enable-eap-identity],[build EAP module providing EAP-Identity helper (default is NO).]),
240     [if test x$enableval = xyes; then
241         eap_identity=true
242     fi]
243 )
244 AM_CONDITIONAL(USE_EAP_IDENTITY, test x$eap_identity = xtrue)
245
246 AC_ARG_ENABLE(
247     [eap-md5],
248     AS_HELP_STRING([--enable-eap-md5],[build MD5 (CHAP) authenication module for EAP (default is NO).]),
249     [if test x$enableval = xyes; then
250         eap_md5=true
251     fi]
252 )
253 AM_CONDITIONAL(BUILD_EAP_MD5, test x$eap_md5 = xtrue)
254
255 AC_ARG_ENABLE(
256     [nat-transport],
257     AS_HELP_STRING([--enable-nat-transport],[enable NAT traversal with IPsec transport mode (default is NO).]),
258     [if test x$enableval = xyes; then
259         nat_transport=true
260     fi]
261 )
262 AM_CONDITIONAL(USE_NAT_TRANSPORT, test x$nat_transport = xtrue)
263
264 AC_ARG_ENABLE(
265     [vendor-id],
266     AS_HELP_STRING([--disable-vendor-id],[disable the sending of the strongSwan vendor ID (default is NO).]),
267     [if test x$enableval = xyes; then
268         vendor_id=true
269      else
270         vendor_id=false
271     fi],
272     vendor_id=true
273 )
274 AM_CONDITIONAL(USE_VENDORID, test x$vendor_id = xtrue)
275
276 AC_ARG_ENABLE(
277     [xauth-vid],
278     AS_HELP_STRING([--disable-xauth-vid],[disable the sending of the XAUTH vendor ID (default is NO).]),
279     [if test x$enableval = xyes; then
280         xauth_vid=true
281      else
282         xauth_vid=false
283     fi],
284     xauth_vid=true
285 )
286 AM_CONDITIONAL(USE_XAUTH_VID, test x$xauth_vid = xtrue)
287
288 AC_ARG_ENABLE(
289     [uml],
290     AS_HELP_STRING([--enable-uml],[build the UML test framework (default is NO).]),
291     [if test x$enableval = xyes; then
292         uml=true
293     fi]
294 )
295 AM_CONDITIONAL(USE_UML, test x$uml = xtrue)
296
297 AC_ARG_ENABLE(
298     [manager],
299     AS_HELP_STRING([--enable-manager],[build web management console (default is NO).]),
300     [if test x$enableval = xyes; then
301         manager=true
302     fi]
303 )
304 AM_CONDITIONAL(USE_MANAGER, test x$manager = xtrue)
305
306 AC_ARG_ENABLE(
307     [p2p],
308     AS_HELP_STRING([--enable-p2p],[enable peer-to-peer NAT traversal (default is NO).]),
309     [if test x$enableval = xyes; then
310         p2p=true
311         AC_DEFINE(P2P)
312     fi]
313 )
314 AM_CONDITIONAL(USE_P2P, test x$p2p = xtrue)
315
316 AC_ARG_ENABLE(
317     [integrity-test],
318     AS_HELP_STRING([--enable-integrity-test],[enable the integrity test of the crypto library (default is NO).]),
319     [if test x$enableval = xyes; then
320         integrity_test=true 
321         AC_DEFINE(INTEGRITY_TEST)
322      fi]
323 )
324 AM_CONDITIONAL(USE_INTEGRITY_TEST, test x$integrity_test = xtrue)
325
326 AC_ARG_ENABLE(
327     [self-test],
328     AS_HELP_STRING([--disable-self-test],[disable the self-test of the crypto library (default is NO).]),
329     [if test x$enableval = xyes; then
330         self_test=true
331      else
332         self_test=false
333         AC_DEFINE(NO_SELF_TEST)
334      fi],
335         self_test=true
336 )
337 AM_CONDITIONAL(USE_SELF_TEST, test x$self_test = xtrue)
338
339 AC_ARG_ENABLE(
340     [pluto],
341     AS_HELP_STRING([--disable-pluto],[disable the IKEv1 keying daemon pluto. (default is NO).]),
342     [if test x$enableval = xyes; then
343         pluto=true
344      else
345         pluto=false
346     fi],
347     pluto=true
348 )
349 AM_CONDITIONAL(USE_PLUTO, test x$pluto = xtrue)
350
351 AC_ARG_ENABLE(
352     [charon],
353     AS_HELP_STRING([--disable-charon],[disable the IKEv2 keying daemon charon. (default is NO).]),
354     [if test x$enableval = xyes; then
355         charon=true
356      else
357         charon=false
358     fi],
359     charon=true
360 )
361 AM_CONDITIONAL(USE_CHARON, test x$charon = xtrue)
362
363 AC_ARG_ENABLE(
364     [tools],
365     AS_HELP_STRING([--disable-tools],[disable additional utilities (openac and scepclient). (default is NO).]),
366     [if test x$enableval = xyes; then
367         tools=true
368      else
369         tools=false
370     fi],
371     tools=true
372 )
373 AM_CONDITIONAL(USE_TOOLS, test x$tools = xtrue)
374
375 AM_CONDITIONAL(USE_PLUTO_OR_CHARON, test x$pluto = xtrue -o x$charon = xtrue)
376 AM_CONDITIONAL(USE_LIBSTRONGSWAN, test x$charon = xtrue -o x$tools = xtrue)
377 AM_CONDITIONAL(USE_FILE_CONFIG, test x$pluto = xtrue -o x$stroke = xtrue)
378
379 dnl =========================
380 dnl  check required programs
381 dnl =========================
382
383 AC_PROG_INSTALL
384 AC_PROG_LIBTOOL
385 AC_PROG_LEX
386 AC_PROG_YACC
387 AC_PROG_CC()
388 AC_PATH_PROG([GPERF], [gperf], [], [$PATH:/bin:/usr/bin:/usr/local/bin])
389 AC_PATH_PROG([PERL], [perl], [], [$PATH:/bin:/usr/bin:/usr/local/bin])
390
391 dnl ==========================
392 dnl  check required libraries
393 dnl ==========================
394
395 AC_CHECK_FUNCS(backtrace)
396 AC_CHECK_FUNCS(getifaddrs)
397
398 AC_HAVE_LIBRARY([gmp],[LIBS="$LIBS"],[AC_MSG_ERROR([GNU Multi Precision library gmp not found])])       
399 if test "$ldap" = "true"; then
400     AC_HAVE_LIBRARY([ldap],[LIBS="$LIBS"],[AC_MSG_ERROR([LDAP enabled, but library ldap not found])])
401     AC_HAVE_LIBRARY([lber],[LIBS="$LIBS"],[AC_MSG_ERROR([LDAP enabled, but library lber not found])])
402 fi
403 if test "$http" = "true"; then
404     AC_HAVE_LIBRARY([curl],[LIBS="$LIBS"],[AC_MSG_ERROR([HTTP enabled, but library curl not found])])
405 fi
406
407 if test "$xml" = "true"; then
408         PKG_CHECK_MODULES(xml, [libxml-2.0],, AC_MSG_ERROR([No libxml2 package information found]))
409         AC_SUBST(xml_CFLAGS)
410         AC_SUBST(xml_LIBS)
411 fi
412
413 if test "$dbus" = "true"; then
414         PKG_CHECK_MODULES(dbus, [dbus-1],, AC_MSG_ERROR([No libdbus package information found]))
415         AC_SUBST(dbus_CFLAGS)
416         AC_SUBST(dbus_LIBS)
417 fi
418
419
420 dnl =============================
421 dnl  check required header files
422 dnl =============================
423
424
425 AC_MSG_CHECKING([gmp.h version >= 4.1.4])
426 AC_TRY_COMPILE(
427     [#include "gmp.h"],
428     [
429         #if (__GNU_MP_VERSION*100 +  __GNU_MP_VERSION_MINOR*10 + __GNU_MP_VERSION_PATCHLEVEL) < 414
430             #error bad gmp
431         #endif
432     ], 
433     [AC_MSG_RESULT([yes])], [AC_MSG_RESULT([no]); AC_MSG_ERROR([No usable gmp.h found!])]
434 )
435 AC_MSG_CHECKING([capset() definition])
436 AC_TRY_COMPILE(
437     [#include <linux/capset.h>],
438     [
439         void *test = capset;
440     ], 
441     [AC_MSG_RESULT([yes])], [AC_MSG_RESULT([no]); AC_DEFINE_UNQUOTED(NO_CAPSET_DEFINED, 1)]
442 )
443 if test "$ldap" = "true"; then
444     AC_CHECK_HEADER([ldap.h],,[AC_MSG_ERROR([LDAP enabled, but ldap.h not found!])])
445 fi
446 if test "$http" = "true"; then
447     AC_CHECK_HEADER([curl/curl.h],,[AC_MSG_ERROR([HTTP enabled, but curl.h not found!])])
448 fi
449
450 dnl ==============================
451 dnl  build Makefiles
452 dnl ==============================
453
454 AC_OUTPUT(
455         Makefile
456         src/Makefile
457         src/include/Makefile
458         src/libstrongswan/Makefile
459         src/libcrypto/Makefile
460         src/libfreeswan/Makefile
461         src/pluto/Makefile
462         src/whack/Makefile
463         src/charon/Makefile
464         src/stroke/Makefile
465         src/ipsec/Makefile
466         src/starter/Makefile
467         src/_updown/Makefile
468         src/_updown_espmark/Makefile
469         src/_copyright/Makefile
470         src/openac/Makefile
471         src/scepclient/Makefile
472         src/dumm/Makefile
473         src/manager/Makefile
474         testing/Makefile
475 )