Resolve the circular dependency of libmh on libmts on libmh. The
[mmh] / configure.in
index 613b2b0..8c43c76 100644 (file)
@@ -14,11 +14,13 @@ dnl define a macro or two
 dnl ---------------------
 
 AC_DEFUN(NMH_PROG_GNU_LIBTOOL, [
+if test -n "$LIBTOOL" ; then
   tmptest=`$LIBTOOL --version 2>&1 | grep GNU`
   if test x"$tmptest" != x  ; then
     GNU_LIBTOOL=1
     AC_SUBST(GNU_LIBTOOL)dnl
   fi
+fi
 ] )
   
 
@@ -82,6 +84,34 @@ if test x"$enable_nmh_pop" = x"yes"; then
   enable_pop=yes
 fi
 
+dnl Do you want client-side support for using SASL for authentication?
+dnl Note that this code will be enabled for both POP and SMTP
+AC_ARG_WITH(cyrus-sasl,
+[  --with-cyrus-sasl=<dir> Specify location of Cyrus SASL library for auth])
+if test x"$with_cyrus_sasl" != x -a x"$with_cyrus_sasl" != "no"; then
+  AC_DEFINE(CYRUS_SASL)dnl
+fi
+
+dnl What should be the default editor?
+undefine([editor])dnl
+AC_ARG_WITH(editor,
+[  --with-editor=EDITOR    specify the default editor])
+
+if test -n "$with_editor"; then
+  editorpath="$with_editor"
+fi
+
+dnl Set the backup prefix
+undefine([backup-prefix])dnl
+AC_ARG_WITH([hash-backup],
+  [  --with-hash-backup      use # as the backup prefix (default: ,)])
+if test x"$with_hash_backup" != x -a x"$with_hash_backup" != x"no"; then
+  backup_prefix="#"
+else
+  backup_prefix=","
+fi
+AC_DEFINE_UNQUOTED(BACKUP_PREFIX, "$backup_prefix")dnl
+
 dnl Do you want support for hesiod
 AC_ARG_WITH(hesiod,
 [  --with-hesiod=PREFIX    specify location of Hesiod])
@@ -109,36 +139,22 @@ fi
 AC_SUBST(POPLIB)dnl
 AC_SUBST(POPSED)dnl
 
-dnl What should be the default editor?
-undefine([editor])dnl
-AC_ARG_WITH(editor,
-[  --with-editor=EDITOR    specify the default editor])
-
-if test -n "$with_editor"; then
-  editorpath="$with_editor"
-fi
-
 dnl What method of posting should post use?
 undefine([mts])dnl
 AC_ARG_WITH(mts,
-[  --with-mts=MTS          specify the mail transport agent/service])
+[  --with-mts=MTS          specify the default mail transport agent/service])
 
 if test x"$with_mts" = x"smtp"; then
   MTS="smtp"
-  MTSLIB="mts/smtp/libsmtp.a"
-  AC_DEFINE(SMTPMTS)dnl
 elif test x"$with_mts" = x"sendmail"; then
   MTS="sendmail"
-  MTSLIB="mts/sendmail/libsend.a"
-  AC_DEFINE(SENDMTS)dnl
 else
   MTS="smtp"
-  MTSLIB="mts/smtp/libsmtp.a"
-  AC_DEFINE(SMTPMTS)dnl
 fi
-
 AC_SUBST(MTS)dnl
-AC_SUBST(MTSLIB)dnl
+
+dnl Both the smtp and sendmail mail transport services use the smtp code
+AC_DEFINE(SMTPMTS)dnl
 
 dnl What should be the default pager?
 undefine([pager])dnl
@@ -214,6 +230,25 @@ dnl Look for `cut'
 pathtmp=/usr/bin:/bin:/usr/local/bin:/usr/xpg4/bin:/usr/ucb
 AC_PATH_PROG(cutpath, cut, no, [$pathtmp])
 
+dnl ----------------------------------------------
+dnl check for lclint, and lint if it doesn't exist
+dnl ----------------------------------------------
+AC_CHECK_PROG(linttmp1, lclint, lclint, no)dnl
+if test x$ac_cv_prog_linttmp1 != xno ; then
+  LINT=$ac_cv_prog_linttmp1
+  LINTFLAGS="-weak +posixlib -macrovarprefixexclude"
+else
+  AC_CHECK_PROG(linttmp2, lint, lint, no)dnl
+  if test x$ac_cv_prog_linttmp2 != xno ; then
+    LINT=$ac_cv_prog_linttmp2
+    LINTFLAGS=""
+  else
+    LINT="echo 'No lint program found'"
+    LINTFLAGS=""
+  fi
+fi
+AC_SUBST(LINT)dnl
+AC_SUBST(LINTFLAGS)dnl
 
 dnl try to figure out which one we've got
 AC_CHECK_PROG(LIBTOOL, libtool, libtool, , [$pathtmp])
@@ -237,6 +272,20 @@ dnl   AC_SUBST(LORDER)dnl
 dnl   AC_SUBST(TSORT)dnl
 fi
 
+dnl Check whether tsort can deal with loops
+AC_CACHE_CHECK(whether tsort can deal with loops, nmh_cv_tsort_loop,
+  [if test -z "`echo a b b a | tsort 2>/dev/null | grep a`" ; then
+    nmh_cv_tsort_loop=no
+  else
+    nmh_cv_tsort_loop=yes
+  fi])
+if test x$nmh_cv_tsort_loop = xno ; then
+  LORDER=echo
+  TSORT=cat
+  AC_SUBST(LORDER)dnl
+  AC_SUBST(TSORT)dnl
+fi
+
 dnl Look for `ls'
 pathtmp=/usr/bin:/bin:/usr/local/bin:/usr/xpg4/bin:/usr/ucb
 AC_PATH_PROG(lspath, ls, no, [$pathtmp])
@@ -323,8 +372,25 @@ if test "$lspath" != "no" -a "$cutpath" != "no"; then
   fi])
 fi
 
