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