* Applied, after some finessing,
[mmh] / configure.in
index 0904f1b..814884f 100644 (file)
@@ -9,53 +9,44 @@ AC_CONFIG_HEADER(config.h)
 
 AC_CANONICAL_SYSTEM
 
+dnl ---------------------
+dnl define a macro or two
+dnl ---------------------
+
+AC_DEFUN(NMH_PROG_GNU_LIBTOOL, [
+  tmptest=`$LIBTOOL --version 2>&1 | grep GNU`
+  if test x"$tmptest" != x  ; then
+    GNU_LIBTOOL=1
+    AC_SUBST(GNU_LIBTOOL)dnl
+  fi
+] )
+  
+
 dnl What version of nmh are we building?
 VERSION=`sed -e 's/nmh-//' ${srcdir}/VERSION`
 echo "configuring for nmh-$VERSION"
 AC_SUBST(VERSION)dnl
 
-dnl -------------------------
-dnl CHECK COMMAND LINE OPTION
-dnl -------------------------
-dnl What method of posting should post use?
-undefine([mts])dnl
-AC_ARG_WITH(mts,
-[  --with-mts=MTS          specify the mail transport agent])
-
-if test x$with_mts = xsmtp; then
-  MTS="smtp"
-  MTSLIB="mts/smtp/libsmtp.a"
-  AC_DEFINE(SMTPMTS)dnl
-elif test x$with_mts = xsendmail; 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)
-AC_SUBST(MTSLIB)
-
-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 should be the default pager?
-undefine([pager])dnl
-AC_ARG_WITH(pager,
-[  --with-pager=PAGER      specify the default pager])
+dnl --------------------------
+dnl CHECK COMMAND LINE OPTIONS
+dnl --------------------------
+
+dnl Allow users to send email from addresses other than their default?
+undefine([masquerade])dnl
+AC_ARG_ENABLE(masquerade,
+  [  --enable-masquerade[='draft_from[ mmailid[ username_extension]]']
+                          enable 3 types of email address masquerading [none]],
+  [if test x"$enable_masquerade" = x"yes"; then
+    masquerade="draft_from mmailid username_extension"
+  else
+    masquerade="$enable_masquerade"
+  fi])
+AC_SUBST(masquerade)dnl
 
-if test -n "$with_pager"; then
-  pagerpath="$with_pager"
-fi
+dnl Do you want to debug nmh?
+undefine([nmh-debug])dnl
+AC_ARG_ENABLE(nmh-debug,
+[  --enable-nmh-debug      enable nmh code debugging])
 
 dnl Do you want mhe support?
 undefine([nmh-mhe])dnl
