added three mobike scenarios
[strongswan.git] / configure.in
index 68d16f8..13f0ae7 100644 (file)
@@ -16,12 +16,10 @@ dnl ===========================
 dnl  initialize & set some vars
 dnl ===========================
 
 dnl  initialize & set some vars
 dnl ===========================
 
-AC_INIT(strongSwan,4.0.1)
-AM_INIT_AUTOMAKE
+AC_INIT(strongSwan,4.1.4)
+AM_INIT_AUTOMAKE(tar-ustar)
 AC_C_BIGENDIAN
 AC_C_BIGENDIAN
-AC_SUBST(ipsecdir, '${libexecdir}/ipsec')
 AC_SUBST(confdir, '${sysconfdir}')
 AC_SUBST(confdir, '${sysconfdir}')
-AC_SUBST(piddir, '/var/run')
 
 dnl =================================
 dnl  check --enable-xxx & --with-xxx
 
 dnl =================================
 dnl  check --enable-xxx & --with-xxx
@@ -30,56 +28,197 @@ dnl =================================
 
 AC_ARG_WITH(
     [default-pkcs11],
 
 AC_ARG_WITH(
     [default-pkcs11],
-    AS_HELP_STRING([--with-default-pkcs11=lib],[set the default PKCS11 library other than /usr/lib/opensc-pkcs11.so]),
+    AS_HELP_STRING([--with-default-pkcs11=lib],[set the default PKCS11 library other than "/usr/lib/opensc-pkcs11.so"]),
     [AC_DEFINE_UNQUOTED(PKCS11_DEFAULT_LIB, "$withval")],
     [AC_DEFINE_UNQUOTED(PKCS11_DEFAULT_LIB, "/usr/lib/opensc-pkcs11.so")]
 )
 
 AC_ARG_WITH(
     [AC_DEFINE_UNQUOTED(PKCS11_DEFAULT_LIB, "$withval")],
     [AC_DEFINE_UNQUOTED(PKCS11_DEFAULT_LIB, "/usr/lib/opensc-pkcs11.so")]
 )
 
 AC_ARG_WITH(
+    [xauth-module],
+    AS_HELP_STRING([--with-xauth-module=lib],[set the path to the XAUTH module]),
+    [AC_DEFINE_UNQUOTED(XAUTH_DEFAULT_LIB, "$withval")],
+)
+
+AC_ARG_WITH(
     [random-device],
     [random-device],
-    AS_HELP_STRING([--with-random-device=dev],[set the device for real random data other than /dev/random]),
+    AS_HELP_STRING([--with-random-device=dev],[set the device for real random data other than "/dev/random"]),
     [AC_DEFINE_UNQUOTED(DEV_RANDOM, "$withval")],
     [AC_DEFINE_UNQUOTED(DEV_RANDOM, "/dev/random")]
 )
     [AC_DEFINE_UNQUOTED(DEV_RANDOM, "$withval")],
     [AC_DEFINE_UNQUOTED(DEV_RANDOM, "/dev/random")]
 )
+AC_ARG_WITH(
+    [resolv-conf],
+    AS_HELP_STRING([--with-resolv-conf=file],[set the file to store DNS server information other than "sysconfdir/resolv.conf"]),
+    [AC_DEFINE_UNQUOTED(RESOLV_CONF, "$withval")],
+    [AC_DEFINE_UNQUOTED(RESOLV_CONF, "${sysconfdir}/resolv.conf")]
+)
 
 AC_ARG_WITH(
     [urandom-device],
 
 AC_ARG_WITH(
     [urandom-device],
-    AS_HELP_STRING([--with-urandom-device=dev],[set the device for pseudo random data other than /dev/urandom]),
+    AS_HELP_STRING([--with-urandom-device=dev],[set the device for pseudo random data other than "/dev/urandom"]),
     [AC_DEFINE_UNQUOTED(DEV_URANDOM, "$withval")],
     [AC_DEFINE_UNQUOTED(DEV_URANDOM, "/dev/urandom")]
 )
 
     [AC_DEFINE_UNQUOTED(DEV_URANDOM, "$withval")],
     [AC_DEFINE_UNQUOTED(DEV_URANDOM, "/dev/urandom")]
 )
 
