X-Git-Url: http://git.marmaro.de/?a=blobdiff_plain;f=configure.in;h=8e8fb1c956a0c3fc4946d220257ebd02d9369b9b;hb=refs%2Ftags%2Fcvs-repository-moved-to-git;hp=2958b792b83a401243f8ecb7d88d3d1318ac5461;hpb=0f9c227e69da12f00f09fbbb0b84c2726b5c256b;p=mmh
diff --git a/configure.in b/configure.in
index 2958b79..8e8fb1c 100644
--- a/configure.in
+++ b/configure.in
@@ -4,10 +4,14 @@ dnl
dnl $Id$
dnl
-AC_INIT(h/nmh.h)
+dnl Move this up a bit
+AC_PREREQ(2.61)
+
+AC_INIT(nmh, m4_normalize(m4_include([VERSION])))
+AC_CONFIG_SRCDIR(h/nmh.h)
AC_CONFIG_HEADER(config.h)
-AC_CANONICAL_SYSTEM
+AC_CANONICAL_TARGET
dnl ---------------------
dnl define a macro or two
@@ -23,114 +27,130 @@ if test -n "$LIBTOOL" ; then
fi
] )
+echo "configuring for AC_PACKAGE_NAME-AC_PACKAGE_VERSION"
+AC_SUBST(VERSION,AC_PACKAGE_VERSION)dnl
-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 What date of nmh are we building?
+DATE=`cat ${srcdir}/DATE`
+echo "configuring for nmh dated $DATE"
+AC_SUBST(DATE)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])
+AC_ARG_ENABLE(apop, AS_HELP_STRING([--enable-apop],
+ [enable client-side support for POP3 and APOP]))
if test x"$enable_apop" = x"yes"; then
- AC_DEFINE(APOP)dnl
+ AC_DEFINE(APOP, 1,
+ [Define to compile client-side support for apop into inc and msgchk.])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])
+ AS_HELP_STRING([--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]],
+ AS_HELP_STRING([--enable-masquerade='draft_from mmailid username_extension'],
+ [enable up to 3 types of address masquerading]),
[if test x"$enable_masquerade" = x"yes"; then
masquerade="draft_from mmailid username_extension"
else
masquerade="$enable_masquerade"
- fi])
+ fi],
+ masquerade="draft_from mmailid username_extension")
AC_SUBST(masquerade)dnl
dnl Do you want mhe support?
-undefine([mhe])dnl
AC_ARG_ENABLE(mhe,
-[ --enable-mhe enable mhe support (DEFAULT)])
+ AS_HELP_STRING([--disable-mhe],[disable mhe support]))
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
+ AC_DEFINE(MHE, 1,
+ [Define to compile in support for the Emacs front-end mh-e.])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])
+ AS_HELP_STRING([--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 to disable use of locale functions
+AH_TEMPLATE([LOCALE],
+[Undefine if you don't want locale features. By default this is defined.])
+AC_ARG_ENABLE([locale],
+AC_HELP_STRING([--disable-locale], [turn off locale features]),
+[if test x$enableval = xyes; then
+ AC_DEFINE(LOCALE)
+fi],
+AC_DEFINE(LOCALE)
+)
+
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=
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
+AC_ARG_WITH(cyrus-sasl, AS_HELP_STRING([--with-cyrus-sasl],
+ [Enable SASL support via the Cyrus SASL library]))
+if test x"$with_cyrus_sasl" != x -a x"$with_cyrus_sasl" != x"no"; then
+ AC_DEFINE(CYRUS_SASL, 1,
+ [Define to use the Cyrus SASL library for authentication of POP and SMTP.])dnl
+ sasl_support=yes
+else
+ sasl_support=no
+fi
+
+dnl Do you want client-side support for encryption with TLS?
+AC_ARG_WITH(tls, AS_HELP_STRING([--with-tls], [Enable TLS support]))
+if test x"$with_tls" != x -a x"$with_tls" != x"no"; then
+ AC_DEFINE(TLS_SUPPORT, 1, [Support TLS for session encryption.])dnl
+ tls_support=yes
+else
+ tls_support=no
fi
dnl What should be the default editor?
-undefine([editor])dnl
AC_ARG_WITH(editor,
-[ --with-editor=EDITOR specify the default editor])
+ AS_HELP_STRING([--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: ,)])
+ AS_HELP_STRING([--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
+AC_DEFINE_UNQUOTED(BACKUP_PREFIX, "$backup_prefix",
+ [The prefix that is prepended to the name of message files when they are "removed" by rmm. This should typically be `,' or `#'.])dnl
dnl Do you want support for hesiod
AC_ARG_WITH(hesiod,
-[ --with-hesiod=PREFIX specify location of Hesiod])
+ AS_HELP_STRING([--with-hesiod=DIR],[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
+ AC_DEFINE(HESIOD,1,[Define this to compile support for using Hesiod.])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
+ AC_DEFINE(POP, 1,
+ [Define this to compile client-side support for pop into inc and msgchk.])dnl
POPLIB=popsbr.o
POPSED='/^%nmhbeginpop%/d;/^%nmhendpop%/d'
else
@@ -139,10 +159,32 @@ fi
AC_SUBST(POPLIB)dnl
AC_SUBST(POPSED)dnl
+dnl What method of locking to use?
+AC_ARG_WITH(locking,
+ AS_HELP_STRING([--with-locking=@<:@dot|fcntl|flock|lockf@:>@],
+ [specify the file locking method]))
+
+if test x"$with_locking" = x"dot"; then
+ LOCKTYPE="dot"
+ AC_DEFINE(DOT_LOCKING, 1, [Define to use dot based file locking.])dnl
+elif test x"$with_locking" = x"flock"; then
+ LOCKTYPE="flock"
+ AC_DEFINE(FLOCK_LOCKING, 1, [Define to use flock() based locking.])dnl
+elif test x"$with_locking" = x"lockf"; then
+ LOCKTYPE="lockf"
+ AC_DEFINE(LOCKF_LOCKING, 1, [Define to use lockf() based locking.])dnl
+elif test x"$with_locking" = x"fcntl"; then
+ LOCKTYPE="fcntl"
+ AC_DEFINE(FCNTL_LOCKING, 1, [Define to use fnctl() based locking.])dnl
+else
+ LOCKTYPE="dot"
+ AC_DEFINE(DOT_LOCKING)dnl
+fi
+
dnl What method of posting should post use?
-undefine([mts])dnl
AC_ARG_WITH(mts,
-[ --with-mts=MTS specify the default mail transport agent/service])
+ AS_HELP_STRING([--with-mts=@<:@smtp|sendmail@:>@],
+ [specify the default mail transport agent/service]))
if test x"$with_mts" = x"smtp"; then
MTS="smtp"
@@ -154,22 +196,21 @@ fi
AC_SUBST(MTS)dnl
dnl Both the smtp and sendmail mail transport services use the smtp code
-AC_DEFINE(SMTPMTS)dnl
+AC_DEFINE(SMTPMTS, 1,
+ [Define if you want SMTP (simple mail transport protocol) support.])dnl
dnl What should be the default pager?
-undefine([pager])dnl
AC_ARG_WITH(pager,
-[ --with-pager=PAGER specify the default pager])
+ AS_HELP_STRING([--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]])
+ AS_HELP_STRING([--with-smtpservers='SMTPSERVER1@<:@ SMTPSERVER2...@:>@'],
+ [specify the default SMTP server(s) @<:@localhost@:>@]))
if test -n "$with_smtpservers"; then
smtpservers="$with_smtpservers"
else
@@ -194,21 +235,45 @@ fi
AC_PROG_CC
+AC_CACHE_CHECK(whether compiler supports -Wno-pointer-sign, nmh_cv_has_noptrsign,
+[nmh_saved_cflags="$CFLAGS"
+ CFLAGS="$CFLAGS -Wno-pointer-sign"
+ AC_TRY_COMPILE([],[],nmh_cv_has_noptrsign=yes,nmh_cv_has_noptrsign=no)
+ CFLAGS="$nmh_saved_cflags"])
+
dnl if the user hasn't specified CFLAGS, then
dnl if compiler is gcc, then
dnl use -O2 and some warning flags
dnl else use -O
+dnl We use -Wall; if the compiler supports it we also use -Wno-pointer-sign,
+dnl because gcc 4 now produces a lot of new warnings which are probably mostly
+dnl spurious and which in any case we don't want to deal with now.
+if test "$nmh_cv_has_noptrsign" = "yes"; then
+ nmh_gcc_warnflags="-Wall -Wno-pointer-sign"
+else
+ nmh_gcc_warnflags="-Wall"
+fi
+
if test -n "$auto_cflags"; then
if test x"$enable_debug" = x"yes"; then
if test -n "$GCC"; then
- test -z "$CFLAGS" && CFLAGS="-Wall -g" || CFLAGS="$CFLAGS -Wall -g"
+ test -z "$CFLAGS" && CFLAGS="$nmh_gcc_warnflags -g" || CFLAGS="$CFLAGS $nmh_gcc_warnflags -g"
else
test -z "$CFLAGS" && CFLAGS=-g || CFLAGS="$CFLAGS -g"
fi
else
- test -z "$LDFLAGS" && LDFLAGS=-s
+ if test -z "$LDFLAGS"; then
+ case "$build_os" in
+ darwin*)
+ LDFLAGS=
+ ;;
+ *)
+ LDFLAGS=-s
+ ;;
+ esac
+ fi
if test -n "$GCC"; then
- test -z "$CFLAGS" && CFLAGS="-Wall -O2" || CFLAGS="$CFLAGS -Wall -O2"
+ test -z "$CFLAGS" && CFLAGS="$nmh_gcc_warnflags -O2" || CFLAGS="$CFLAGS $nmh_gcc_warnflags -O2"
else
test -z "$CFLAGS" && CFLAGS=-O || CFLAGS="$CFLAGS -O"
fi
@@ -318,11 +383,11 @@ 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])
+AC_PATH_PROG(sendmailpath, sendmail, /usr/sbin/sendmail, [$pathtmp])
dnl Look for `vi'
pathtmp=/usr/bin:/bin:/usr/ucb:/usr/local/bin
-AC_PATH_PROG(vipath, vi, no, [$pathtmp])
+AC_PATH_PROG(vipath, vi, /bin/vi, [$pathtmp])
dnl If editor is not specified yet,
dnl then use `vi' as the default.
@@ -331,20 +396,6 @@ if test -z "$editorpath"; then
fi
AC_SUBST(editorpath)dnl
-dnl Check for broken vi
-AC_CACHE_CHECK(for broken vi, nmh_cv_attvibug,
-[if echo 'r /nonexist-file
-q' | ex > /dev/null 2>&1
-then
- nmh_cv_attvibug=no
-else
- nmh_cv_attvibug=yes
-fi])
-
-if test "$nmh_cv_attvibug" = yes; then
- AC_DEFINE(ATTVIBUG)dnl
-fi
-
dnl ----------------------------------------------------------
dnl FIND MAIL SPOOL AND SEE IF WE NEED TO MAKE inc SETGID MAIL
dnl ----------------------------------------------------------
@@ -390,9 +441,10 @@ 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
+if test x"$LOCKTYPE" = x"dot" -a 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
+ AC_DEFINE(MAILGROUP,1,
+ [Define to 1 if you need to make `inc' set-group-id because your mail spool is not world writable. There are no guarantees as to the safety of doing this, but this #define will add some extra security checks.])dnl
SETGID_MAIL=1
fi
AC_SUBST(SETGID_MAIL)dnl
@@ -407,49 +459,36 @@ AC_SUBST(MAIL_SPOOL_GRP)dnl
dnl ------------------
dnl CHECK HEADER FILES
dnl ------------------
+
+dnl On glibc we need to define at least the '_XOPEN_SOURCE' level of features,
+dnl or wchar.h doesn't declare a prototype for wcwidth(). But if we only define
+dnl that level then db.h won't compile. So we define _GNU_SOURCE which turns
+dnl on everything. Perhaps other OSes need some feature switch set to get wcwidth()
+dnl declared; if so they should have an entry added to this case statement.
+dnl NB that we must define this on the compiler command line, not in config.h,
+dnl because it must be set before any system header is included and there's no
+dnl portable way to make sure that files generated by lex include config.h
+dnl before system header files.
+
+case "$target_os" in
+ linux*)
+ # Like DEFS, but doesn't get stomped on by configure when using config.h:
+ OURDEFS="$OURDEFS -D_GNU_SOURCE"
+ ;;
+esac
+AC_SUBST(OURDEFS)
+
AC_HEADER_DIRENT
AC_HEADER_STDC
AC_HEADER_TIME
AC_HEADER_SYS_WAIT
AC_HEADER_STAT
+AC_HEADER_TIOCGWINSZ
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 \
- 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
-#include ],
-[/* SunOS 4.0.3 has termios.h but not the library calls. */
-tcgetattr(0, 0);],
- nmh_cv_sys_posix_termios=yes, nmh_cv_sys_posix_termios=no)])
-
-if test $nmh_cv_sys_posix_termios = yes; then
- AC_CACHE_CHECK(TIOCGWINSZ in termios.h,
- nmh_cv_header_termios_h_tiocgwinsz,
- [AC_TRY_LINK([#include
-#include ],
- [int x = TIOCGWINSZ;],
- nmh_cv_header_termios_h_tiocgwinsz=yes,
- nmh_cv_header_termios_h_tiocgwinsz=no)])
-else
- nmh_cv_header_termios_h_tiocgwinsz=no
-fi
-
-if test $nmh_cv_header_termios_h_tiocgwinsz = no; then
- AC_CACHE_CHECK(TIOCGWINSZ in sys/ioctl.h,
- nmh_cv_header_sys_ioctl_h_tiocgwinsz,
- [AC_TRY_LINK([#include
-#include ],
- [int x = TIOCGWINSZ;],
- 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)dnl
- fi
-fi
+ langinfo.h wchar.h wctype.h iconv.h netdb.h \
+ sys/param.h sys/time.h sys/utsname.h sys/stream.h \
+ arpa/inet.h arpa/ftp.h)
dnl
dnl Checks for _IO_write_ptr. A Linuxism used by nmh on linux. We
@@ -458,9 +497,14 @@ dnl sufficient.
dnl
AC_CHECK_HEADER(libio.h, [
AC_EGREP_HEADER(_IO_write_ptr, libio.h, [
- AC_DEFINE(LINUX_STDIO) ]) ])
+ AC_DEFINE(LINUX_STDIO,1,[Use the Linux _IO_*_ptr defines from .]) ]) ])
-AC_CHECK_HEADER([sys/ptem.h], AC_DEFINE(WINSIZE_IN_PTEM))
+AC_CHECK_HEADER([sys/ptem.h], AC_DEFINE(WINSIZE_IN_PTEM,1,
+ [Define to 1 if `struct winsize' requires .]),,
+[[#if HAVE_SYS_STREAM_H
+# include
+#endif
+]])
dnl ---------------
dnl CHECK FUNCTIONS
@@ -469,18 +513,16 @@ 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 getutent)
-
-dnl solaris screws this up
-AC_CHECK_FUNC(gethostbyname, [AC_DEFINE(HAVE_GETHOSTBYNAME)],
- AC_CHECK_LIB(nsl, gethostbyname, [AC_DEFINE(HAVE_GETHOSTBYNAME)] ) )
+ getutent nl_langinfo mbtowc wcwidth)
dnl sigsetjmp may be a macro
AC_MSG_CHECKING(for sigsetjmp)
-AC_TRY_LINK([#include ], [sigsetjmp((void *)0, 0);],
- [AC_DEFINE(HAVE_SIGSETJMP) AC_MSG_RESULT(yes)], AC_MSG_RESULT(no))
+AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include ]],
+ [[sigsetjmp((void *)0, 0);]])],[AC_DEFINE(HAVE_SIGSETJMP, 1,
+ [Define to 1 if you have the `sigsetjmp'.]) AC_MSG_RESULT(yes)],
+ [AC_MSG_RESULT(no)])
-AC_REPLACE_FUNCS(snprintf strerror strdup)
+AC_REPLACE_FUNCS(memmove 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
@@ -488,7 +530,8 @@ 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?
+dnl need to check?
+AH_TEMPLATE(INITGROUPS_HEADER, [Define to the header containing the declaration of `initgroups'.])
AC_EGREP_HEADER(initgroups, grp.h, AC_DEFINE(INITGROUPS_HEADER, ),
AC_EGREP_HEADER(initgroups, unistd.h,
AC_DEFINE(INITGROUPS_HEADER, )))
@@ -500,7 +543,15 @@ 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))
+AC_EGREP_HEADER(snprintf, stdio.h, AC_DEFINE(HAVE_SNPRINTF_PROTOTYPE,1,
+ [Define to 1 if has a prototype for snprintf().]))
+
+dnl Check for multibyte character set support
+if test "x$ac_cv_header_wchar_h" = "xyes" -a "x$ac_cv_header_wctype_h" = "xyes" \
+ -a "x$ac_cv_func_wcwidth" = "xyes" -a "x$ac_cv_func_mbtowc" = "xyes"; then
+ AC_DEFINE(MULTIBYTE_SUPPORT, 1,
+ [Define to enable support for multibyte character sets.])
+fi
dnl -------------------
dnl CHECK FOR LIBRARIES
@@ -517,18 +568,114 @@ for lib in $termcap_curses_order; do
done
AC_SUBST(TERMLIB)dnl
+dnl ---------------
+dnl CHECK FOR ICONV
+dnl ---------------
+
+dnl Find iconv. It may be in libiconv and may be iconv() or libiconv()
+if test "x$ac_cv_header_iconv_h" = "xyes"; then
+ AC_CHECK_FUNC(iconv, ac_found_iconv=yes, ac_found_iconv=no)
+ if test "x$ac_found_iconv" = "xno"; then
+ AC_CHECK_LIB(iconv, iconv, ac_found_iconv=yes)
+ if test "x$ac_found_iconv" = "xno"; then
+ AC_CHECK_LIB(iconv, libiconv, ac_found_iconv=yes)
+ fi
+ if test "x$ac_found_iconv" != "xno"; then
+ LIBS="-liconv $LIBS"
+ fi
+ else
+ dnl Handle case where there is a native iconv but iconv.h is from libiconv
+ AC_CHECK_DECL(_libiconv_version,
+ [ AC_CHECK_LIB(iconv, libiconv, LIBS="-liconv $LIBS") ],,
+ [ #include ])
+ fi
+fi
+if test "x$ac_found_iconv" = xyes; then
+ AC_DEFINE(HAVE_ICONV, 1, [Define if you have the iconv() function.])
+fi
+
+dnl Check if iconv uses const in prototype declaration
+if test "x$ac_found_iconv" = "xyes"; then
+ AC_CACHE_CHECK(for iconv declaration, ac_cv_iconv_const,
+ [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include
+ #include ]],
+ [[#ifdef __cplusplus
+ "C"
+ #endif
+ #if defined(__STDC__) || defined(__cplusplus)
+ size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);
+ #else
+ size_t iconv();
+ #endif]])],
+ [ac_cv_iconv_const=],
+ [ac_cv_iconv_const=const])])
+ AC_DEFINE_UNQUOTED([ICONV_CONST], $ac_cv_iconv_const,
+ [Define as const if the declaration of iconv() needs const.])
+fi
+
dnl --------------
dnl CHECK FOR NDBM
dnl --------------
-dnl Checks for ndbm
-AC_CHECK_FUNC(dbm_open, ,
- AC_CHECK_LIB(ndbm, dbm_open, ,
- AC_CHECK_LIB(dbm, dbm_open)))
-dnl ----------------
-dnl CHECK FOR NDBM.H
-dnl ----------------
-AC_CHECK_HEADERS(db1/ndbm.h)
+AC_ARG_WITH([ndbm],AS_HELP_STRING([--with-ndbm=ARG],[use -lARG to link with ndbm]),
+ [nmh_ndbm=$withval],[nmh_ndbm=autodetect])
+AC_ARG_WITH([ndbmheader],AS_HELP_STRING([--with-ndbmheader=ARG],[#include to use ndbm]),
+ [nmh_ndbmheader=$withval],[nmh_ndbmheader=autodetect])
+
+if test "$nmh_ndbm" = "autodetect"; then
+ if test "$nmh_ndbmheader" != "autodetect"; then
+ AC_MSG_ERROR([must specify both --with-ndbm and --with-ndbmheader or neither])
+ else
+
+ dnl There are at least four implementations of ndbm, and
+ dnl several of those can be in different places at the whim
+ dnl of the system integrator. A good summary of this mess
+ dnl can be found at http://www.unixpapa.com/incnote/dbm.html
+
+ dnl Classic ndbm with no library required (eg NetBSD): try this
+ dnl first so we don't accidentally link in a pointless but harmless
+ dnl library in one of the later ndbm.h+libfoo tests:
+ NMH_CHECK_NDBM(ndbm.h,,,
+ dnl Berkeley DBv2 emulating ndbm: header in db.h:
+ NMH_CHECK_NDBM(db.h,db,,
+ dnl Berkeley DBv1 emulating ndbm:
+ NMH_CHECK_NDBM(ndbm.h,db,,
+ NMH_CHECK_NDBM(ndbm.h,db1,,
+ dnl Classic ndbm:
+ NMH_CHECK_NDBM(ndbm.h,ndbm,,
+ dnl glibc2.1 systems put db1 in a subdir:
+ NMH_CHECK_NDBM(db1/ndbm.h,db1,,
+ dnl GNU gdbm emulating ndbm, with header possibly in gdbm/
+ dnl and possibly needing gbdm_compat library:
+ NMH_CHECK_NDBM(gdbm/ndbm.h,gdbm,,
+ NMH_CHECK_NDBM(gdbm/ndbm.h,gdbm_compat -lgdbm,,
+ NMH_CHECK_NDBM(ndbm.h,gdbm,,
+ NMH_CHECK_NDBM(ndbm.h,gdbm_compat -lgdbm))))))))))
+
+ fi
+else
+ dnl We don't really need to check that the user-specified values work,
+ dnl but it is a convenience to the user to bomb out early rather than
+ dnl after configure and half the compile process.
+ NMH_CHECK_NDBM([$nmh_ndbmheader],[$nmh_ndbm])
+fi
+
+if test "$nmh_ndbm_found" = "no"; then
+ AC_MSG_ERROR([could not find a working ndbm library/header combination])
+else
+ dnl Now export the lib/header to our makefile/config.h:
+ if test x"$nmh_ndbmheader" != x; then
+ AC_DEFINE_UNQUOTED(NDBM_HEADER, <$nmh_ndbmheader>,
+ [Define to the header containing the ndbm API prototypes.])
+ fi
+ if test x"$nmh_ndbm" != x; then
+ NDBM_LIBS="-l$nmh_ndbm"
+ else
+ NDBM_LIBS=
+ fi
+ AC_SUBST(NDBM_LIBS)
+fi
+
dnl ----------------
dnl CHECK FOR HESIOD
@@ -538,55 +685,39 @@ if test x"$with_hesiod" != x -a x"$with_hesiod" != x"no"; then
HESIOD_INCLUDES="-I$with_hesiod/include"
HESIOD_LIBS="-L$with_hesiod/lib"
fi
- AC_CHECK_FUNC(res_send, ,
- AC_CHECK_LIB(resolv, res_send))
- AC_CHECK_LIB(hesiod, hes_resolve, [HESIOD_LIBS="$HESIOD_LIBS -lhesiod"],
- [AC_MSG_ERROR(Hesiod library not found)], $HESIOD_LIBS)
+ AC_CHECK_FUNC(res_send,
+ [AC_CHECK_LIB(hesiod, hes_resolve,
+ [HESIOD_LIBS="$HESIOD_LIBS -lhesiod"],
+ [AC_MSG_ERROR(Hesiod library not found)],
+ $HESIOD_LIBS)],
+ [AC_CHECK_LIB(hesiod, hes_resolve,
+ [HESIOD_LIBS="$HESIOD_LIBS -lhesiod -lresolv"],
+ [AC_MSG_ERROR(Hesiod library not found)],
+ $HESIOD_LIBS -lresolv)])
+
fi
AC_SUBST(HESIOD_INCLUDES)dnl
AC_SUBST(HESIOD_LIBS)dnl
-dnl ----------------------------------
-dnl CHECK FOR KRB4 (Kerberos4 support)
-dnl ----------------------------------
-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"
- fi
- KRB4_LIBS="-L$with_krb4/lib"
- elif test -d /usr/include/kerberosIV; then
- KRB4_INCLUDES="-I/usr/include/kerberosIV"
- fi
- AC_CHECK_LIB(krb4, krb_rd_req,
- [KRB4_LIBS="$KRB4_LIBS -lkrb4 -ldes425 -lkrb5 -lcrypto -lcom_err"],
- [AC_CHECK_LIB(krb, krb_rd_req,
- [KRB4_LIBS="$KRB4_LIBS -lkrb -ldes"],
- [AC_MSG_ERROR(Kerberos 4 libraries not found)],
- $KRB4_LIBS -ldes)],
- $KRB4_LIBS -ldes425 -lkrb5 -lcrypto -lcom_err)
-fi
-AC_SUBST(KRB4_INCLUDES)dnl
-AC_SUBST(KRB4_LIBS)dnl
-
dnl --------------------
-dnl CHECK FOR CYRUS SASL
+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
+
+AS_IF([test x"$sasl_support" = x"yes"],[
+ AC_CHECK_HEADER([sasl/sasl.h], , [AC_MSG_ERROR([sasl.h not found])])
+ AC_CHECK_LIB([sasl2], [sasl_client_new], ,
+ [AC_MSG_ERROR([Cyrus SASL library not found])])])
+
+dnl -----------------
+dnl CHECK FOR OPENSSL
+dnl -----------------
+
+AS_IF([test x"$tls_support" = x"yes"],[
+ AC_CHECK_HEADER([openssl/ssl.h], , [AC_MSG_ERROR([openssl/ssl.h not found])])
+ AC_CHECK_LIB([crypto], [BIO_write], ,
+ [AC_MSG_ERROR([OpenSSL crypto library not found])])
+ AC_CHECK_LIB([ssl], [SSL_library_init], ,
+ [AC_MSG_ERROR([OpenSSL library not found])])])
dnl ---------------------
dnl CHECK TERMCAP LIBRARY
@@ -600,43 +731,97 @@ LIBS="$TERMLIB $LIBS"
dnl Checks for external variable ospeed in the termcap library.
AC_CACHE_CHECK(if an include file defines ospeed,
nmh_cv_decl_ospeed_include_defines,
-[AC_TRY_LINK(
-[#include
+[AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include
#if HAVE_TERMIOS_H
#include
#endif
#if HAVE_TERMCAP_H
#include
-#endif], [ospeed = 0;],
-nmh_cv_decl_ospeed_include_defines=yes,
-nmh_cv_decl_ospeed_include_defines=no)])
+#endif]], [[ospeed = 0;]])],
+nmh_cv_decl_ospeed_include_defines=yes,nmh_cv_decl_ospeed_include_defines=no)])
if test $nmh_cv_decl_ospeed_include_defines = no; then
AC_CACHE_CHECK(if you must define ospeed,
nmh_cv_decl_ospeed_must_define,
- [AC_TRY_LINK( ,[extern short ospeed; ospeed = 0;],
- nmh_cv_decl_ospeed_must_define=yes,
- nmh_cv_decl_ospeed_must_define=no)])
+ [AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],
+ [[extern short ospeed; ospeed = 0;]])],
+ nmh_cv_decl_ospeed_must_define=yes,nmh_cv_decl_ospeed_must_define=no)])
fi
+AH_TEMPLATE(HAVE_OSPEED, [Define to 1 if your termcap library has the ospeed variable.])
if test $nmh_cv_decl_ospeed_include_defines = yes; then
AC_DEFINE(HAVE_OSPEED)dnl
elif test $nmh_cv_decl_ospeed_must_define = yes; then
AC_DEFINE(HAVE_OSPEED)
- AC_DEFINE(MUST_DEFINE_OSPEED)
+ AC_DEFINE(MUST_DEFINE_OSPEED, 1,
+ [Define to 1 if you have ospeed, but it is not defined in termcap.h.])
fi
-dnl dnl Checks if tgetent accepts NULL and will
-dnl dnl allocate its own termcap buffer.
-dnl AC_CACHE_CHECK(if tgetent accepts NULL,
-dnl nmh_cv_func_tgetent_accepts_null,
-dnl [AC_TRY_RUN([main(){int i = tgetent((char*)0,"vt100");exit(!i || i == -1);}],
-dnl nmh_cv_func_tgetent_accepts_null=yes,
-dnl nmh_cv_func_tgetent_accepts_null=no,
-dnl nmh_cv_func_tgetent_accepts_null=no)])
-dnl if test $nmh_cv_func_tgetent_accepts_null = yes; then
-dnl AC_DEFINE(TGETENT_ACCEPTS_NULL)
-dnl fi
+dnl Check if tgetent accepts NULL (and will allocate its own termcap buffer)
+dnl Some termcaps reportedly accept a zero buffer, but then dump core
+dnl in tgetstr().
+dnl Under Cygwin test program crashes but exit code is still 0. So,
+dnl we test for a file that porgram should create
+AH_TEMPLATE([TGETENT_ACCEPTS_NULL],
+[Define to 1 if tgetent() accepts NULL as a buffer.])
+AC_CACHE_CHECK(if tgetent accepts NULL,
+nmh_cv_func_tgetent_accepts_null,
+[AC_TRY_RUN([
+main()
+{
+ char buf[4096];
+ int r1 = tgetent(buf, "vt100");
+ int r2 = tgetent((char*)0,"vt100");
+ if (r1 >= 0 && r1 == r2) {
+ char tbuf[1024], *u;
+ u = tbuf;
+ tgetstr("cl", &u);
+ creat("conftest.tgetent", 0640);
+ }
+ exit((r1 != r2) || r2 == -1);
+}
+],
+ if test -f conftest.tgetent; then
+ nmh_cv_func_tgetent_accepts_null=yes
+ else
+ nmh_cv_func_tgetent_accepts_null=no
+ fi,
+ nmh_cv_func_tgetent_accepts_null=no,
+ nmh_cv_func_tgetent_accepts_null=no)])
+if test x$nmh_cv_func_tgetent_accepts_null = xyes; then
+ AC_DEFINE(TGETENT_ACCEPTS_NULL)
+fi
+AC_CACHE_CHECK(if tgetent returns 0 on success,
+nmh_cv_func_tgetent_zero_success,
+[AC_TRY_RUN([
+main()
+{
+ char buf[4096];
+ int r1 = tgetent(buf, "!@#$%^&*");
+ int r2 = tgetent(buf, "vt100");
+ if (r1 < 0 && r2 == 0) {
+ char tbuf[1024], *u;
+ u = tbuf;
+ tgetstr("cl", &u);
+ creat("conftest.tgetent0", 0640);
+ }
+ exit(r1 == r2);
+}
+],
+ if test -f conftest.tgetent0; then
+ nmh_cv_func_tgetent_zero_success=yes
+ else
+ nmh_cv_func_tgetent_zero_success=no
+ fi,
+ nmh_cv_func_tgetent_zero_success=no,
+ nmh_cv_func_tgetent_zero_success=no)])
+AH_TEMPLATE([TGETENT_SUCCESS],
+[Define to what tgetent() returns on success (0 on HP-UX X/Open curses).])
+if test x$nmh_cv_func_tgetent_zero_success = xyes; then
+ AC_DEFINE(TGETENT_SUCCESS, 0)
+else
+ AC_DEFINE(TGETENT_SUCCESS, 1)
+fi
dnl Now put the libraries back to what it was before we
dnl starting checking the termcap library.
@@ -656,22 +841,21 @@ dnl Check for sigset_t. Currently I'm looking in
dnl and . Others might need
dnl to be added.
AC_CACHE_CHECK(for sigset_t, nmh_cv_type_sigset_t,
-[AC_TRY_COMPILE(
-[#include
-#include ], [sigset_t tempsigset;],
- nmh_cv_type_sigset_t=yes, nmh_cv_type_sigset_t=no)])
+[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include
+#include ]], [[sigset_t tempsigset;]])],
+nmh_cv_type_sigset_t=yes,nmh_cv_type_sigset_t=no)])
if test $nmh_cv_type_sigset_t = no; then
- AC_DEFINE(sigset_t, unsigned int)
+ AC_DEFINE(sigset_t, unsigned int,
+ [Define to `unsigned int' if or doesn't define.])
fi
dnl ----------------
dnl CHECK STRUCTURES
dnl ----------------
-AC_STRUCT_ST_BLKSIZE
+AC_CHECK_MEMBERS(struct stat.st_blksize)
-AC_CACHE_CHECK(for tm_gmtoff in struct tm, nmh_cv_struct_tm_gmtoff,
-[AC_TRY_COMPILE(
-[#ifdef TIME_WITH_SYS_TIME
+AC_CHECK_MEMBERS(struct tm.tm_gmtoff,,,
+ [#ifdef TIME_WITH_SYS_TIME
# include
# include
#else
@@ -680,32 +864,64 @@ AC_CACHE_CHECK(for tm_gmtoff in struct tm, nmh_cv_struct_tm_gmtoff,
# else
# include
# endif
-#endif],
-[struct tm temptm; temptm.tm_gmtoff = 0;],
- nmh_cv_struct_tm_gmtoff=yes, nmh_cv_struct_tm_gmtoff=no)])
-if test $nmh_cv_struct_tm_gmtoff = yes; then
- AC_DEFINE(HAVE_TM_GMTOFF)
+#endif])
+
+AC_CHECK_MEMBERS(struct utmp.ut_type,,,[#include ])
+
+AC_MSG_CHECKING(for union wait)
+AC_CACHE_VAL(nmh_cv_union_wait, [dnl
+ AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include
+#include ]],
+ [[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;
+#ifdef WTERMSIG
+ /* If we have WEXITSTATUS and WTERMSIG, just use them on ints. */
+ -- blow chunks here --
+#endif
+#endif
+#ifdef HAVE_WAITPID
+ /* Make sure union wait works with waitpid. */
+ pid = waitpid (-1, &status, 0);
+#endif
+ ]])],
+ [nmh_cv_union_wait=yes],
+ [nmh_cv_union_wait=no])])
+if test "$nmh_cv_union_wait" = yes; then
+ AC_DEFINE(HAVE_UNION_WAIT, 1,
+ [Define to 1 if you have the \`union wait' type in .])
fi
+AC_MSG_RESULT($nmh_cv_union_wait)
+
+CHECK_TYPE_STRUCT_DIRENT_D_TYPE()
dnl -------------
dnl CHECK SIGNALS
dnl -------------
dnl What style of signal do you have (POSIX, BSD, or SYSV)?
+AH_TEMPLATE(RELIABLE_SIGNALS, [Define to 1 if you have reliable signals.])
AC_MSG_CHECKING(what style of signals to use)
if test $ac_cv_func_sigaction = yes -a $ac_cv_func_sigprocmask = yes; then
signals_style=POSIX_SIGNALS
- AC_DEFINE(POSIX_SIGNALS)
+ AC_DEFINE(POSIX_SIGNALS, 1,
+ [Define to 1 if you use POSIX style signal handling.])
AC_DEFINE(RELIABLE_SIGNALS)
elif test $ac_cv_func_sigblock = yes -a $ac_cv_func_sigsetmask = yes; then
signals_style=BSD_SIGNALS
- AC_DEFINE(BSD_SIGNALS)
+ AC_DEFINE(BSD_SIGNALS,1,
+ [Define to 1 if you use BSD style signal handling (and can block signals).])
AC_DEFINE(RELIABLE_SIGNALS)
elif test $ac_cv_func_sighold = yes -a $ac_cv_func_sigrelse = yes; then
signals_style=SYSV_SIGNALS
- AC_DEFINE(SYSV_SIGNALS)
+ AC_DEFINE(SYSV_SIGNALS,1,
+ [Define to 1 if you use SYSV style signal handling (and can block signals).])
else
signals_style=NO_SIGNAL_BLOCKING
- AC_DEFINE(NO_SIGNAL_BLOCKING)
+ AC_DEFINE(NO_SIGNAL_BLOCKING,1,
+ [Define to 1 if you have no signal blocking at all (bummer).])
fi
AC_MSG_RESULT($signals_style)
@@ -731,6 +947,12 @@ AC_SUBST(SIGNAL_H)dnl
dnl ----------------
dnl OS SPECIFIC DEFINES
dnl ----------------
+AH_TEMPLATE(SYS5, [Defined for Solaris 2.x, Irix, OSF/1, HP-UX, AIX, SCO5; only used in vmh.c which is not built.])
+AH_TEMPLATE(SVR4, [Defined for Solaris 2.x, Irix, OSF/1, HP-UX, AIX; only used in vmh.c which is not built.])
+AH_TEMPLATE(BSD44, [Defined for SunOS 4, FreeBSD, NetBSD, OpenBSD, BSD/OS, Mac OS X/Rhapsody; only used in vmh.c which is not built.])
+AH_TEMPLATE(BSD42, [Defined for SunOS 4, FreeBSD, NetBSD, OpenBSD, BSD/OS, Mac OS X/Rhapsody -- does PicoBSD have uname?])
+AH_TEMPLATE(SCO_5_STDIO, [Defined for SCO5.])
+
case "$target_os" in
solaris2*)
@@ -778,16 +1000,23 @@ esac
dnl ----------------
dnl OUTPUT MAKEFILES
dnl ----------------
-AC_OUTPUT(Makefile config/Makefile h/Makefile sbr/Makefile uip/Makefile \
- mts/generic/Makefile mts/Makefile mts/smtp/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}"
+AC_CONFIG_FILES(Makefile config/Makefile h/Makefile sbr/Makefile uip/Makefile \
+ mts/Makefile mts/smtp/Makefile \
+ etc/Makefile docs/Makefile man/Makefile)
+AC_CONFIG_COMMANDS([stamp],[test -z "$CONFIG_HEADERS" || echo > stamp-h])
+AC_OUTPUT
+
+dnl These odd looking assignments are done to expand out unexpanded
+dnl variables in bindir et al (for instance mandir is '${datarootdir}/man',
+dnl but expanding that gives '${prefix}/share/man', so we need to expand
+dnl again to get the final answer.
+dnl We only use the expanded versions to print the install paths in
+dnl the final summary and should use them nowhere else (see the autoconf
+dnl docs for the rationale for bindir etc being unexpanded).
+eval "nmhbin=${bindir}"; eval "nmhbin=${nmhbin}"
+eval "nmhsysconf=${sysconfdir}"; eval "nmhsysconf=${nmhsysconf}"
+eval "nmhlib=${libdir}"; eval "nmhlib=${nmhlib}"
+eval "nmhman=${mandir}"; eval "nmhman=${nmhman}"
pop_kinds=no
if test x"$enable_pop" = x"yes"; then
@@ -797,31 +1026,31 @@ if test x"$enable_pop" = 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}
+nmh version : AC_PACKAGE_VERSION
target os : ${target}
compiler : ${CC}
compiler flags : ${CFLAGS}
linker flags : ${LDFLAGS}
+definitions : ${OURDEFS}
source code location : ${srcdir}
-binary install path : ${nmhbin2}
-libary install path : ${nmhlib2}
-config files install path : ${nmhsysconf2}
+binary install path : ${nmhbin}
+library install path : ${nmhlib}
+config files install path : ${nmhsysconf}
man page install path : ${nmhman}
backup prefix : ${backup_prefix}
transport system : ${MTS}
+file locking type : ${LOCKTYPE}
default smtp servers : ${smtpservers}
default editor : ${editorpath}
default pager : ${pagerpath}
email address masquerading : ${masquerade}
-pop is enabled : ${pop_kinds}"
+pop is enabled : ${pop_kinds}
+SASL support : ${sasl_support}
+TLS support : ${tls_support}"
echo ""