@@ -64,7 +55,7 @@ AC_ARG_ENABLE(nmh-mhe,
 
 dnl mhe support is on by default, so define it unless
 dnl explicitly disabled.
-if test x$enable_nmh_mhe != xno; then
+if test x$"enable_nmh_mhe" != x"no"; then
   AC_DEFINE(MHE)dnl
 fi
 
@@ -72,7 +63,7 @@ dnl Do you want client-side support for pop
 undefine([nmh-pop])dnl
 AC_ARG_ENABLE(nmh-pop,
 [  --enable-nmh-pop        enable client-side support for pop])
-if test x$enable_nmh_pop = xyes; then
+if test x"$enable_nmh_pop" = x"yes"; then
   AC_DEFINE(POP)dnl
   POPLIB=popsbr.o
   POPSED='/^%nmhbeginpop%/d;/^%nmhendpop%/d'
@@ -82,25 +73,72 @@ 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 Do you want support for hesiod
+AC_ARG_WITH(hesiod,
+[  --with-hesiod=PREFIX    specify location of Hesiod])
+if test x"$with_hesiod" != x -a x"$with_hesiod" != x"no"; then
+  AC_DEFINE(HESIOD)dnl
+fi
+
 dnl Do you want client-side support for kpop
 AC_ARG_WITH(krb4,
 [  --with-krb4=PREFIX      specify location of Kerberos V4 for kpop support])
-if test x$with_krb4 != x -a x$with_krb4 != xno; then
+if test x"$with_krb4" != x -a x"$with_krb4" != x"no"; then
   AC_DEFINE(KPOP)dnl
   AC_DEFINE(KPOP_PRINCIPAL, "pop")dnl
 fi
 
-dnl Do you want support for hesiod
-AC_ARG_WITH(hesiod,
-[  --with-hesiod=PREFIX    specify location of Hesiod])
-if test x$with_hesiod != x -a x$with_hesiod != xno; then
-  AC_DEFINE(HESIOD)dnl
+dnl What method of posting should post use?
+undefine([mts])dnl
+AC_ARG_WITH(mts,
+[  --with-mts=MTS          specify the mail transport agent])
+
+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
 
-dnl Do you want to debug nmh?
-undefine([nmh-debug])dnl
-AC_ARG_ENABLE(nmh-debug,
-[  --enable-nmh-debug      enable nmh code debugging])
+AC_SUBST(MTS)dnl
+AC_SUBST(MTSLIB)dnl
+
+dnl What should be the default pager?
+undefine([pager])dnl
+AC_ARG_WITH(pager,
+[  --with-pager=PAGER      specify the default pager])
+
+if test -n "$with_pager"; then
+  pagerpath="$with_pager"
+fi
+
+dnl What should be the default mail server(s)?
+undefine([smtpservers])dnl
+AC_ARG_WITH(smtpservers,
+[  --with-smtpservers='SMTPSERVER1[ SMTPSERVER2...]'
+                          specify the default smtp server(s) [localhost]])
+if test -n "$with_smtpservers"; then
+  smtpservers="$with_smtpservers"
+else
+  smtpservers="localhost"
+fi
+AC_SUBST(smtpservers)dnl
 
 dnl ----------------------------------------------------
 dnl Default location is /usr/local/nmh/{bin,etc,lib,man}
@@ -113,7 +151,7 @@ dnl ------------------
 dnl We want these before the checks,
 dnl so the checks can modify their values.
 test -z "$CFLAGS" && CFLAGS= auto_cflags=1
-if test x$enable_nmh_debug = xyes; then
+if test x"$enable_nmh_debug" = x"yes"; then
   test -z "$LDFLAGS" && LDFLAGS=-g
 fi
 
@@ -124,7 +162,7 @@ dnl   if compiler is gcc, then
 dnl     use -O2 and some warning flags
 dnl   else use -O
 if test -n "$auto_cflags"; then
-  if test x$enable_nmh_debug = xyes; then
+  if test x"$enable_nmh_debug" = x"yes"; then
     if test -n "$GCC"; then
       test -z "$CFLAGS" && CFLAGS="-Wall -g" || CFLAGS="$CFLAGS -Wall -g"
     else
@@ -155,6 +193,11 @@ dnl Look for `cut'
 pathtmp=/usr/bin:/bin:/usr/local/bin:/usr/xpg4/bin:/usr/ucb
 AC_PATH_PROG(cutpath, cut, no, [$pathtmp])
 
+
+dnl try to figure out which one we've got
+AC_CHECK_PROG(LIBTOOL, libtool, libtool, , [$pathtmp])
+NMH_PROG_GNU_LIBTOOL
+
 dnl Check for lorder and tsort commands
 AC_CHECK_PROG(LORDER, lorder, lorder, no)dnl
 AC_CHECK_PROG(TSORT, tsort, tsort, no)dnl
@@ -165,6 +208,12 @@ if test x$ac_cv_prog_LORDER != xlorder -o x$ac_cv_prog_TSORT != xtsort; then
   TSORT=cat
   AC_SUBST(LORDER)dnl
   AC_SUBST(TSORT)dnl
+dnl Mac OS X has lorder, but sh is too broken for it to work
+dnl elif test -z "`lorder config/config.c 2>&1 | grep config/config.c`" ; then
+dnl   LORDER=echo
+dnl   TSORT=cat
+dnl   AC_SUBST(LORDER)dnl
+dnl   AC_SUBST(TSORT)dnl
 fi
 
 dnl Look for `ls'
@@ -223,7 +272,7 @@ else
 fi])
  
 if test "$nmh_cv_attvibug" = yes; then
-  AC_DEFINE(ATTVIBUG)
+  AC_DEFINE(ATTVIBUG)dnl
 fi
 
 dnl ----------------------------------------------------------