+AC_ARG_WITH(
+    [ipsecdir],
+    AS_HELP_STRING([--with-ipsecdir=dir],[installation path for ipsec tools other than "libexecdir/ipsec"]),
+    [AC_SUBST(ipsecdir, "$withval")],
+    [AC_SUBST(ipsecdir, "${libexecdir}/ipsec")]
+)
+
+AC_ARG_WITH(
+    [piddir],
+    AS_HELP_STRING([--with-piddir=dir],[path for PID and UNIX socket files other than "/var/run"]),
+    [AC_SUBST(piddir, "$withval")],
+    [AC_SUBST(piddir, "/var/run")]
+)
+
+AC_ARG_WITH(
+    [eapdir],
+    AS_HELP_STRING([--with-eapdir=dir],[path for pluggable EAP modules other than "ipsecdir/plugins/eap"]),
+    [AC_SUBST(eapdir, "$withval")],
+    [AC_SUBST(eapdir, "${ipsecdir}/plugins/eap")]
+)
+
+AC_ARG_WITH(
+    [backenddir],
+    AS_HELP_STRING([--with-backenddir=dir],[path for pluggable configuration backend modules other than "ipsecdir/plugins/backends"]),
+    [AC_SUBST(backenddir, "$withval")],
+    [AC_SUBST(backenddir, "${ipsecdir}/plugins/backends")]
+)
+
+AC_ARG_WITH(
+    [interfacedir],
+    AS_HELP_STRING([--with-interfacedir=dir],[path for pluggable control interface modules other than "ipsecdir/plugins/interfaces"]),
+    [AC_SUBST(interfacedir, "$withval")],
+    [AC_SUBST(interfacedir, "${ipsecdir}/plugins/interfaces")]
+)
+
+AC_ARG_WITH(
+    [sim-reader],
+    AS_HELP_STRING([--with-sim-reader=library.so],[library containing the sim_run_alg() function for EAP-SIM]),
+    [AC_DEFINE_UNQUOTED(SIM_READER_LIB, "$withval")]
+)
+
+AC_ARG_WITH(
+    [linux-headers],
+    AS_HELP_STRING([--with-linux-headers=dir],[use the linux header files in dir instead of the supplied ones in "src/include"]),
+    [AC_SUBST(linuxdir, "$withval")], [AC_SUBST(linuxdir, "../include")]
+)
+AC_SUBST(LINUX_HEADERS)
+
+AC_ARG_WITH(
+    [uid],
+    AS_HELP_STRING([--with-uid=uid],[change user of the daemons to UID after startup (default is 0).]),
+    [AC_DEFINE_UNQUOTED(IPSEC_UID, $withval) AC_SUBST(ipsecuid, "$withval")],
+    [AC_DEFINE_UNQUOTED(IPSEC_UID, 0) AC_SUBST(ipsecuid, "0")]
+)
+
+AC_ARG_WITH(
+    [gid],
+    AS_HELP_STRING([--with-gid=gid],[change group of the daemons to GID after startup (default is 0).]),
+    [AC_DEFINE_UNQUOTED(IPSEC_GID, $withval) AC_SUBST(ipsecgid, "$withval")],
+    [AC_DEFINE_UNQUOTED(IPSEC_GID, 0) AC_SUBST(ipsecgid, "0")]
+)
+
 AC_ARG_ENABLE(
     [http],
     AS_HELP_STRING([--enable-http],[enable OCSP and fetching of Certificates and CRLs over HTTP (default is NO). Requires libcurl.]),
 AC_ARG_ENABLE(
     [http],
     AS_HELP_STRING([--enable-http],[enable OCSP and fetching of Certificates and CRLs over HTTP (default is NO). Requires libcurl.]),
-    http=true
-    AC_DEFINE(LIBCURL)
+    [if test x$enableval = xyes; then
+        http=true
+        AC_DEFINE(LIBCURL)
+    fi]
 )
 AM_CONDITIONAL(USE_LIBCURL, test x$http = xtrue)
 
 AC_ARG_ENABLE(
     [ldap],
     AS_HELP_STRING([--enable-ldap],[enable fetching of CRLs from LDAP (default is NO). Requires openLDAP.]),
 )
 AM_CONDITIONAL(USE_LIBCURL, test x$http = xtrue)
 
 AC_ARG_ENABLE(
     [ldap],
     AS_HELP_STRING([--enable-ldap],[enable fetching of CRLs from LDAP (default is NO). Requires openLDAP.]),
-    ldap=true
-    AC_DEFINE(LDAP_VER, 3)
+    [if test x$enableval = xyes; then
+        ldap=true
+        AC_DEFINE(LIBLDAP)
+    fi]
+)
+AM_CONDITIONAL(USE_LIBLDAP, test x$ldap = xtrue)
+
+AC_ARG_ENABLE(
+    [dbus],
+    AS_HELP_STRING([--enable-dbus],[enable DBUS configuration and control interface (default is NO). Requires libdbus.]),
+    [if test x$enableval = xyes; then
+        dbus=true
+        AC_DEFINE(LIBDBUS)
+    fi]
 )
 )
