AC_INIT(h/nmh.h)
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_PROG_AWK dnl Check for mawk,gawk,nawk, then awk
AC_PROG_LEX dnl Check for lex/flex
+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
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 `sendmail'
-pathtmp=/usr/lib:/usr/sbin:/usr/etc:/usr/ucblib:/usr/bin:/bin
-AC_PATH_PROG(sendmailpath, sendmail, no, [$pathtmp])
+dnl Look for `ls'
+pathtmp=/usr/bin:/bin:/usr/local/bin:/usr/xpg4/bin:/usr/ucb
+AC_PATH_PROG(lspath, ls, no, [$pathtmp])
+
+dnl See how we get ls to display the owner and the group
+if test "$lspath" != "no"; then
+ AC_CACHE_CHECK(how to get ls to show us the group ownership of a file,
+ nmh_cv_ls_grpopt,
+ [if test x"`$lspath -dl / | $AWK '{print $9}'`" = x"/"; then
+ dnl There were 9 parameters, so unless this is a really bizarre, nonstandard
+ dnl ls, it would seem -l gave us both the user and group. On this type of
+ dnl ls, -g makes _only_ the group be displayed (and not the user).
+ nmh_cv_ls_grpopt="-l"
+ else
+ dnl Looks like -l only gave us the user, so we need -g to get the group too.
+ nmh_cv_ls_grpopt="-lg"
+ fi])
+fi
dnl Look for `more'
pathtmp=/usr/bin:/bin:/usr/ucb:/usr/local/bin
fi
AC_SUBST(pagerpath)dnl
+dnl Look for `sendmail'
+pathtmp=/usr/lib:/usr/sbin:/usr/etc:/usr/ucblib:/usr/bin:/bin
+AC_PATH_PROG(sendmailpath, sendmail, no, [$pathtmp])
+
dnl Look for `vi'
pathtmp=/usr/bin:/bin:/usr/ucb:/usr/local/bin
AC_PATH_PROG(vipath, vi, no, [$pathtmp])
AC_DEFINE(ATTVIBUG)
fi
-dnl ---------------
-dnl FIND MAIL SPOOL
-dnl ---------------
+dnl ----------------------------------------------------------
+dnl FIND MAIL SPOOL AND SEE IF WE NEED TO MAKE inc SETGID MAIL
+dnl ----------------------------------------------------------
AC_CACHE_CHECK(where mail spool is located, nmh_cv_mailspool,
[for mailspool in /var/mail dnl
/var/spool/mail dnl
mailspool=$nmh_cv_mailspool
AC_SUBST(mailspool)dnl
+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 -dlL $mailspool | $cutpath -c9`" = "-"; then
+ nmh_cv_mailspool_world_writable=no
+ else
+ nmh_cv_mailspool_world_writable=yes
+ 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 do we really need both of these?
+ 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
+AC_CACHE_CHECK(what group owns the mail spool, nmh_cv_ls_mail_grp,
+[nmh_cv_ls_mail_grp=`$lspath -dL $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])
+AC_SUBST(MAIL_SPOOL_GRP)dnl
+
dnl ------------------
dnl CHECK HEADER FILES
dnl ------------------
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>
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 ---------------
dnl CHECK FUNCTIONS
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 \
- sigsetjmp)
+ sighold sigrelse writev lstat uname tzset killpg mkstemp \
+ sethostent)
+
+dnl solaris screws ths 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)
+AC_TRY_LINK([#include <setjmp.h>], [sigsetjmp((void *)0, 0);],
+ [AC_DEFINE(HAVE_SIGSETJMP) AC_MSG_RESULT(yes)], AC_MSG_RESULT(no))
AC_REPLACE_FUNCS(snprintf strerror strdup)
+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 -------------------
+dnl Check location of modf
+AC_CHECK_FUNC(modf, , AC_CHECK_LIB(m, modf))
+
dnl Checks for network libraries (nsl, socket)
AC_CHECK_NETLIBS
done
AC_SUBST(TERMLIB)dnl
+
dnl --------------
dnl CHECK FOR NDBM
dnl --------------
AC_CHECK_LIB(dbm, dbm_open)))
dnl ----------------
+dnl CHECK FOR NDBM.H
+dnl ----------------
+AC_CHECK_HEADERS(db1/ndbm.h)
+
+dnl ----------------
dnl CHECK FOR HESIOD
dnl ----------------
if test x$with_hesiod != x -a x$with_hesiod != xno; then
AC_SUBST(SIGNAL_H)dnl
dnl ----------------
+dnl OS SPECIFIC DEFINES
+dnl ----------------
+case "$target_os" in
+
+ solaris2*)
+ AC_DEFINE(SYS5)
+ AC_DEFINE(SVR4)
+ ;;
+ irix*)
+ AC_DEFINE(SYS5)
+ AC_DEFINE(SVR4)
+ ;;
+ osf*)
+ AC_DEFINE(SYS5)
+ AC_DEFINE(SVR4)
+ ;;
+ aix*)
+ AC_DEFINE(SYS5)
+ AC_DEFINE(SVR4)
+ ;;
+ sunos4*)
+ AC_DEFINE(BSD42)
+ ;;
+ freebsd*)
+ AC_DEFINE(BSD42)
+ AC_DEFINE(BSD44)
+ ;;
+ netbsd*)
+ AC_DEFINE(BSD42)
+ AC_DEFINE(BSD44)
+ ;;
+ openbsd*)
+ AC_DEFINE(BSD42)
+ AC_DEFINE(BSD44)
+ ;;
+ bsd/os*)
+ AC_DEFINE(BSD42)
+ AC_DEFINE(BSD44)
+ ;;
+ sco5*)
+ AC_DEFINE(SYS5)
+ AC_DEFINE(SCO_5_STDIO)
+ ;;
+esac
+
+
+dnl ----------------
dnl OUTPUT MAKEFILES
dnl ----------------
AC_OUTPUT(Makefile config/Makefile h/Makefile sbr/Makefile uip/Makefile \
nmh configuration
-----------------
nmh version : ${VERSION}
+target os : ${target}
compiler : ${CC}
compiler flags : ${CFLAGS}
linker flags : ${LDFLAGS}