@@ -246,7 +295,7 @@ dnl See whether the mail spool directory is world-writable.
 if test "$lspath" != "no" -a "$cutpath" != "no"; then
   AC_CACHE_CHECK(whether the mail spool is world-writable, 
                 nmh_cv_mailspool_world_writable,
-  [if test "`$lspath -dl $mailspool | $cutpath -c9`" = "-"; then
+  [if test "`$lspath -dlL $mailspool | $cutpath -c9`" = "-"; then
     nmh_cv_mailspool_world_writable=no
   else
     nmh_cv_mailspool_world_writable=yes
@@ -256,23 +305,16 @@ 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 do we really need both of these?
-  AC_DEFINE(MAILGROUP)
+  AC_DEFINE(MAILGROUP)dnl
   SETGID_MAIL=1
 fi
 AC_SUBST(SETGID_MAIL)dnl
 
-dnl see if we can determine which group owns the mail spool dir
+dnl Use ls to see which group owns the mail spool directory.
 AC_CACHE_CHECK(what group owns the mail spool, nmh_cv_ls_mail_grp,
-[nmh_cv_ls_mail_grp=`$lspath -d $nmh_cv_ls_grpopt $mailspool |$AWK '{print $4}'`
- dnl Should we just set it to whatever ls reports, rather than only allowing
- dnl certain values...?
- if test x$nmh_cv_ls_mail_grp = xmail; then
-   MAIL_SPOOL_GRP="mail"
- elif test x$nmh_cv_ls_mail_grp = xwheel; then
-   MAIL_SPOOL_GRP="wheel"
- else
-   MAIL_SPOOL_GRP="'0'"
- fi])
+[nmh_cv_ls_mail_grp=`$lspath -dL $nmh_cv_ls_grpopt $mailspool|$AWK '{print $4}'`
+])
+MAIL_SPOOL_GRP=$nmh_cv_ls_mail_grp
 AC_SUBST(MAIL_SPOOL_GRP)dnl
 
 dnl ------------------
@@ -285,9 +327,10 @@ AC_HEADER_SYS_WAIT
 AC_HEADER_STAT
 AC_CHECK_HEADERS(string.h memory.h stdlib.h unistd.h errno.h fcntl.h \
                  limits.h crypt.h termcap.h termio.h termios.h locale.h \
-                 sys/param.h sys/time.h sys/utsname.h arpa/inet.h \
+                 netdb.h sys/param.h sys/time.h sys/utsname.h arpa/inet.h \
                  arpa/ftp.h)
 
+
 AC_CACHE_CHECK(POSIX termios, nmh_cv_sys_posix_termios,
 [AC_TRY_LINK([#include <sys/types.h>
 #include <unistd.h>
@@ -321,6 +364,15 @@ if test $nmh_cv_header_termios_h_tiocgwinsz = no; then
   fi
 fi
  
+dnl
+dnl Checks for _IO_write_ptr. A Linuxism used by nmh on linux. We
+dnl really use a whole set of them, but this check should be
+dnl sufficient.
+dnl
+AC_CHECK_HEADER(libio.h, [
+  AC_EGREP_HEADER(_IO_write_ptr, libio.h, [
+    AC_DEFINE(LINUX_STDIO) ]) ]) 
+
 AC_CHECK_HEADER([sys/ptem.h], AC_DEFINE(WINSIZE_IN_PTEM))
 
 dnl ---------------
@@ -329,7 +381,12 @@ dnl ---------------
 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)
+               sighold sigrelse writev lstat uname tzset killpg mkstemp \
+               sethostent)
+
+dnl solaris screws this up
+AC_CHECK_FUNC(gethostbyname, [AC_DEFINE(HAVE_GETHOSTBYNAME)],
+  AC_CHECK_LIB(nsl, gethostbyname, [AC_DEFINE(HAVE_GETHOSTBYNAME)] ) )
 
 dnl sigsetjmp may be a macro
 AC_MSG_CHECKING(for sigsetjmp)
@@ -338,6 +395,26 @@ AC_TRY_LINK([#include <setjmp.h>], [sigsetjmp((void *)0, 0);],
 
 AC_REPLACE_FUNCS(snprintf strerror strdup)
 
+dnl Look for the initgroups() declaration.  On AIX 4.[13], Solaris 4.1.3, and
+dnl ULTRIX 4.2A the function is defined in libc but there's no declaration in
+dnl any system header.  
+dnl
+dnl On Solaris 2.[456], the declaration is in <grp.h>.  On HP-UX 9-11 and
+dnl (reportedly) FreeBSD 3.[23], it's in <unistd.h>.  Any other locations we
+dnl need to check? 
+AC_EGREP_HEADER(initgroups, grp.h, AC_DEFINE(INITGROUPS_HEADER, <grp.h>),
+                AC_EGREP_HEADER(initgroups, unistd.h, 
+                                AC_DEFINE(INITGROUPS_HEADER, <unistd.h>)))
+
+dnl On AIX 4.1, snprintf() is defined in libc.a but there's no prototype in
+dnl <stdio.h> or elsewhere.  Apparently it's not officially supported (though it
+dnl seems to work perfectly and IBM apparently uses it in internal code).
+dnl Anyhow, if we omit our own snprintf() and vsnprintf() prototypes when we
+dnl HAVE_SNPRINTF, we get a billion warnings at compile time.  Use the C
+dnl preprocessor to preprocess stdio.h and make sure that there's actually a 
+dnl prototype. 
+AC_EGREP_HEADER(snprintf, stdio.h, AC_DEFINE(HAVE_SNPRINTF_PROTOTYPE))
+
 dnl -------------------
 dnl CHECK FOR LIBRARIES
 dnl -------------------
@@ -374,8 +451,8 @@ AC_CHECK_HEADERS(db1/ndbm.h)
 dnl ----------------
 dnl CHECK FOR HESIOD
 dnl ----------------
-if test x$with_hesiod != x -a x$with_hesiod != xno; then
-  if test x$with_hesiod != xyes; then
+if test x"$with_hesiod" != x -a x"$with_hesiod" != x"no"; then
+  if test x"$with_hesiod" != x"yes"; then
     HESIOD_INCLUDES="-I$with_hesiod/include"
     HESIOD_LIBS="-L$with_hesiod/lib"
   fi
@@ -390,8 +467,8 @@ AC_SUBST(HESIOD_LIBS)dnl
 dnl ----------------------------------
 dnl CHECK FOR KRB4 (Kerberos4 support)
 dnl ----------------------------------
-if test x$with_krb4 != x -a x$with_krb4 != xno; then
-  if test x$with_krb4 != xyes; then
+if test x"$with_krb4" != x -a x"$with_krb4" != x"no"; then
+  if test x"$with_krb4" != x"yes"; then
     KRB4_INCLUDES="-I$with_krb4/include"
     if test -d "$with_krb4/include/kerberosIV"; then
       KRB4_INCLUDES="$KRB4_INCLUDES -I$with_krb4/include/kerberosIV"
@@ -573,29 +650,21 @@ case "$target_os" in
     AC_DEFINE(SVR4)
     ;;
   sunos4*)
-    AC_DEFINE(BIND)
     AC_DEFINE(BSD42)
     ;;
-  linux*)
-    AC_DEFINE(LINUX_STDIO)
-    ;;
   freebsd*)  
-    AC_DEFINE(BIND)
     AC_DEFINE(BSD42)
     AC_DEFINE(BSD44)
     ;;
   netbsd*)
-    AC_DEFINE(BIND)
     AC_DEFINE(BSD42)
     AC_DEFINE(BSD44)
     ;;
   openbsd*)
