]> Pileus Git - ~andy/fetchmail/blobdiff - configure.in
Version bump.
[~andy/fetchmail] / configure.in
index 4ed631e0c855bbc183669438bcabbe19ad40cd17..20e458d16e49c25676acb2e83db6fb02baced8c4 100644 (file)
@@ -5,7 +5,7 @@ dnl Process this file with autoconf to produce a configure script.
 dnl
 
 AC_INIT(fetchmail.h)           dnl A distinctive file to look for in srcdir. 
-AC_CONFIG_HEADER(config.h)
+AM_CONFIG_HEADER(config.h)
 
 dnl We want these before the checks, so the checks can modify their values.
 test -z "$CFLAGS" && CFLAGS="-O" AC_SUBST(CFLAGS)
@@ -15,11 +15,6 @@ PACKAGE=`sed -n '/PACKAGE *= *\(.*\)/s//\1/p' <$srcdir/Makefile.in`
 VERSION=`sed -n '/VERSION *= *\(.*\)/s//\1/p' <$srcdir/Makefile.in`
 AM_INIT_AUTOMAKE("$PACKAGE", "$VERSION")
 
-dnl Map autoconf, autoheader and aclocal to missing.sh if they are
-dnl not available in the system, so as not to cause problems in
-dnl Makefile.in.  Be sure to fix this hack if we start supporting
-dnl automake (Makefile.am).
-
 AC_CANONICAL_HOST
 AC_PROG_CC
 AC_PROG_INSTALL
@@ -226,7 +221,7 @@ AC_DEFINE_UNQUOTED(PID_DIR, "$dir")
 # a sendmail alias) do the right thing in this circumstance.
 #
 AC_PATH_PROG(procmail, procmail, "", $PATH:/usr/sbin)
-AC_PATH_PROG(sendmail, sendmail, "", $PATH:/usr/sbin)
+AC_PATH_PROG(sendmail, sendmail, "", $PATH:/usr/sbin:/usr/lib)
 
 ###    use option --disable-fallback to disable fallback MDA
 ###    use option --enable-fallback=procmail or 
@@ -371,128 +366,149 @@ AC_ARG_ENABLE(netsec,
        [with_netsec=no])
 test "$with_netsec" = "yes" && AC_DEFINE(NET_SECURITY)
 