-AM_CONDITIONAL(USE_LDAP, test x$ldap = xtrue)
+AM_CONDITIONAL(USE_LIBDBUS, test x$dbus = xtrue)
+
+AC_ARG_ENABLE(
+    [xml],
+    AS_HELP_STRING([--enable-xml],[enable XML configuration and control interface (default is NO). Requires libxml.]),
+    [if test x$enableval = xyes; then
+        xml=true
+        AC_DEFINE(LIBXML)
+    fi]
+)
+AM_CONDITIONAL(USE_LIBXML, test x$xml = xtrue)
 
 AC_ARG_ENABLE(
     [smartcard],
     AS_HELP_STRING([--enable-smartcard],[enable smartcard support (default is NO).]),
 
 AC_ARG_ENABLE(
     [smartcard],
     AS_HELP_STRING([--enable-smartcard],[enable smartcard support (default is NO).]),
-    smartcard=true
-    AC_DEFINE(SMARTCARD)
+    [if test x$enableval = xyes; then
+        smartcard=true
+        AC_DEFINE(SMARTCARD)
+    fi]
 )
 AM_CONDITIONAL(USE_SMARTCARD, test x$smartcard = xtrue)
 
 AC_ARG_ENABLE(
 )
 AM_CONDITIONAL(USE_SMARTCARD, test x$smartcard = xtrue)
 
 AC_ARG_ENABLE(
+    [cisco-quirks],
+    AS_HELP_STRING([--enable-cisco-quirks],[enable support of Cisco VPN client (default is NO).]),
+    [if test x$enableval = xyes; then
+        cisco_quirks=true
+    fi]
+)
+AM_CONDITIONAL(USE_CISCO_QUIRKS, test x$cisco_quirks = xtrue)
+
+AC_ARG_ENABLE(
     [leak-detective],
     AS_HELP_STRING([--enable-leak-detective],[enable malloc hooks to find memory leaks (default is NO).]),
     [leak-detective],
     AS_HELP_STRING([--enable-leak-detective],[enable malloc hooks to find memory leaks (default is NO).]),
-    leak_detective=true
+    [if test x$enableval = xyes; then
+        leak_detective=true
+    fi]
 )
 AM_CONDITIONAL(USE_LEAK_DETECTIVE, test x$leak_detective = xtrue)
 
 )
 AM_CONDITIONAL(USE_LEAK_DETECTIVE, test x$leak_detective = xtrue)
 
+AC_ARG_ENABLE(
+    [eap-sim],
+    AS_HELP_STRING([--enable-eap-sim],[build SIM authenication module for EAP (default is NO).]),
+    [if test x$enableval = xyes; then
+        eap_sim=true
+    fi]
+)
+AM_CONDITIONAL(BUILD_EAP_SIM, test x$eap_sim = xtrue)
+
+AC_ARG_ENABLE(
+    [nat-transport],
+    AS_HELP_STRING([--enable-nat-transport],[enable NAT traversal with IPsec transport mode (default is NO).]),
+    [if test x$enableval = xyes; then
+        nat_transport=true
+    fi]
+)
+AM_CONDITIONAL(USE_NAT_TRANSPORT, test x$nat_transport = xtrue)
+
+AC_ARG_ENABLE(
+    [vendor-id],
+    AS_HELP_STRING([--disable-vendor-id],[disable the sending of the strongSwan vendor ID (default is NO).]),
+    [if test x$enableval = xyes; then
+        vendor_id=true
+     else
+        vendor_id=false
+    fi],
+    vendor_id=true
+)
+AM_CONDITIONAL(USE_VENDORID, test x$vendor_id = xtrue)
+
 dnl =========================
 dnl  check required programs
 dnl =========================
 dnl =========================
 dnl  check required programs
 dnl =========================
@@ -88,7 +227,7 @@ AC_PROG_INSTALL
 AC_PROG_LIBTOOL
 AC_PROG_LEX
 AC_PROG_YACC
 AC_PROG_LIBTOOL
 AC_PROG_LEX
 AC_PROG_YACC