-    AC_DEFINE(BIND)
     AC_DEFINE(BSD42)
     AC_DEFINE(BSD44)
     ;;
   bsd/os*)
-    AC_DEFINE(BIND)
     AC_DEFINE(BSD42)
     AC_DEFINE(BSD44)
     ;;
@@ -616,6 +685,7 @@ AC_OUTPUT(Makefile config/Makefile h/Makefile sbr/Makefile uip/Makefile \
           etc/Makefile man/Makefile, \
           [test -z "$CONFIG_HEADERS" || echo > stamp-h])
 
+dnl Umm, what's the point of these assignments??  -- <dan-nmh@dilvish.speed.net>
 eval "nmhbin=${bindir}";         eval "nmhbin2=${nmhbin}"
 eval "nmhsysconf=${sysconfdir}"; eval "nmhsysconf2=${nmhsysconf}"
 eval "nmhlib=${libdir}";         eval "nmhlib2=${nmhlib}"
@@ -624,17 +694,19 @@ eval "nmhman=${mandir}"
 echo "
 nmh configuration
 -----------------
-nmh version               : ${VERSION}
-target os                 : ${target}
-compiler                  : ${CC}
-compiler flags            : ${CFLAGS}
-linker flags              : ${LDFLAGS}
-source code location      : ${srcdir}
-binary install path       : ${nmhbin2}
-libary install path       : ${nmhlib2}
-config files install path : ${nmhsysconf2}
-man page install path     : ${nmhman}
-transport system          : ${MTS}
-default editor            : ${editorpath}
-default pager             : ${pagerpath}"
+nmh version                : ${VERSION}
+target os                  : ${target}
+compiler                   : ${CC}
+compiler flags             : ${CFLAGS}
+linker flags               : ${LDFLAGS}
+source code location       : ${srcdir}
+binary install path        : ${nmhbin2}
+libary install path        : ${nmhlib2}
+config files install path  : ${nmhsysconf2}
+man page install path      : ${nmhman}
+transport system           : ${MTS}
+default smtp servers       : ${smtpservers}
+default editor             : ${editorpath}
+default pager              : ${pagerpath}
+email address masquerading : ${masquerade}"
 echo ""