-###    use option --with-kerberos5=DIR to point at a Kerberos 5 directory
+# This version of the Kerberos 4 and 5 options addresses the follwing issues:
+# 
+# * Build correctly under Heimdal kerberos if it is compiled with db2 and
+#   OpenSSL support (Debian's is)
+# * Build the kerberos.c stuff (KPOP) only for kerberosIV, to avoid breakage.
+#   I don't know if this is 100% correct, but now at least IMAP and POP3
+#   behave the same way regarding kerberosV.
+# * Build without any fuss for both kerberosIV and V at the same time.
+# * Move all the kerberos header mess to kerberos.h, and #include that
+#   in driver.c and kerberos.c.
+# 
+# Tested using the Heimdal Kerberos V libs, Kungliga Tekniska Högskolan (the
+# Royal Institute of Technology in Stockholm, Sweden)'s kerberos IV libs, and
+# the MIT reference implementation of KerberosV (all as packaged in Debian).
+
+###    use option --with-kerberos5=DIR to point at a Kerberos 5 directory
+### make sure --with-ssl is run before --with-kerberos* !
 AC_ARG_WITH(kerberos5,
-       [  --with-kerberos5=DIR    point fetchmail compilation at a Kerberos 5 directory],
-       with_kerberos5=$withval)
-
-# The "then" arm (nonempty $with_kerberos5) is kind of a crock.  It works for
-# configuring the BSD/OS Kerberos V support, though. 
-if test -n "$with_kerberos5" -a "$with_kerberos5" != "no"
+       [  --with-kerberos5=DIR    point fetchmail compilation at a Kerberos 5
+directory],
+[
+if test "$with_kerberos5" != "no"
 then
-    # Path given
-    echo "Configuring kerberosV for `uname`"
-    AC_DEFINE(KERBEROS_V5)
-    CEFLAGS="$CEFLAGS -I$with_kerberos5/include"
-    LDEFLAGS="$LDEFLAGS -L$with_kerberos5/lib"
-    AC_CHECK_LIB(crypto,
-                krb5_des_string_to_key,
-                libk5crypto=-lcrypto,
-                AC_CHECK_LIB(k5crypto,
-                             krb5_des_string_to_key,
-                             libk5crypto=-lk5crypto,
-                             AC_ERROR(Kerberos 5 libraries not found),
-                             ${LDEFLAGS} -lcom_err),
-                ${LDEFLAGS} -lcom_err)
-    if test -f "$with_kerberos5/include/roken.h"
-    then
-       AC_DEFINE(HEIMDAL)
-       LIBS="$LIBS -lkrb5 -lasn1 -ldes -lroken -lcom_err"
-    else
-       LIBS="$LIBS -lkrb5 ${libk5crypto} -lcom_err"
-    fi
-elif test "$with_kerberos" != "no" -a "$with_kerberos5" != "no" ; then
-    for dir in /usr/kerberos /usr/local/krb5 /usr/athena
-    do
-      if test -f "$dir/include/krb5.h"
-      then
-       AC_DEFINE(KERBEROS_V5)
-        CEFLAGS="$CEFLAGS -I$dir/include"
-        LDEFLAGS="$LDEFLAGS -L$dir/lib"
-       if test -f "$dir/include/roken.h"
-       then
+  if test "$with_kerberos5" != "yes" 
+  then
+      LDEFLAGS="$LDEFLAGS -L${with_kerberos5}/lib"
+      searchdirs="$with_kerberos5"
+  else
+      searchdirs="/usr/kerberos /usr/local/krb5 /usr/athena /usr"
+  fi
+  with_kerberos5=
+  for dir in $searchdirs
+  do AC_MSG_CHECKING([for Kerberos V in $dir])
+     if test -f "$dir/include/krb5.h"
+     then
+        ac_krblibs=
+        if test -f "$dir/include/roken.h"
+        then
+           ac_krblibs="-lasn1 -lroken -lcom_err"
+           AC_MSG_RESULT([Heimdal found])
+          dnl Attempt to detect if we need to -ldb2 to link Heimdal
+          dnl we assume we do if it is available
+           AC_CHECK_LIB(db2, db_open, ac_krblibs="$ac_krblibs -ldb2", [],
+                ${LDEFLAGS})
+           AC_CHECK_LIB(des, des_string_to_key, libk5crypto=-ldes,
+              AC_CHECK_LIB(ssl, MD5_Init, [],
+                AC_ERROR([DES libraries not found. Try adding --with-ssl to enable OpenSSL support]),
+                ${LDEFLAGS} ${ac_krblibs}),
+           ${LDEFLAGS} ${ac_krblibs})
            AC_DEFINE(HEIMDAL)
-           LIBS="$LIBS -lkrb5 -lasn1 -ldes -lcom_err"
         else
-          AC_CHECK_LIB(crypto,
-                       krb5_des_string_to_key,
-                       libk5crypto=-lcrypto,
-                       AC_CHECK_LIB(k5crypto,
-                                    krb5_des_string_to_key,
-                                    libk5crypto=-lk5crypto,
-                                    AC_ERROR(Kerberos 5 libraries not found),
-                                    ${LDEFLAGS} -lcom_err),
-                       ${LDEFLAGS} -lcom_err)
-           LIBS="$LIBS -lkrb5 ${libk5crypto} -lcom_err"
+          AC_MSG_RESULT([found])
+          ac_krblibs="-lcom_err"
+           AC_CHECK_LIB(crypto,
+             krb5_des_string_to_key,
+             libk5crypto=-lcrypto,
+                AC_CHECK_LIB(k5crypto,
+                   krb5_des_string_to_key,
+                   libk5crypto=-lk5crypto,
+                      AC_ERROR([Kerberos 5 DES libraries not found]),
+                   ${LDEFLAGS} ${ac_krblibs}),
+                 ${LDEFLAGS} ${ac_krblibs})
         fi
+        AC_CHECK_LIB(krb5, krb5_init_context,[],
+           continue,
+           ${LDEFLAGS} ${ac_krblibs})
+        AC_DEFINE(KERBEROS_V5)
+        test "$dir" != "/usr" && CEFLAGS="$CEFLAGS -I$dir/include"
+        LDEFLAGS="$LDEFLAGS -L$dir/lib"
+       LIBS="$LIBS $ac_krblibs $libk5crypto"
         with_kerberos5=$dir
         break
-      fi
-    done
+     else
+        AC_MSG_RESULT([not found])
+     fi
+  done
+  if test -z "$with_kerberos5" ; then
+     AC_ERROR([Kerberos 5 libraries not found])
+  fi
 fi
+]) dnl --with-kerberos5=DIR
 