-dnl ...If it's not, we need to #define MAILGROUP to 1 and make inc setgid.
-if test x"$nmh_cv_mailspool_world_writable" = x"no"; then
+dnl Also, check for liblockfile (as found on Debian systems)
+AC_CHECK_HEADER(lockfile.h, AC_CHECK_LIB(lockfile, lockfile_create) )
+
+dnl and whether its companion program dotlockfile is setgid
+AC_PATH_PROG(dotlockfilepath, dotlockfile, no)
+if test "$ac_cv_lib_lockfile_lockfile_create" != "no" ; then
+  if test "$ac_cv_path_dotlockfilepath" != "no" ; then
+    AC_CACHE_CHECK(whether dotlockfile is setgid, nmh_cv_dotlockfile_setgid,
+    [ if test -g "$ac_cv_path_dotlockfilepath" ; then
+        nmh_cv_dotlockfile_setgid=yes
+      else
+        nmh_cv_dotlockfile_setgid=no
+      fi])
+  fi
+fi
+
+dnl If mailspool is not world-writable and dotlockfile is not setgid,
+dnl we need to #define MAILGROUP to 1 and make inc setgid.
+if test x"$nmh_cv_mailspool_world_writable" = x"no" -a x"$nmh_cv_dotlockfile_setgid" != x"yes" ; then
   dnl do we really need both of these?
   AC_DEFINE(MAILGROUP)dnl
   SETGID_MAIL=1
@@ -381,7 +447,7 @@ if test $nmh_cv_header_termios_h_tiocgwinsz = no; then
   nmh_cv_header_sys_ioctl_h_tiocgwinsz=yes,
   nmh_cv_header_sys_ioctl_h_tiocgwinsz=no)])
   if test $nmh_cv_header_sys_ioctl_h_tiocgwinsz = yes; then