-AC_PROG_CC(intel)
+AC_PROG_CC()
 AC_PATH_PROG([GPERF], [gperf], [], [$PATH:/bin:/usr/bin:/usr/local/bin])
 AC_PATH_PROG([PERL], [perl], [], [$PATH:/bin:/usr/bin:/usr/local/bin])
 
 AC_PATH_PROG([GPERF], [gperf], [], [$PATH:/bin:/usr/bin:/usr/local/bin])
 AC_PATH_PROG([PERL], [perl], [], [$PATH:/bin:/usr/bin:/usr/local/bin])
 
@@ -96,15 +235,29 @@ dnl ==========================
 dnl  check required libraries
 dnl ==========================
 
 dnl  check required libraries
 dnl ==========================
 
-AC_HAVE_LIBRARY([gmp],,[AC_MSG_ERROR([GNU Multi Precision library gmp not found])])    
+AC_CHECK_FUNCS(backtrace)
+AC_CHECK_FUNCS(getifaddrs)
+
+AC_HAVE_LIBRARY([gmp],[LIBS="$LIBS"],[AC_MSG_ERROR([GNU Multi Precision library gmp not found])])      
 if test "$ldap" = "true"; then
 if test "$ldap" = "true"; then
-    AC_HAVE_LIBRARY([ldap],,[AC_MSG_ERROR([LDAP enabled, but library ldap not found])])
-    AC_HAVE_LIBRARY([lber],,[AC_MSG_ERROR([LDAP enabled, but library lber not found])])
+    AC_HAVE_LIBRARY([ldap],[LIBS="$LIBS"],[AC_MSG_ERROR([LDAP enabled, but library ldap not found])])
+    AC_HAVE_LIBRARY([lber],[LIBS="$LIBS"],[AC_MSG_ERROR([LDAP enabled, but library lber not found])])
 fi
 if test "$http" = "true"; then
 fi
 if test "$http" = "true"; then
-    AC_HAVE_LIBRARY([curl],,[AC_MSG_ERROR([HTTP enabled, but library curl not found])])
+    AC_HAVE_LIBRARY([curl],[LIBS="$LIBS"],[AC_MSG_ERROR([HTTP enabled, but library curl not found])])
 fi
 
 fi
 
+if test "$dbus" = "true"; then
+       PKG_CHECK_MODULES(dbus, dbus-1,, AC_MSG_ERROR([No libdbus package information found]))
+       AC_SUBST(dbus_CFLAGS)
+       AC_SUBST(dbus_LIBS)
+fi
+
+if test "$xml" = "true"; then
+       PKG_CHECK_MODULES(xml, libxml-2.0,, AC_MSG_ERROR([No libxml2 package information found]))
+       AC_SUBST(xml_CFLAGS)
+       AC_SUBST(xml_LIBS)
+fi
 
 dnl =============================
 dnl  check required header files
 
 dnl =============================
 dnl  check required header files
@@ -121,6 +274,14 @@ AC_TRY_COMPILE(
     ], 
     [AC_MSG_RESULT([yes])], [AC_MSG_RESULT([no]); AC_MSG_ERROR([No usable gmp.h found!])]
 )
     ], 
     [AC_MSG_RESULT([yes])], [AC_MSG_RESULT([no]); AC_MSG_ERROR([No usable gmp.h found!])]
 )
+AC_MSG_CHECKING([capset() definition])
+AC_TRY_COMPILE(
+    [#include <linux/capset.h>],
+    [
+       void *test = capset;
+    ], 
+    [AC_MSG_RESULT([yes])], [AC_MSG_RESULT([no]); AC_DEFINE_UNQUOTED(NO_CAPSET_DEFINED, 1)]
+)
 if test "$ldap" = "true"; then
     AC_CHECK_HEADER([ldap.h],,[AC_MSG_ERROR([LDAP enabled, but ldap.h not found!])])
 fi
 if test "$ldap" = "true"; then
     AC_CHECK_HEADER([ldap.h],,[AC_MSG_ERROR([LDAP enabled, but ldap.h not found!])])
 fi
@@ -135,6 +296,7 @@ dnl ==============================
 AC_OUTPUT(
        Makefile
        src/Makefile
 AC_OUTPUT(
        Makefile
        src/Makefile
+       src/include/Makefile
        src/libstrongswan/Makefile
        src/libcrypto/Makefile
        src/libfreeswan/Makefile
        src/libstrongswan/Makefile
        src/libcrypto/Makefile
        src/libfreeswan/Makefile