dnl Autoconfigure input file for fetchmail
dnl Eric S. Raymond <esr@thyrsus.com>
dnl
dnl Process this file with autoconf to produce a configure script.
dnl

AC_INIT([fetchmail], [6.1.2])
AC_CONFIG_SRCDIR([fetchmail.h])
AC_CONFIG_HEADERS([config.h])

dnl We want these before the checks, so the checks can modify their values.
test -z "$CFLAGS" && CFLAGS="-O" AC_SUBST(CFLAGS)
test -z "$LDFLAGS" && LDFLAGS=AC_SUBST(LDFLAGS)

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")

AC_CANONICAL_HOST
AC_PROG_CC
AC_PROG_INSTALL
AC_PROG_CPP			dnl Later checks need this.
AC_PROG_CC_C_O
AC_AIX
AC_ISC_POSIX
AC_MINIX
AC_HEADER_STDC
AC_TYPE_SIZE_T
AC_TYPE_PID_T
AC_TYPE_SIGNAL
AC_CHECK_HEADERS(unistd.h termios.h termio.h sgtty.h stdarg.h alloca.h)
AC_CHECK_HEADERS(sys/itimer.h fcntl.h sys/fcntl.h memory.h sys/wait.h sys/shm.h)
AC_CHECK_HEADERS(arpa/inet.h arpa/nameser.h resolv.h net/socket.h sys/select.h)

AC_C_CONST			dnl getopt needs this.

dnl do NOT use AM_PROG_LEX, builds without LEX are not supported properly
AC_PROG_LEX
AC_PROG_MAKE_SET
AC_PROG_YACC
AC_SUBST(CPFLAGS)
AC_SUBST(CEFLAGS)
AC_SUBST(LDEFLAGS)

# Check for LynxOS special case: -lbsd needed (at least on 2.3.0) and -s
# not working.
if test `uname` = "LynxOS" 
then
  echo "Adding -lbsd to standard libraries"
  LIBS="$LIBS -lbsd"
  LDFLAGS=""
  echo "Prepending standard include path to gcc flags"
  CPFLAGS="-I/usr/include"
fi

# Check for FreeBSD special case: more libs needed
if test `uname` = "FreeBSD" 
then
   echo "Adding -lmd -lkvm -lcom_err to standard libraries"
   LIBS="$LIBS -lmd -lkvm -lcom_err"
fi
 
# Check for Rhapsody special case: it doesn't like -s
if test `uname` = "Rhapsody" 
then
   echo "Removing -s load flag"
   LDFLAGS=`echo $LDFLAGS | sed "s/-s //"`
fi
 
dnl i18n
ALL_LINGUAS="ca cs da de el es fr gl ja pl pt_BR tr sk"
AM_GNU_GETTEXT
dnl end i18n