-    AC_DEFINE(GWINSZ_IN_SYS_IOCTL)
+    AC_DEFINE(GWINSZ_IN_SYS_IOCTL)dnl
   fi
 fi
  
@@ -403,7 +469,7 @@ AC_FUNC_VFORK
 AC_CHECK_LIB(mkstemp,mkstemp)
 AC_CHECK_FUNCS(waitpid wait3 sigaction sigprocmask sigblock sigsetmask \
                sighold sigrelse writev lstat uname tzset killpg mkstemp \
-               sethostent)
+               sethostent getutent)
 
 dnl solaris screws this up
 AC_CHECK_FUNC(gethostbyname, [AC_DEFINE(HAVE_GETHOSTBYNAME)],
@@ -451,7 +517,6 @@ for lib in $termcap_curses_order; do
 done
 AC_SUBST(TERMLIB)dnl
 
-
 dnl --------------
 dnl CHECK FOR NDBM
 dnl --------------
@@ -505,6 +570,24 @@ fi
 AC_SUBST(KRB4_INCLUDES)dnl
 AC_SUBST(KRB4_LIBS)dnl
 
+dnl --------------------
+dnl CHECK FOR CYRUS SASL
+dnl --------------------
+if test x"$with_cyrus_sasl" != x -a x"$with_cyrus_sasl" != "no"; then
+  if test x"$with_cyrus_sasl" != x"yes"; then
+    SASL_INCLUDES="-I$with_cyrus_sasl/include"
+    SASL_LIBS="-L$with_cyrus_sasl/lib"
+  fi
+  save_LDFLAGS="$LDFLAGS"
+  LDFLAGS="$LDFLAGS $SASL_LIBS"
+  AC_CHECK_LIB(sasl, sasl_client_new,
+    [SASL_LIBS="$SASL_LIBS -lsasl"],
+    [AC_MSG_ERROR(Cyrus SASL library not found)])
+  LDFLAGS="$save_LDFLAGS"
+fi
+AC_SUBST(SASL_INCLUDES)dnl
+AC_SUBST(SASL_LIBS)dnl
+
 dnl ---------------------
 dnl CHECK TERMCAP LIBRARY
 dnl ---------------------
@@ -537,7 +620,7 @@ if test $nmh_cv_decl_ospeed_include_defines = no; then
 fi
  
 if test $nmh_cv_decl_ospeed_include_defines = yes; then
-  AC_DEFINE(HAVE_OSPEED)
+  AC_DEFINE(HAVE_OSPEED)dnl
 elif test $nmh_cv_decl_ospeed_must_define = yes; then
   AC_DEFINE(HAVE_OSPEED)
   AC_DEFINE(MUST_DEFINE_OSPEED)
@@ -696,10 +779,8 @@ dnl ----------------
 dnl OUTPUT MAKEFILES
 dnl ----------------
 AC_OUTPUT(Makefile config/Makefile h/Makefile sbr/Makefile uip/Makefile \
-          zotnet/Makefile zotnet/mts/Makefile zotnet/tws/Makefile \
           mts/Makefile mts/smtp/Makefile \
-         mts/sendmail/Makefile mts/mmdf/Makefile etc/Makefile \
-         docs/Makefile man/Makefile, \
+         etc/Makefile docs/Makefile man/Makefile, \
           [test -z "$CONFIG_HEADERS" || echo > stamp-h])
 
 dnl Umm, what's the point of these assignments??  -- <dan-nmh@dilvish.speed.net>
@@ -736,6 +817,7 @@ binary install path        : ${nmhbin2}
 libary install path        : ${nmhlib2}
 config files install path  : ${nmhsysconf2}
 man page install path      : ${nmhman}
+backup prefix              : ${backup_prefix}
 transport system           : ${MTS}
 default smtp servers       : ${smtpservers}
 default editor             : ${editorpath}
@@ -743,6 +825,3 @@ default pager              : ${pagerpath}
 email address masquerading : ${masquerade}
 pop is enabled             : ${pop_kinds}"
 echo ""
-
-
-