-###    use option --with-kerberos=DIR to point at a Kerberos 4 directory
+###    use option --with-kerberos=DIR to point at a Kerberos 4 directory
 AC_ARG_WITH(kerberos,
-       [  --with-kerberos=DIR     point fetchmail compilation at a Kerberos 4 directory])
-
-# The "elif" arm (nonempty $with_kerberos) is kind of a crock.  It works for
-# configuring the BSD/OS Kerberos IV support, though. 
-
+       [  --with-kerberos=DIR     point fetchmail compilation at a Kerberos 4
+directory],
+[
+if test "$with_kerberos" != "no"
+then
 # Check for a NetBSD/OpenBSD special case
-if test "$with_kerberos" = "yes" && test `uname` = "NetBSD" -o `uname` = "OpenBSD"
+if test "$with_kerberos" = "yes" && ( test `uname` = "NetBSD" || test `uname` = "OpenBSD" )
 then
-  # Path given
-  echo "Configuring kerberosIV for `uname`"
+  AC_CHECKING([kerberosIV for `uname`])
   AC_DEFINE(KERBEROS_V4)
   CEFLAGS="$CEFLAGS -I/usr/include/kerberosIV"
   LIBS="$LIBS -lkrb -ldes"
-elif test -n "$with_kerberos" -a -n "$with_kerberos5" -a "$with_kerberos" != "no" -a "$with_kerberos5" != "no"
-then
-  AC_DEFINE(KERBEROS_V4)
-  CEFLAGS="$CEFLAGS -I$with_kerberos/include"
-  LDEFLAGS="$LDEFLAGS -L$with_kerberos/lib"
-  if test -f "$with_kerberos5/roken.h"
-  then
-     AC_DEFINE(HEIMDAL)
-     LIBS="-lkrb4 -l45 $LIBS" 
+else
+  #we need to detect when we're building under a kerberosV compatibility
+  #layer, btw...
+  if test "$with_kerberos" != "yes" ; then
+     searchdirs="$with_kerberos"
   else
-     LIBS="-lkrb4 -ldes425 $LIBS"
+     searchdirs="$with_kerberos5 /usr/kerberos /usr/kerberosIV /usr/athena/usr"
   fi
-elif test -n "$with_kerberos5" -a "$with_kerberos" != "no" -a "$with_kerberos5" != "no"
-then
-  for dir in /usr/kerberos /usr/kerberosIV /usr/athena
+  with_kerberos=
+  ac_saveLDFLAGS="$LDFLAGS"
+  for dir in $searchdirs
   do
-    if test -f "$dir/include/kerberosIV/krb.h"
-    then
-      AC_DEFINE(KERBEROS_V4)
-      CEFLAGS="$CEFLAGS -I$dir/include"
-      LDEFLAGS="$LDEFLAGS -L$dir/lib"
-      LIBS="-lkrb4 -ldes425 $LIBS"
-      break
-    fi
+     AC_MSG_CHECKING([for Kerberos IV in $dir])
+     if test -f "$dir/include/krb.h" || test -f "$dir/include/krb4.h" \
+            || test -f "$dir/include/kerberosIV/krb.h"
+     then
+        AC_MSG_RESULT([found])
+     else
+        AC_MSG_RESULT([not found])
+       continue
+     fi
+     #Find libs
+     if test -f "$with_kerberos5/roken.h" ; then
+       AC_CHECK_LIB(45, krb_mk_req)
+     fi
+     LDFLAGS="-L$dir/lib $ac_saveLDFLAGS"
+     AC_SEARCH_LIBS(des_string_to_key, [des425 des], [], continue)
+     AC_SEARCH_LIBS(krb_realmofhost, [krb4 krb], [], continue)
+     with_kerberos="$dir"
+     if test -f "$dir/include/kerberosIV/krb.h" ; then
+        dir="$dir/include/kerberosIV"
+     else
+       dir="$dir/include"
+     fi
+     AC_DEFINE(KERBEROS_V4)
+     test -f "$with_kerberos5/roken.h" && AC_DEFINE(HEIMDAL)
+     test "$dir" != "/usr/include" && CEFLAGS="$CEFLAGS -I$dir"
+     LDEFLAGS="$LDEFLAGS -L$with_kerberos/lib"
+     break
   done
-elif test -n "$with_kerberos" -a "$with_kerberos" != "no"
-then
-  AC_DEFINE(KERBEROS_V4)
-  CEFLAGS="$CEFLAGS -I$with_kerberos/include"
-  LDEFLAGS="$LDEFLAGS -L$with_kerberos/lib"
-  LIBS="$LIBS -lkrb -ldes"
-else
-  if test "$with_kerberos" != "no"
-  then
-    for dir in /usr/kerberos /usr/kerberosIV /usr/athena
-    do
-      if test -f "$dir/include/krb.h"
-      then
-       AC_DEFINE(KERBEROS_V4)
-        CEFLAGS="$CEFLAGS -I$dir/include"
-        LDEFLAGS="$LDEFLAGS -L$dir/lib"
-        LIBS="$LIBS -lkrb -ldes"
-        break
-      fi
-    done
+  if test -z "$with_kerberos" ; then
+     AC_ERROR([Kerberos 4 libraries not found])
   fi
+  LDFLAGS="$ac_saveLDFLAGS"
+fi
 fi
+]) dnl --with-kerberos=DIR
 
 ###    use option --with-ssl to compile in the SSL support
 AC_ARG_WITH(ssl,