# Under sysV68, socket and friends are provided by the C library.
# -linet does not provide socket, but causes multiple definition
# errors at link-time.  It is thus better to only use the C library.
# So don't add -linet to the link list unless it's necessary
AC_CHECK_FUNC(socket,
    AC_MSG_RESULT(using libc's socket),
    AC_CHECK_LIB(socket,socket)
    AC_CHECK_LIB(inet,socket))

# The condition in this test copes with the presence of inet_addr in libc6.
AC_CHECK_FUNC(inet_addr,
    AC_MSG_RESULT(using libc's inet_addr),
    AC_CHECK_LIB(nsl,inet_addr))

dnl Port hack for Interactive UNIX System V/386 Release 3.2
AC_CHECK_LIB(cposix, strchr,
		[EXTRADEFS="$EXTRADEFS -D_SYSV3"
		LIBS="$LIBS -lcposix"])

dnl Port hack for Sparc/NetBSD-1.5
AC_CHECK_LIB(intl, gettext,
		[LIBS="$LIBS -lintl"])

AC_CHECK_FUNC(strstr, AC_DEFINE(HAVE_STRSTR), 
              [EXTRASRC="$EXTRASRC \$(srcdir)/strstr.c"
               EXTRAOBJ="$EXTRAOBJ strstr.o"])

AC_CHECK_FUNC(strcasecmp, AC_DEFINE(HAVE_STRCASECMP), 
              [EXTRASRC="$EXTRASRC \$(srcdir)/strcasecmp.c"
               EXTRAOBJ="$EXTRAOBJ strcasecmp.o"])
             
AC_CHECK_FUNC(memmove, AC_DEFINE(HAVE_MEMMOVE), 
              [EXTRASRC="$EXTRASRC \$(srcdir)/memmove.c"
               EXTRAOBJ="$EXTRAOBJ memmove.o"])
             
AC_CHECK_FUNC(MD5Init, AC_DEFINE(HAVE_MD5),
              [EXTRASRC="$EXTRASRC \$(srcdir)/md5c.c"
               EXTRAOBJ="$EXTRAOBJ md5c.o"])

AC_CHECK_FUNC(getopt_long, AC_DEFINE(HAVE_GETOPT_LONG),
              [EXTRASRC="$EXTRASRC \$(srcdir)/getopt.c \$(srcdir)/getopt1.c"
               EXTRAOBJ="$EXTRAOBJ getopt.o getopt1.o"])

AC_FUNC_VPRINTF
AC_FUNC_ALLOCA
if test -n "$ALLOCA" 
then
  EXTRASRC="$EXTRASRC \$(srcdir)/alloca.c"
  EXTRAOBJ="$EXTRAOBJ alloca.o"
fi

dnl AC_CHECK_FUNC calls that might hack the Makefile must precede
dnl the following AC_SUBSTs

AC_SUBST(EXTRADEFS)
AC_SUBST(EXTRASRC)
AC_SUBST(EXTRAOBJ)

AC_CHECK_FUNCS(tcsetattr stty setsid geteuid seteuid gethostbyname \
  res_search herror strrchr strerror setlinebuf syslog \
  snprintf vprintf vsnprintf vsyslog \
  atexit inet_aton strftime setrlimit socketpair sigprocmask sigaction \
  getopt_long)

# Under Red Hat 4.0 (and many other Linuxes) -lresolv is seriously flaky
# and breaks gethostbyname(2).  It's better to use the bind stuff in the C
# library.  So don't add -lresolv to the link list unless it's necessary
# (It will be necessary when using GNU libc6).
AC_CHECK_FUNC(res_search,
    AC_MSG_RESULT(using libc's resolver functions),
    AC_CHECK_LIB(resolv,res_search, 
	[AC_DEFINE(HAVE_RES_SEARCH) AC_MSG_RESULT(found resolver functions in libresolv); LIBS="$LIBS -lresolv"], AC_MSG_RESULT(no resolver calls found)))

dnl Check for libcrypt -- it may live in libc or libcrypt, as on IRIX
AC_CHECK_FUNC(crypt, , AC_CHECK_LIB(crypt,crypt))

dnl Check for RSA refersence library in case we're using SSL
AC_CHECK_LIB(rsaref, RSAPublicDecrypt)

dnl AC_FUNC_SETVBUF_REVERSED

dnl Check for usable void pointer type
AC_MSG_CHECKING(use of void pointer type)
AC_TRY_COMPILE([],
   [char *p;
    void *xmalloc();
    p = (char *) xmalloc(1);
   ],
 [AC_DEFINE(HAVE_VOIDPOINTER) AC_MSG_RESULT(yes)],
 AC_MSG_RESULT(no))

dnl Check for ANSI volatile
AC_MSG_CHECKING(for ANSI volatile)
AC_TRY_COMPILE([],
   [volatile int n;],
 [AC_DEFINE(HAVE_VOLATILE) AC_MSG_RESULT(yes)],
 AC_MSG_RESULT(no))

dnl Check out the wait reality.  We have to assume sys/wait.h is present.
AC_CHECK_FUNCS(waitpid wait3)
AC_MSG_CHECKING(for union wait);
AC_TRY_LINK([#include <sys/types.h>
#include <sys/wait.h>],
	 	 [union wait status; int pid; pid = wait (&status);
#ifdef WEXITSTATUS
/* Some POSIXoid systems have both the new-style macros and the old
   union wait type, and they do not work together.  If union wait
   conflicts with WEXITSTATUS et al, we don't want to use it at all.  */
if (WEXITSTATUS (status) != 0) pid = -1;
#endif
#ifdef HAVE_WAITPID
/* Make sure union wait works with waitpid.  */
pid = waitpid (-1, &status, 0);
#endif
],
  [AC_DEFINE(HAVE_UNION_WAIT) AC_MSG_RESULT(yes)],
  AC_MSG_RESULT(no))

AC_MSG_CHECKING(sys_siglist declaration in signal.h or unistd.h)
AC_TRY_LINK([#include <signal.h>
/* NetBSD declares sys_siglist in <unistd.h>.  */
#ifdef HAVE_UNISTD_H
#include <unistd.h>
#endif], [char *msg = *(sys_siglist + 1);],
  [AC_DEFINE(SYS_SIGLIST_DECLARED) AC_MSG_RESULT(yes)],
  AC_MSG_RESULT(no))

# Find the right directory to put the root-mode PID file in
for dir in "/var/run" "/etc"
do
	if test -d $dir 
	then
		break;
	fi
done
AC_MSG_RESULT(root-mode pid file will go in $dir)
AC_DEFINE_UNQUOTED(PID_DIR, "$dir")

# We may have a fallback MDA available in case the socket open to the 
# local SMTP listener fails.  Best to use procmail for this, as we know
# it won't try delivering through local SMTP and cause a mail loop.
# Sendmail without the -t option to use the message headers will work too,
# not just for sendmail itself but for workalikes like exim.
#
# Note1: A disadvantage of using procmail is that local alias expansion
# according to /etc/aliases won't get done if we fall back.  This doesn't
# matter in single-drop mode.
#
# Note2: it would be a very bad idea to use any MDA that doesn't return
# a refuse-to-deliver status on disk- or process-table-full
# conditions; mail could get lost that way.  Sendmail and all of the MDAs
# like exim that might be lurking under a sendmail alias) do the right 
# thing in this circumstance.  Matthias Andree warns that procmail does
# not.  
#
# Note3: Defalt value of fallback is now off.  Matthias writes:
#
# 1. there is no way to predict when the fallback is used. With some MTAs
#    (such as those limiting load average), outer circumstances can cause
#    the fallback to kick in.
# 
# 2. the fallback changes fetchmail behaviour in unpredictable ways. It's
#    not only about alias expansion, .forwards to special filters won't
#    work, mail may end up in a different place (users claim "mail loss"
#    for that).
# 
# 3. The claim procmail did the right thing with its exit codes is plain
#    wrong. I've seen procmail exit with code 1 when it should have exited
#    with code 75, like, configuration errors. Procmail is a dangerous
#    beast and is best replaced by maildrop.
# 
# 4. if multiple choices exist (like procmail and maildrop), fetchmail
#    cannot tell which one it should choose. Say, your MTA is configured
#    to use maildrop to deliver to user's mailboxes, if fetchmail then
#    chooses procmail, this is plain wrong.
#

AC_PATH_PROG(procmail, procmail, "", $PATH:/usr/sbin)
AC_PATH_PROG(sendmail, sendmail, "", $PATH:/usr/sbin:/usr/lib)
AC_PATH_PROG(maildrop, maildrop, "", $PATH:/usr/local/bin)

###	use option --disable-fallback to disable fallback MDA
###	use option --enable-fallback=procmail or 
###		   --enable-fallback=sendmail to select
AC_ARG_ENABLE(fallback,
	[  --enable-fallback=procmail    enable procmail as fallback
  --enable-fallback=sendmail    enable /usr/sbin/sendmail as fallback
  --enable-fallback=maildrop    enable maildrop as fallback
  --enable-fallback=no          disable fallback],,[enable_fallback=no])

case "$enable_fallback" in
	sendmail)	if test -z "$sendmail" ; then 
				AC_ERROR([Sendmail selected as fallback, but not found])
				#not reached
			fi
			AC_DEFINE_UNQUOTED(FALLBACK_MDA, "$sendmail -i %T")
			echo "Will use $sendmail as fallback MDA."
			;;
	procmail)	if test -z "$procmail" ; then
				AC_ERROR([procmail selected as fallback, but not found])
				#not reached
			fi
			AC_DEFINE_UNQUOTED(FALLBACK_MDA, "$procmail -d %T")
			echo "Will use $procmail as fallback MDA."
			;;
	maildrop)	if test -z "$maildrop" ; then
				AC_ERROR([maildrop selected as fallback, but not found])
				#not reached
			fi
			AC_DEFINE_UNQUOTED(FALLBACK_MDA, "$maildrop -d %T")
			echo "Will use $maildrop as fallback MDA."
			;;
	no|unset)	echo "Will not use a fallback MDA"
			;;
	auto|yes|set)	if test -n "$sendmail" ; then
				AC_DEFINE_UNQUOTED(FALLBACK_MDA,"$sendmail -i %T")
				echo "Will use $sendmail as fallback MDA."
			else
				echo "No fallback MDA available. procmail and maildrop are not eligible"
				echo "for automatic fallback MDA configuration for reliability reasons."
			fi
			;;
	*)		AC_ERROR([unkown value for --enable-fallback given: $enable_fallback])
			#notreached
			;;
