X-Git-Url: http://git.marmaro.de/?p=mmh;a=blobdiff_plain;f=configure.in;h=d3f2c084ee2131471de0e0ba26e0de37e647d726;hp=c153c944ff50d3594f9137fbf3fb3d1b95232794;hb=6918a091f788f34d97c176b1cfa1da8d9e463c6c;hpb=045b9601403a216c400642229f2b291f85f88f7d diff --git a/configure.in b/configure.in index c153c94..d3f2c08 100644 --- a/configure.in +++ b/configure.in @@ -9,24 +9,125 @@ 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 -------------------------- +dnl CHECK COMMAND LINE OPTIONS +dnl -------------------------- + +dnl Do you want client-side support for apop? +AC_ARG_ENABLE(apop, +[ --enable-apop enable client-side support for POP3 and APOP]) +if test x"$enable_apop" = x"yes"; then + AC_DEFINE(APOP)dnl + APOPLIB=md5.o + enable_pop=yes +fi +AC_SUBST(APOPLIB)dnl + +dnl Do you want to debug nmh? +undefine([debug])dnl +AC_ARG_ENABLE(debug, +[ --enable-debug enable nmh code debugging]) +dnl The old redundant --enable-nmh-debug is deprecated and undocumented. +if test x"$enable_nmh_debug" = x"yes"; then + enable_debug=yes +fi + +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 up to 3 types of 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 + +dnl Do you want mhe support? +undefine([mhe])dnl +AC_ARG_ENABLE(mhe, +[ --enable-mhe enable mhe support (DEFAULT)]) + +dnl mhe support is on by default, so define it unless --disable-mhe or the +dnl deprecated, undocumented --disable-nmh-mhe are specified. +if test x"$enable_mhe" != x"no" -a x"$enable_nmh_mhe" != x"no"; then + AC_DEFINE(MHE)dnl +fi + +dnl Do you want client-side support for pop? +undefine([pop])dnl +AC_ARG_ENABLE(pop, +[ --enable-pop enable client-side support for plain POP3]) +dnl The old redundant --enable-nmh-pop is deprecated and undocumented. +if test x"$enable_nmh_pop" = x"yes"; then + enable_pop=yes +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" != x"no"; then + enable_pop=yes + AC_DEFINE(KPOP)dnl + AC_DEFINE(KPOP_PRINCIPAL, "pop")dnl +fi + +dnl After we know if we're including apop and kpop support, do pop stuff +if test x"$enable_pop" = x"yes"; then + AC_DEFINE(POP)dnl + POPLIB=popsbr.o + POPSED='/^%nmhbeginpop%/d;/^%nmhendpop%/d' +else + POPSED='/^%nmhbeginpop%/,/^%nmhendpop%/d' +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]) +[ --with-mts=MTS specify the mail transport agent/service]) -if test x$with_mts = xsmtp; then +if test x"$with_mts" = x"smtp"; then MTS="smtp" MTSLIB="mts/smtp/libsmtp.a" AC_DEFINE(SMTPMTS)dnl -elif test x$with_mts = xsendmail; then +elif test x"$with_mts" = x"sendmail"; then MTS="sendmail" MTSLIB="mts/sendmail/libsend.a" AC_DEFINE(SENDMTS)dnl @@ -36,17 +137,8 @@ else 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 +AC_SUBST(MTS)dnl +AC_SUBST(MTSLIB)dnl dnl What should be the default pager? undefine([pager])dnl @@ -57,50 +149,17 @@ if test -n "$with_pager"; then pagerpath="$with_pager" fi -dnl Do you want mhe support? -undefine([nmh-mhe])dnl -AC_ARG_ENABLE(nmh-mhe, -[ --enable-nmh-mhe enable mhe support (DEFAULT)]) - -dnl mhe support is on by default, so define it unless -dnl explicitly disabled. -if test x$enable_nmh_mhe != xno; then - AC_DEFINE(MHE)dnl -fi - -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 - AC_DEFINE(POP)dnl - POPLIB=popsbr.o - POPSED='/^%nmhbeginpop%/d;/^%nmhendpop%/d' +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 - POPSED='/^%nmhbeginpop%/,/^%nmhendpop%/d' -fi -AC_SUBST(POPLIB)dnl -AC_SUBST(POPSED)dnl - -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 - AC_DEFINE(KPOP)dnl - AC_DEFINE(KPOP_PRINCIPAL, "pop")dnl + smtpservers="localhost" 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 -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(smtpservers)dnl dnl ---------------------------------------------------- dnl Default location is /usr/local/nmh/{bin,etc,lib,man} @@ -113,7 +172,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_debug" = x"yes"; then test -z "$LDFLAGS" && LDFLAGS=-g fi @@ -124,7 +183,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_debug" = x"yes"; then if test -n "$GCC"; then test -z "$CFLAGS" && CFLAGS="-Wall -g" || CFLAGS="$CFLAGS -Wall -g" else @@ -133,7 +192,7 @@ if test -n "$auto_cflags"; then else test -z "$LDFLAGS" && LDFLAGS=-s if test -n "$GCC"; then - test -z "$CFLAGS" && CFLAGS=-O2 || CFLAGS="$CFLAGS -O2" + test -z "$CFLAGS" && CFLAGS="-Wall -O2" || CFLAGS="$CFLAGS -Wall -O2" else test -z "$CFLAGS" && CFLAGS=-O || CFLAGS="$CFLAGS -O" fi @@ -155,6 +214,30 @@ 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) +AC_SUBST(LINTFLAGS) + +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,12 +248,33 @@ 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' 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 AC_PATH_PROG(morepath, more, no, [$pathtmp]) @@ -208,7 +312,7 @@ else fi]) if test "$nmh_cv_attvibug" = yes; then - AC_DEFINE(ATTVIBUG) + AC_DEFINE(ATTVIBUG)dnl fi dnl ---------------------------------------------------------- @@ -231,34 +335,45 @@ 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 fi]) fi -dnl see if we can determine which group owns the mail spool dir -undefine([nmh_grp_mailspool])dnl -AC_CACHE_CHECK(what group owns the mail spool, nmh_group_mailspool, -[ nmh_group_mailspool=`ls -lgd $mailspool | awk '{print $4}'` - if test x$nmh_group_mailspool = xmail; then - MAILGROUP="mail" - elif test x$nmh_group_mailspool = xwheel; then - MAILGROUP="wheel" - else - MAILGROUP="'0'" - fi]) -AC_SUBST(MAILGROUP) +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 it's not, we need to #define MAILGROUP to 1 and make inc setgid mail. -if test "$nmh_cv_mailspool_world_writable" = "no"; then -dnl do we really need both of these? - AC_DEFINE(MAILGROUP) +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 fi AC_SUBST(SETGID_MAIL)dnl +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 -dL $nmh_cv_ls_grpopt $mailspool|$AWK '{print $4}'` +]) +MAIL_SPOOL_GRP=$nmh_cv_ls_mail_grp +AC_SUBST(MAIL_SPOOL_GRP)dnl + dnl ------------------ dnl CHECK HEADER FILES dnl ------------------ @@ -269,9 +384,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 #include @@ -305,6 +421,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 --------------- @@ -313,7 +438,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 getutent) + +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) @@ -322,6 +452,26 @@ AC_TRY_LINK([#include ], [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 . On HP-UX 9-11 and +dnl (reportedly) FreeBSD 3.[23], it's in . Any other locations we +dnl need to check? +AC_EGREP_HEADER(initgroups, grp.h, AC_DEFINE(INITGROUPS_HEADER, ), + AC_EGREP_HEADER(initgroups, unistd.h, + AC_DEFINE(INITGROUPS_HEADER, ))) + +dnl On AIX 4.1, snprintf() is defined in libc.a but there's no prototype in +dnl 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 ------------------- @@ -331,17 +481,12 @@ AC_CHECK_FUNC(modf, , AC_CHECK_LIB(m, modf)) dnl Checks for network libraries (nsl, socket) AC_CHECK_NETLIBS -dnl Check for bug in libraries such that ruserpass -dnl needs to be linked as _ruserpass. -AC_CHECK_RUSERPASS - termcap_curses_order="termcap curses ncurses" for lib in $termcap_curses_order; do AC_CHECK_LIB(${lib}, tgetent, [TERMLIB="-l$lib"; break]) done AC_SUBST(TERMLIB)dnl - dnl -------------- dnl CHECK FOR NDBM dnl -------------- @@ -351,10 +496,15 @@ AC_CHECK_FUNC(dbm_open, , 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 - 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 @@ -369,8 +519,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" @@ -552,29 +702,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) ;; @@ -589,31 +731,53 @@ dnl ---------------- dnl OUTPUT MAKEFILES dnl ---------------- AC_OUTPUT(Makefile config/Makefile h/Makefile sbr/Makefile uip/Makefile \ - zotnet/Makefile zotnet/mts/Makefile zotnet/tws/Makefile \ - zotnet/mf/Makefile zotnet/bboards/Makefile mts/Makefile \ - mts/smtp/Makefile mts/sendmail/Makefile mts/mmdf/Makefile \ - etc/Makefile man/Makefile, \ + zotnet/Makefile zotnet/mts/Makefile \ + mts/Makefile mts/smtp/Makefile \ + mts/sendmail/Makefile mts/mmdf/Makefile etc/Makefile \ + docs/Makefile man/Makefile, \ [test -z "$CONFIG_HEADERS" || echo > stamp-h]) +dnl Umm, what's the point of these assignments?? -- eval "nmhbin=${bindir}"; eval "nmhbin2=${nmhbin}" eval "nmhsysconf=${sysconfdir}"; eval "nmhsysconf2=${nmhsysconf}" eval "nmhlib=${libdir}"; eval "nmhlib2=${nmhlib}" eval "nmhman=${mandir}" +pop_kinds=no +if test x"$enable_pop" = x"yes"; then + pop_kinds="yes (" + + if test x"$enable_apop" = x"yes"; then + pop_kinds="${pop_kinds}APOP " + fi + + if test x"$with_krb4" != x -a x"$with_krb4" != x"no"; then + pop_kinds="${pop_kinds}KPOP " + fi + + pop_kinds="${pop_kinds}POP3)" +fi + 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} +pop is enabled : ${pop_kinds}" echo "" + + +