esac

AC_CHECK_SIZEOF(short)
AC_CHECK_SIZEOF(int)
AC_CHECK_SIZEOF(long)

###	use option --enable-POP2 to compile in the POP2 support
AC_ARG_ENABLE(POP2,
	[  --enable-POP2           compile in POP2 protocol support (obsolete)],
	[with_POP2=$enableval],
	[with_POP2=no])
test "$with_POP2" = "yes" && AC_DEFINE(POP2_ENABLE)

###	use option --disable-POP3 to omit the POP3 support
AC_ARG_ENABLE(POP3,
	[  --disable-POP3          don't compile in POP3 protocol support],
	[with_POP3=$enableval],
	[with_POP3=yes])
test "$with_POP3" = "yes" && AC_DEFINE(POP3_ENABLE)

###	use option --disable-IMAP to omit the IMAP support
AC_ARG_ENABLE(IMAP,
	[  --disable-IMAP          don't compile in IMAP protocol support],
	[with_IMAP=$enableval],
	[with_IMAP=yes])
test "$with_IMAP" = "yes" && AC_DEFINE(IMAP_ENABLE)

###	use option --disable-ETRN to omit the ETRN support
AC_ARG_ENABLE(ETRN,
	[  --disable-ETRN          don't compile in ETRN protocol support],
	[with_ETRN=$enableval],
	[with_ETRN=yes])
test "$with_ETRN" = "yes" && AC_DEFINE(ETRN_ENABLE)

###	use option --disable-ODMR to omit the ODMR support
AC_ARG_ENABLE(ODMR,
	[  --disable-ODMR          don't compile in ODMR protocol support],
	[with_ODMR=$enableval],
	[with_ODMR=yes])
test "$with_ODMR" = "yes" && AC_DEFINE(ODMR_ENABLE)

###	use option --enable-RPA to compile in the RPA support
AC_ARG_ENABLE(RPA,
	[  --enable-RPA            compile in RPA protocol support],
	[with_RPA=$enableval],
	[with_RPA=no])
test "$with_RPA" = "yes" && AC_DEFINE(RPA_ENABLE)

###	use option --enable-NTLM to compile in the NTLM support
AC_ARG_ENABLE(NTLM,
	[  --enable-NTLM           compile in NTLM authentication support],
	[with_NTLM=$enableval],
	[with_NTLM=no])
test "$with_NTLM" = "yes" && AC_DEFINE(NTLM_ENABLE)

###	use option --enable-SDPS to compile in the SDPS support
AC_ARG_ENABLE(SDPS,
	[  --enable-SDPS           compile in SDPS protocol support],
	[with_SDPS=$enableval],
	[with_SDPS=no])
test "$with_SDPS" = "yes" && AC_DEFINE(SDPS_ENABLE)

###	use option --enable-opie to compile in the OPIE support
AC_ARG_ENABLE(opie,
	[  --enable-opie           support OTP through the OPIE library],
	[ AC_CHECK_HEADER(opie.h,, [echo 'configure: cannot find <opie.h>, which is required for OPIE support.'; exit 1])
          AC_CHECK_LIB(opie,opiegenerator,, [echo 'configure: cannot find libopie, which is required for OPIE support.'; exit 1])
          with_opie=$enableval],
	[with_opie=no])
test "$with_opie" = "yes" && AC_DEFINE(OPIE_ENABLE)

AC_ARG_ENABLE(inet6,
	[  --enable-inet6          support IPv6 (requires the inet6-apps library)],

	[ AC_CHECK_FUNC(getaddrinfo, [with_inet6=yes],
	  [ LDFLAGS="$LDFLAGS -L/usr/inet6/lib";
	    AC_CHECK_LIB(inet6, getaddrinfo, [with_inet6=yes
	    LIBS="$LIBS -linet6"],
	    [ echo 'configure: cannot find proper glibc version or libinet6,';
	      echo '           which is required for IPv6 support.';
	      exit 1]) ] )],
	[with_inet6=no])
test "$with_inet6" = "yes" && AC_DEFINE(INET6_ENABLE)

AC_CHECK_FUNCS(inner_connect)

AC_ARG_ENABLE(netsec,
	[  --enable-netsec         support network security (requires inet6-apps library)],
        [ unset ac_cv_lib_inet6_net_security_strtorequest; AC_CHECK_LIB(inet6, net_security_strtorequest,,
	  [ unset ac_cv_lib_inet6_net_security_strtorequest;
            LDFLAGS="$LDFLAGS -L/usr/inet6/lib"; 
            AC_CHECK_LIB(inet6, net_security_strtorequest,,
            [ echo 'configure: cannot find net_security_strtorequest in libinet6, which is required';
              echo '           for network security support. Either it does not exist, or it was';
              echo '           not built with network security support enabled.';
              exit 1]) ])
        unset ac_cv_header_net_security_h; AC_CHECK_HEADER(net/security.h,,
        [ unset ac_cv_header_net_security_h; 
	CPPFLAGS="$CPPFLAGS -I/usr/inet6/include"; 
	CFLAGS="$CFLAGS -I/usr/inet6/include"; AC_CHECK_HEADER(net/security.h,,
	  [ echo 'configure: cannot find <net/security.h>, which is required';
          echo '             for network security support.';
          exit 1]) ]) ]
	[with_netsec=no])
test "$with_netsec" = "yes" && AC_DEFINE(NET_SECURITY)

# 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],
[
if test "$with_kerberos5" != "no"
then
# Check for a OpenBSD special case
if test "$with_kerberos5" = "yes" && ( test `uname` = "OpenBSD" )
then
  AC_CHECKING([kerberosV for OpenBSD])
  AC_DEFINE(HEIMDAL)
  AC_DEFINE(KERBEROS_V5)
  CEFLAGS="$CEFLAGS -I/usr/include/kerberosV"
  LIBS="$LIBS -lasn1 -lkrb5 -lcom_err -lkafs"
else
  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)
        else
          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
     else
        AC_MSG_RESULT([not found])
     fi
  done
  if test -z "$with_kerberos5" ; then
     AC_ERROR([Kerberos 5 libraries not found])
  fi
fi
fi
]) dnl --with-kerberos5=DIR

###    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],
[
if test "$with_kerberos" != "no"
then
# Check for a NetBSD/OpenBSD special case
if test "$with_kerberos" = "yes" && ( test `uname` = "NetBSD" || test `uname` = "OpenBSD" )
then
  AC_CHECKING([kerberosIV for `uname`])
  AC_DEFINE(KERBEROS_V4)
  CEFLAGS="$CEFLAGS -I/usr/include/kerberosIV"
  LIBS="$LIBS -lkrb -ldes"
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
     searchdirs="$with_kerberos5 /usr/kerberos /usr/kerberosIV /usr/athena/usr"
  fi
  with_kerberos=
  ac_saveLDFLAGS="$LDFLAGS"
  for dir in $searchdirs
  do
     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
  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,
	[  --with-ssl=[DIR]        enable SSL support using libraries in DIR],
	[with_ssl=$withval],
	[with_ssl=no])
test "$with_ssl" != "no" && AC_DEFINE(SSL_ENABLE)

if test "$with_ssl" = "yes"
then
    #	He didn't specify an SSL location.  Let's look at some common
    #	directories where SSL has been found in the past and try and auto
    #	configure for SSL.  OpenSSL determination will be made later.
    #	This will screw up if an OpenSSL install is located in a later
    #	directory than an older SSLeay install, but the user should fix that
    #	anyways and he can override on the configure line.
    for ac_dir in \
      /usr/local/ssl \
      /usr/ssl \
      /usr \
      /local/ssl \
      /opt/ssl \
      ; \
    do
        if test -d "$ac_dir" ; then
            with_ssl=$ac_dir
            break;
        fi
    done
fi

if test -n "$with_ssl" -a "$with_ssl" != "no"
then
  # With the autoconfigure above, the only time this is going to be
  # true is going to be when we could not find the headers.  If they
  # are not in system standard locations, we are going to be broken.
  if test "$with_ssl" = "yes"
  then
    # Let's just define the standard location for the SSLeay root
    with_ssl="/usr/local/ssl"
  fi
  if test -r $with_ssl/include/openssl/ssl.h
  then
    ###	ssl.h found under openssl.  Use openssl configuration preferentially,
    ### In Red Hat 9, this file includes a reference to <krb5.h>, so we
    ### force the Kerberos direcory onto the include path so it will build.
    echo "Enabling OpenSSL support in $with_ssl"
    CEFLAGS="$CEFLAGS -I$with_ssl/include -I/usr/kerberos/include"
    ###	OpenBSD comes with ssl headers
  elif test -r /usr/include/ssl/ssl.h
  then
    echo "Enabling SSLeay support in $with_ssl"
    CEFLAGS="$CEFLAGS -I/usr/include/ssl"
  else
    echo "Enabling SSLeay support in $with_ssl"
    test "$with_ssl" != "/usr" && CEFLAGS="$CEFLAGS -I$with_ssl/include"
  fi
  LDEFLAGS="$LDEFLAGS -L$with_ssl/lib"
  LIBS="$LIBS -lssl -lcrypto"
  AC_DEFINE(SSL_ENABLE)
else
  echo 'Disabling SSL support...'
fi

###	use option --with-socks=DIR to point at SOCKS library
AC_ARG_WITH(socks,
	[  --with-socks[=DIR]      add built-in SOCKS firewall access],
[
if test "$with_socks" != no
then
    if test "$with_socks" != yes
    then
        LDEFLAGS="$LDEFLAGS -L$with_socks"
    else
        AC_CHECK_LIB(socks, Rconnect,,
               AC_MSG_ERROR([could not find libsocks which is needed for built-in SOCKS support]))
    fi
    AC_DEFINE(HAVE_SOCKS)
    CEFLAGS="$CEFLAGS -Dconnect=Rconnect -Dgetsockname=Rgetsockname -Dbind=Rbind -Daccept=Raccept -Dlisten=Rlisten -Dselect=Rselect"
    LIBS="-lsocks $LIBS"
fi])

###     use option --with-socks5=DIR to point at SOCKS library
AC_ARG_WITH(socks5,
        [  --with-socks5[=DIR]     add built-in SOCKS5 firewall access],
[
if test "$with_socks5" != no
then
  if test "$with_socks5" != yes
  then
    LDEFLAGS="$LDEFLAGS -L$with_socks5"
  fi
  ac_savedLDFLAGS="$LDFLAGS"
  LDFLAGS="$LDEFLAGS $LDFLAGS"
  AC_CHECK_LIB(socks5, SOCKSconnect,,
  	AC_MSG_ERROR([could not find libsocks5 which is needed for built-in SOCKS5 support]))
  AC_DEFINE(HAVE_SOCKS)
  CEFLAGS="$CEFLAGS -Dconnect=SOCKSconnect -Dgetsockname=SOCKSgetsockname -Dbind=SOCKSbind -Daccept=SOCKSaccept -Dlisten=SOCKSlisten -Dselect=SOCKSselect -Drecvfrom=SOCKSrecvfrom -Dsendto=SOCKSsendto -Drecv=SOCKSrecv -Dsend=SOCKSsend -Dread=SOCKSread -Dwrite=SOCKSwrite -Drresvport=SOCKSrresvport -Dshutdown=SOCKSshutdown -Dlisten=SOCKSlisten -Dclose=SOCKSclose -Ddup=SOCKSdup -Ddup2=SOCKSdup2 -Dgethostbyname=SOCKSgethostbyname"
  AC_CHECK_FUNC(SOCKSfclose, [CFLAGS="$CFLAGS -Dfclose=SOCKSfclose"])
  LDFLAGS="$ac_savedLDFLAGS"
fi])

###	use option --with-hesiod=DIR to point at a HESIOD directory
AC_ARG_WITH(hesiod,
	[  --with-hesiod=DIR       point fetchmail compilation at a HESIOD directory])

case "x$with_hesiod" in
xno)
    ;;
x)
    for dir in /usr/athena /usr /usr/local
    do
      if test -f "$dir/include/hesiod.h"
      then
        CEFLAGS="$CEFLAGS -DHESIOD"
        test "$dir" != "/usr" && CEFLAGS="$CEFLAGS -I$dir/include"
        LDEFLAGS="$LDEFLAGS -L$dir/lib"
        LIBS="$LIBS -lhesiod"
        with_hesiod=$dir
        break
      fi
    done
    ;;
*)
    # Path given
    CEFLAGS="$CEFLAGS -DHESIOD"
    test "$with_hesiod" != "/usr" && CEFLAGS="$CEFLAGS -I$with_hesiod/include"
    LDEFLAGS="$LDEFLAGS -L$with_hesiod/lib"
    LIBS="$LIBS -lhesiod"
    ;;
esac

###	use option --with-gssapi=DIR to compile in GSSAPI support
AC_ARG_WITH(gssapi,
	[  --with-gssapi[=DIR]     compile in GSSAPI support using libraries in DIR],
[
if test "$with_gssapi" != "no"
then
  if test "$with_gssapi" = "yes" -a -n "$with_kerberos5"
  then
    with_gssapi=$with_kerberos5
  fi
  if test "$with_gssapi" != "yes" -a -n "$with_gssapi"
  then
    CFLAGS="$CFLAGS -I$with_gssapi/include"
    LDFLAGS="$LDFLAGS -L$with_gssapi/lib"
  fi

  if test -f "$with_gssapi/include/roken.h"
  then
     LIBS="$LIBS -lkrb5 -lasn1 -ldes -lroken -ldb -ldl"
     AC_CHECK_LIB(gssapi, gss_init_sec_context,LIBS="$LIBS -lgssapi",
                  AC_MSG_ERROR([could not find libgssapi which is needed for GSSAPI support]), )
     AC_DEFINE(HEIMDAL)
  else
     AC_CHECK_LIB(gssapi_krb5, gss_init_sec_context,LIBS="$LIBS -lgssapi_krb5",
                  AC_MSG_ERROR([could not find libgssapi_krb5 which is needed for GSSAPI support]), -lkrb5)
  fi
  AC_DEFINE(GSSAPI)
  save_CPPFLAGS=$CPPFLAGS
  CPPFLAGS="-I$with_gssapi/include"
  AC_CHECK_HEADERS(gssapi.h gssapi/gssapi.h gssapi/gssapi_generic.h)
  if test "$ac_cv_header_gssapi_h" = "yes"; then
    AC_EGREP_HEADER(GSS_C_NT_HOSTBASED_SERVICE, gssapi.h, AC_DEFINE(HAVE_GSS_C_NT_HOSTBASED_SERVICE))
  else
    AC_EGREP_HEADER(GSS_C_NT_HOSTBASED_SERVICE, gssapi/gssapi.h, AC_DEFINE(HAVE_GSS_C_NT_HOSTBASED_SERVICE))
  fi
fi])

AC_CONFIG_FILES([Makefile intl/Makefile po/Makefile.in])
AC_CONFIG_COMMANDS([default],[
	# The reason for this odd makedepend line is that we want
	# to have all dependencies evaluated relative to the source directory
	# and let VPATH do all the dirty work when we build remotely
	echo "You can ignore any makedepend error messages:";
	echo timestamp > stamp-h;
	(cd $srcdir; makedepend -f - *.c) >>Makefile])

AC_OUTPUT
dnl Local Variables:
dnl comment-start: "dnl "
dnl comment-end: ""
dnl comment-start-skip: "\\bdnl\\b\\s *"
dnl compile-command: "make configure config.h.in"
dnl End:
