2 dnl configure.in -- autoconf template for nmh
8 AC_INIT(mmh, m4_normalize(m4_include([VERSION])))
9 AC_CONFIG_SRCDIR(h/nmh.h)
10 AC_CONFIG_HEADER(config.h)
14 dnl ---------------------
15 dnl define a macro or two
16 dnl ---------------------
18 AC_DEFUN(NMH_PROG_GNU_LIBTOOL, [
19 if test -n "$LIBTOOL" ; then
20 tmptest=`$LIBTOOL --version 2>&1 | grep GNU`
21 if test x"$tmptest" != x ; then
23 AC_SUBST(GNU_LIBTOOL)dnl
28 echo "configuring for AC_PACKAGE_NAME-AC_PACKAGE_VERSION"
29 AC_SUBST(VERSION,AC_PACKAGE_VERSION)dnl
31 dnl What date of nmh are we building?
32 DATE=`cat ${srcdir}/DATE`
33 echo "configuring for nmh dated $DATE"
36 dnl --------------------------
37 dnl CHECK COMMAND LINE OPTIONS
38 dnl --------------------------
40 dnl Do you want to debug nmh?
42 AS_HELP_STRING([--enable-debug],[enable nmh code debugging]))
43 dnl The old redundant --enable-nmh-debug is deprecated and undocumented.
44 if test x"$enable_nmh_debug" = x"yes"; then
48 dnl Allow users to send email from addresses other than their default?
49 AC_ARG_ENABLE(masquerade,
50 AS_HELP_STRING([--enable-masquerade='draft_from mmailid username_extension'],
51 [enable up to 3 types of address masquerading]),
52 [if test x"$enable_masquerade" = x"yes"; then
53 masquerade="draft_from mmailid username_extension"
55 masquerade="$enable_masquerade"
56 fi], [masquerade="draft_from mmailid username_extension"])
57 AC_SUBST(masquerade)dnl
59 dnl Do you want mhe support?
61 AS_HELP_STRING([--disable-mhe],[disable mhe support]))
63 dnl mhe support is on by default, so define it unless --disable-mhe or the
64 dnl deprecated, undocumented --disable-nmh-mhe are specified.
65 if test x"$enable_mhe" != x"no" -a x"$enable_nmh_mhe" != x"no"; then
67 [Define to compile in support for the Emacs front-end mh-e.])dnl
70 dnl Do you want to disable use of locale functions
72 [Undefine if you don't want locale features. By default this is defined.])
73 AC_ARG_ENABLE([locale],
74 AC_HELP_STRING([--disable-locale], [turn off locale features]),
75 [if test x$enableval = xyes; then
81 dnl Do you want client-side support for using SASL for authentication?
82 dnl Note that this code will be enabled for SMTP
83 AC_ARG_WITH(cyrus-sasl, AS_HELP_STRING([--with-cyrus-sasl],
84 [Enable SASL support via the Cyrus SASL library]))
85 if test x"$with_cyrus_sasl" != x -a x"$with_cyrus_sasl" != x"no"; then
86 AC_DEFINE(CYRUS_SASL, 1,
87 [Define to use the Cyrus SASL library for authentication of SMTP.])dnl
88 if test x"$with_cyrus_sasl" != xyes; then
89 AC_MSG_WARN([Arguments to --with-cyrus-sasl now ignored])
90 AC_MSG_WARN([Please pass the appropriate arguments to CPPFLAGS/LDFLAGS])
97 dnl Do you want client-side support for encryption with TLS?
98 AC_ARG_WITH(tls, AS_HELP_STRING([--with-tls], [Enable TLS support]))
99 if test x"$with_tls" != x -a x"$with_tls" != x"no"; then
100 AC_DEFINE(TLS_SUPPORT, 1, [Support TLS for session encryption.])dnl
106 dnl What should be the default editor?
108 AS_HELP_STRING([--with-editor=EDITOR],[specify the default editor]))
110 if test -n "$with_editor"; then
111 editorpath="$with_editor"
114 dnl Set the backup prefix
115 AC_ARG_WITH([hash-backup],
116 AS_HELP_STRING([--with-hash-backup],[use # as the backup prefix (default: ,)]))
117 if test x"$with_hash_backup" != x -a x"$with_hash_backup" != x"no"; then
122 AC_DEFINE_UNQUOTED(BACKUP_PREFIX, "$backup_prefix",
123 [The prefix that is prepended to the name of message files when they are "removed" by rmm. This should typically be `,' or `#'.])dnl
125 dnl What method of locking to use?
127 AS_HELP_STRING([--with-locking=@<:@dot|fcntl|flock|lockf@:>@],
128 [specify the file locking method]))
130 if test x"$with_locking" = x"dot"; then
132 AC_DEFINE(DOT_LOCKING, 1, [Define to use dot based file locking.])dnl
133 elif test x"$with_locking" = x"flock"; then
135 AC_DEFINE(FLOCK_LOCKING, 1, [Define to use flock() based locking.])dnl
136 elif test x"$with_locking" = x"lockf"; then
138 AC_DEFINE(LOCKF_LOCKING, 1, [Define to use lockf() based locking.])dnl
139 elif test x"$with_locking" = x"fcntl"; then
141 AC_DEFINE(FCNTL_LOCKING, 1, [Define to use fnctl() based locking.])dnl
144 AC_DEFINE(DOT_LOCKING)dnl
147 dnl What should be the default pager?
149 AS_HELP_STRING([--with-pager=PAGER],[specify the default pager]))
151 if test -n "$with_pager"; then
152 pagerpath="$with_pager"
155 dnl ----------------------------------------------------
156 dnl Default location is /usr/local/mmh/{bin,etc,lib,share/man}
157 dnl ----------------------------------------------------
158 AC_PREFIX_DEFAULT(/usr/local/mmh)
161 dnl ------------------
162 dnl CHECK THE COMPILER
163 dnl ------------------
164 dnl We want these before the checks,
165 dnl so the checks can modify their values.
166 test -z "$CFLAGS" && CFLAGS= auto_cflags=1
167 if test x"$enable_debug" = x"yes"; then
168 test -z "$LDFLAGS" && LDFLAGS=-g
173 AC_CACHE_CHECK(whether compiler supports -Wno-pointer-sign, nmh_cv_has_noptrsign,
174 [nmh_saved_cflags="$CFLAGS"
175 CFLAGS="$CFLAGS -Wno-pointer-sign"
176 AC_TRY_COMPILE([],[],nmh_cv_has_noptrsign=yes,nmh_cv_has_noptrsign=no)
177 CFLAGS="$nmh_saved_cflags"])
179 dnl if the user hasn't specified CFLAGS, then
180 dnl if compiler is gcc, then
181 dnl use -O2 and some warning flags
183 dnl We use -Wall; if the compiler supports it we also use -Wno-pointer-sign,
184 dnl because gcc 4 now produces a lot of new warnings which are probably mostly
185 dnl spurious and which in any case we don't want to deal with now.
186 if test "$nmh_cv_has_noptrsign" = "yes"; then
187 nmh_gcc_warnflags="-Wall -Wno-pointer-sign"
189 nmh_gcc_warnflags="-Wall"
192 if test -n "$auto_cflags"; then
193 if test x"$enable_debug" = x"yes"; then
194 if test -n "$GCC"; then
195 test -z "$CFLAGS" && CFLAGS="$nmh_gcc_warnflags -g" || CFLAGS="$CFLAGS $nmh_gcc_warnflags -g"
197 test -z "$CFLAGS" && CFLAGS=-g || CFLAGS="$CFLAGS -g"
200 if test -z "$LDFLAGS"; then
210 if test -n "$GCC"; then
211 test -z "$CFLAGS" && CFLAGS="$nmh_gcc_warnflags -O2" || CFLAGS="$CFLAGS $nmh_gcc_warnflags -O2"
213 test -z "$CFLAGS" && CFLAGS=-O || CFLAGS="$CFLAGS -O"
218 AC_C_CONST dnl Does compiler support `const'.
220 dnl ------------------
221 dnl CHECK FOR PROGRAMS
222 dnl ------------------
223 AC_PROG_MAKE_SET dnl Does make define $MAKE
224 AC_PROG_INSTALL dnl Check for BSD compatible `install'
225 AC_PROG_RANLIB dnl Check for `ranlib'
226 AC_PROG_AWK dnl Check for mawk,gawk,nawk, then awk
227 AC_PROG_LEX dnl Check for lex/flex
230 pathtmp=/usr/bin:/bin:/usr/local/bin:/usr/xpg4/bin:/usr/ucb
231 AC_PATH_PROG(cutpath, cut, no, [$pathtmp])
233 dnl ----------------------------------------------
234 dnl check for lclint, and lint if it doesn't exist
235 dnl ----------------------------------------------
236 AC_CHECK_PROG(linttmp1, lclint, lclint, no)dnl
237 if test x$ac_cv_prog_linttmp1 != xno ; then
238 LINT=$ac_cv_prog_linttmp1
239 LINTFLAGS="-weak +posixlib -macrovarprefixexclude"
241 AC_CHECK_PROG(linttmp2, lint, lint, no)dnl
242 if test x$ac_cv_prog_linttmp2 != xno ; then
243 LINT=$ac_cv_prog_linttmp2
246 LINT="echo 'No lint program found'"
251 AC_SUBST(LINTFLAGS)dnl
253 dnl try to figure out which one we've got
254 AC_CHECK_PROG(LIBTOOL, libtool, libtool, , [$pathtmp])
257 dnl Check for lorder and tsort commands
258 AC_CHECK_PROG(LORDER, lorder, lorder, no)dnl
259 AC_CHECK_PROG(TSORT, tsort, tsort, no)dnl
261 dnl If either doesn't exist, replace them with echo and cat
262 if test x$ac_cv_prog_LORDER != xlorder -o x$ac_cv_prog_TSORT != xtsort; then
267 dnl Mac OS X has lorder, but sh is too broken for it to work
268 dnl elif test -z "`lorder config/config.c 2>&1 | grep config/config.c`" ; then
271 dnl AC_SUBST(LORDER)dnl
272 dnl AC_SUBST(TSORT)dnl
275 dnl Check whether tsort can deal with loops
276 AC_CACHE_CHECK(whether tsort can deal with loops, nmh_cv_tsort_loop,
277 [if test -z "`echo a b b a | tsort 2>/dev/null | grep a`" ; then
280 nmh_cv_tsort_loop=yes
282 if test x$nmh_cv_tsort_loop = xno ; then
290 pathtmp=/usr/bin:/bin:/usr/local/bin:/usr/xpg4/bin:/usr/ucb
291 AC_PATH_PROG(lspath, ls, no, [$pathtmp])
293 dnl See how we get ls to display the owner and the group
294 if test "$lspath" != "no"; then
295 AC_CACHE_CHECK(how to get ls to show us the group ownership of a file,
297 [if test x"`$lspath -dl / | $AWK '{print $9}'`" = x"/"; then
298 dnl There were 9 parameters, so unless this is a really bizarre, nonstandard
299 dnl ls, it would seem -l gave us both the user and group. On this type of
300 dnl ls, -g makes _only_ the group be displayed (and not the user).
301 nmh_cv_ls_grpopt="-l"
303 dnl Looks like -l only gave us the user, so we need -g to get the group too.
304 nmh_cv_ls_grpopt="-lg"
309 pathtmp=/usr/bin:/bin:/usr/ucb:/usr/local/bin
310 AC_PATH_PROG(morepath, more, no, [$pathtmp])
312 dnl If pager is not specified yet,
313 dnl then use `more' as the default.
314 if test -z "$pagerpath"; then
315 pagerpath="$morepath"
317 AC_SUBST(pagerpath)dnl
319 dnl Look for `sendmail'
320 pathtmp=/usr/lib:/usr/sbin:/usr/etc:/usr/ucblib:/usr/bin:/bin
321 AC_PATH_PROG(sendmailpath, sendmail, /usr/sbin/sendmail, [$pathtmp])
324 pathtmp=/usr/bin:/bin:/usr/ucb:/usr/local/bin
325 AC_PATH_PROG(vipath, vi, /bin/vi, [$pathtmp])
327 dnl If editor is not specified yet,
328 dnl then use `vi' as the default.
329 if test -z "$editorpath"; then
332 AC_SUBST(editorpath)dnl
334 dnl ----------------------------------------------------------
335 dnl FIND MAIL SPOOL AND SEE IF WE NEED TO MAKE inc SETGID MAIL
336 dnl ----------------------------------------------------------
337 AC_CACHE_CHECK(where mail spool is located, nmh_cv_mailspool,
338 [for mailspool in /var/mail dnl
341 /dev/null; dnl Just in case we fall through
343 test -d $mailspool && break
345 nmh_cv_mailspool=$mailspool
347 mailspool=$nmh_cv_mailspool
348 AC_SUBST(mailspool)dnl
350 dnl See whether the mail spool directory is world-writable.
351 if test "$lspath" != "no" -a "$cutpath" != "no"; then
352 AC_CACHE_CHECK(whether the mail spool is world-writable,
353 nmh_cv_mailspool_world_writable,
354 [if test "`$lspath -dlL $mailspool | $cutpath -c9`" = "-"; then
355 nmh_cv_mailspool_world_writable=no
357 nmh_cv_mailspool_world_writable=yes
361 dnl Also, check for liblockfile (as found on Debian systems)
362 AC_CHECK_HEADER(lockfile.h, AC_CHECK_LIB(lockfile, lockfile_create) )
364 dnl and whether its companion program dotlockfile is setgid
365 AC_PATH_PROG(dotlockfilepath, dotlockfile, no)
366 if test "$ac_cv_lib_lockfile_lockfile_create" != "no" ; then
367 if test "$ac_cv_path_dotlockfilepath" != "no" ; then
368 AC_CACHE_CHECK(whether dotlockfile is setgid, nmh_cv_dotlockfile_setgid,
369 [ if test -g "$ac_cv_path_dotlockfilepath" ; then
370 nmh_cv_dotlockfile_setgid=yes
372 nmh_cv_dotlockfile_setgid=no
377 dnl If mailspool is not world-writable and dotlockfile is not setgid,
378 dnl we need to #define MAILGROUP to 1 and make inc setgid.
379 if test x"$LOCKTYPE" = x"dot" -a x"$nmh_cv_mailspool_world_writable" = x"no" -a x"$nmh_cv_dotlockfile_setgid" != x"yes" ; then
380 dnl do we really need both of these?
381 AC_DEFINE(MAILGROUP,1,
382 [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
385 AC_SUBST(SETGID_MAIL)dnl
387 dnl Use ls to see which group owns the mail spool directory.
388 AC_CACHE_CHECK(what group owns the mail spool, nmh_cv_ls_mail_grp,
389 [nmh_cv_ls_mail_grp=`$lspath -dL $nmh_cv_ls_grpopt $mailspool|$AWK '{print $4}'`
391 MAIL_SPOOL_GRP=$nmh_cv_ls_mail_grp
392 AC_SUBST(MAIL_SPOOL_GRP)dnl
394 dnl ------------------
395 dnl CHECK HEADER FILES
396 dnl ------------------
398 dnl On glibc we need to define at least the '_XOPEN_SOURCE' level of features,
399 dnl or wchar.h doesn't declare a prototype for wcwidth(). But if we only define
400 dnl that level then db.h won't compile. So we define _GNU_SOURCE which turns
401 dnl on everything. Perhaps other OSes need some feature switch set to get wcwidth()
402 dnl declared; if so they should have an entry added to this case statement.
403 dnl NB that we must define this on the compiler command line, not in config.h,
404 dnl because it must be set before any system header is included and there's no
405 dnl portable way to make sure that files generated by lex include config.h
406 dnl before system header files.
410 # Like DEFS, but doesn't get stomped on by configure when using config.h:
411 OURDEFS="$OURDEFS -D_GNU_SOURCE"
422 AC_CHECK_HEADERS(string.h memory.h stdlib.h unistd.h errno.h fcntl.h \
423 limits.h crypt.h termcap.h termio.h termios.h locale.h \
424 langinfo.h wchar.h wctype.h iconv.h netdb.h \
425 sys/param.h sys/time.h sys/utsname.h sys/stream.h \
426 arpa/inet.h arpa/ftp.h)
429 dnl Checks for _IO_write_ptr. A Linuxism used by nmh on linux. We
430 dnl really use a whole set of them, but this check should be
433 AC_CHECK_HEADER(libio.h, [
434 AC_EGREP_HEADER(_IO_write_ptr, libio.h, [
435 AC_DEFINE(LINUX_STDIO,1,[Use the Linux _IO_*_ptr defines from <libio.h>.]) ]) ])
437 AC_CHECK_HEADER([sys/ptem.h], AC_DEFINE(WINSIZE_IN_PTEM,1,
438 [Define to 1 if `struct winsize' requires <sys/ptem.h>.]),,
439 [[#if HAVE_SYS_STREAM_H
440 # include <sys/stream.h>
448 AC_CHECK_LIB(mkstemp,mkstemp)
449 AC_CHECK_FUNCS(waitpid wait3 sigaction sigprocmask sigblock sigsetmask \
450 sighold sigrelse writev lstat uname tzset killpg mkstemp \
451 getutent nl_langinfo mbtowc wcwidth)
453 dnl sigsetjmp may be a macro
454 AC_MSG_CHECKING(for sigsetjmp)
455 AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <setjmp.h>]],
456 [[sigsetjmp((void *)0, 0);]])],[AC_DEFINE(HAVE_SIGSETJMP, 1,
457 [Define to 1 if you have the `sigsetjmp'.]) AC_MSG_RESULT(yes)],
460 AC_REPLACE_FUNCS(memmove snprintf strerror strdup)
462 dnl Look for the initgroups() declaration. On AIX 4.[13], Solaris 4.1.3, and
463 dnl ULTRIX 4.2A the function is defined in libc but there's no declaration in
464 dnl any system header.
466 dnl On Solaris 2.[456], the declaration is in <grp.h>. On HP-UX 9-11 and
467 dnl (reportedly) FreeBSD 3.[23], it's in <unistd.h>. Any other locations we
469 AH_TEMPLATE(INITGROUPS_HEADER, [Define to the header containing the declaration of `initgroups'.])
470 AC_EGREP_HEADER(initgroups, grp.h, AC_DEFINE(INITGROUPS_HEADER, <grp.h>),
471 AC_EGREP_HEADER(initgroups, unistd.h,
472 AC_DEFINE(INITGROUPS_HEADER, <unistd.h>)))
474 dnl On AIX 4.1, snprintf() is defined in libc.a but there's no prototype in
475 dnl <stdio.h> or elsewhere. Apparently it's not officially supported (though it
476 dnl seems to work perfectly and IBM apparently uses it in internal code).
477 dnl Anyhow, if we omit our own snprintf() and vsnprintf() prototypes when we
478 dnl HAVE_SNPRINTF, we get a billion warnings at compile time. Use the C
479 dnl preprocessor to preprocess stdio.h and make sure that there's actually a
481 AC_EGREP_HEADER(snprintf, stdio.h, AC_DEFINE(HAVE_SNPRINTF_PROTOTYPE,1,
482 [Define to 1 if <stdio.h> has a prototype for snprintf().]))
484 dnl Check for multibyte character set support
485 if test "x$ac_cv_header_wchar_h" = "xyes" -a "x$ac_cv_header_wctype_h" = "xyes" \
486 -a "x$ac_cv_func_wcwidth" = "xyes" -a "x$ac_cv_func_mbtowc" = "xyes"; then
487 AC_DEFINE(MULTIBYTE_SUPPORT, 1,
488 [Define to enable support for multibyte character sets.])
491 dnl -------------------
492 dnl CHECK FOR LIBRARIES
493 dnl -------------------
494 dnl Check location of modf
495 AC_CHECK_FUNC(modf, , AC_CHECK_LIB(m, modf))
497 dnl Checks for network libraries (nsl, socket)
500 termcap_curses_order="termcap curses ncurses"
501 for lib in $termcap_curses_order; do
502 AC_CHECK_LIB(${lib}, tgetent, [TERMLIB="-l$lib"; break])
510 dnl Find iconv. It may be in libiconv and may be iconv() or libiconv()
511 if test "x$ac_cv_header_iconv_h" = "xyes"; then
512 AC_CHECK_FUNC(iconv, ac_found_iconv=yes, ac_found_iconv=no)
513 if test "x$ac_found_iconv" = "xno"; then
514 AC_CHECK_LIB(iconv, iconv, ac_found_iconv=yes)
515 if test "x$ac_found_iconv" = "xno"; then
516 AC_CHECK_LIB(iconv, libiconv, ac_found_iconv=yes)
518 if test "x$ac_found_iconv" != "xno"; then
522 dnl Handle case where there is a native iconv but iconv.h is from libiconv
523 AC_CHECK_DECL(_libiconv_version,
524 [ AC_CHECK_LIB(iconv, libiconv, LIBS="-liconv $LIBS") ],,
525 [ #include <iconv.h> ])
528 if test "x$ac_found_iconv" = xyes; then
529 AC_DEFINE(HAVE_ICONV, 1, [Define if you have the iconv() function.])
532 dnl Check if iconv uses const in prototype declaration
533 if test "x$ac_found_iconv" = "xyes"; then
534 AC_CACHE_CHECK(for iconv declaration, ac_cv_iconv_const,
535 [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <stdlib.h>
536 #include <iconv.h>]],
540 #if defined(__STDC__) || defined(__cplusplus)
541 size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);
545 [ac_cv_iconv_const=],
546 [ac_cv_iconv_const=const])])
547 AC_DEFINE_UNQUOTED([ICONV_CONST], $ac_cv_iconv_const,
548 [Define as const if the declaration of iconv() needs const.])
555 AC_ARG_WITH([ndbm],AS_HELP_STRING([--with-ndbm=ARG],[use -lARG to link with ndbm]),
556 [nmh_ndbm=$withval],[nmh_ndbm=autodetect])
557 AC_ARG_WITH([ndbmheader],AS_HELP_STRING([--with-ndbmheader=ARG],[#include <ARG> to use ndbm]),
558 [nmh_ndbmheader=$withval],[nmh_ndbmheader=autodetect])
560 if test "$nmh_ndbm" = "autodetect"; then
561 if test "$nmh_ndbmheader" != "autodetect"; then
562 AC_MSG_ERROR([must specify both --with-ndbm and --with-ndbmheader or neither])
565 dnl There are at least four implementations of ndbm, and
566 dnl several of those can be in different places at the whim
567 dnl of the system integrator. A good summary of this mess
568 dnl can be found at http://www.unixpapa.com/incnote/dbm.html
570 dnl Classic ndbm with no library required (eg NetBSD): try this
571 dnl first so we don't accidentally link in a pointless but harmless
572 dnl library in one of the later ndbm.h+libfoo tests:
573 NMH_CHECK_NDBM(ndbm.h,,,
574 dnl Berkeley DBv2 emulating ndbm: header in db.h:
575 NMH_CHECK_NDBM(db.h,db,,
576 dnl Berkeley DBv1 emulating ndbm:
577 NMH_CHECK_NDBM(ndbm.h,db,,
578 NMH_CHECK_NDBM(ndbm.h,db1,,
580 NMH_CHECK_NDBM(ndbm.h,ndbm,,
581 dnl glibc2.1 systems put db1 in a subdir:
582 NMH_CHECK_NDBM(db1/ndbm.h,db1,,
583 dnl GNU gdbm emulating ndbm, with header possibly in gdbm/
584 dnl and possibly needing gbdm_compat library:
585 NMH_CHECK_NDBM(gdbm/ndbm.h,gdbm,,
586 NMH_CHECK_NDBM(gdbm/ndbm.h,gdbm_compat -lgdbm,,
587 NMH_CHECK_NDBM(ndbm.h,gdbm,,
588 NMH_CHECK_NDBM(ndbm.h,gdbm_compat -lgdbm))))))))))
592 dnl We don't really need to check that the user-specified values work,
593 dnl but it is a convenience to the user to bomb out early rather than
594 dnl after configure and half the compile process.
595 NMH_CHECK_NDBM([$nmh_ndbmheader],[$nmh_ndbm])
598 if test "$nmh_ndbm_found" = "no"; then
599 AC_MSG_ERROR([could not find a working ndbm library/header combination])
601 dnl Now export the lib/header to our makefile/config.h:
602 if test x"$nmh_ndbmheader" != x; then
603 AC_DEFINE_UNQUOTED(NDBM_HEADER, <$nmh_ndbmheader>,
604 [Define to the header containing the ndbm API prototypes.])
606 if test x"$nmh_ndbm" != x; then
607 NDBM_LIBS="-l$nmh_ndbm"
615 dnl --------------------
616 dnl CHECK FOR CYRUS-SASL
617 dnl --------------------
619 AS_IF([test x"$sasl_support" = x"yes"],[
620 AC_CHECK_HEADER([sasl/sasl.h], , [AC_MSG_ERROR([sasl.h not found])])
621 AC_CHECK_LIB([sasl2], [sasl_client_new], ,
622 [AC_MSG_ERROR([Cyrus SASL library not found])])])
624 dnl -----------------
625 dnl CHECK FOR OPENSSL
626 dnl -----------------
628 AS_IF([test x"$tls_support" = x"yes"],[
629 AC_CHECK_HEADER([openssl/ssl.h], , [AC_MSG_ERROR([openssl/ssl.h not found])])
630 AC_CHECK_LIB([crypto], [BIO_write], ,
631 [AC_MSG_ERROR([OpenSSL crypto library not found])])
632 AC_CHECK_LIB([ssl], [SSL_library_init], ,
633 [AC_MSG_ERROR([OpenSSL library not found])])])
635 dnl ---------------------
636 dnl CHECK TERMCAP LIBRARY
637 dnl ---------------------
639 dnl Add the termcap library, so that the following configure
640 dnl tests will find it when it tries to link test programs.
641 nmh_save_LIBS="$LIBS"
642 LIBS="$TERMLIB $LIBS"
644 dnl Checks for external variable ospeed in the termcap library.
645 AC_CACHE_CHECK(if an include file defines ospeed,
646 nmh_cv_decl_ospeed_include_defines,
647 [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h>
653 #endif]], [[ospeed = 0;]])],
654 nmh_cv_decl_ospeed_include_defines=yes,nmh_cv_decl_ospeed_include_defines=no)])
656 if test $nmh_cv_decl_ospeed_include_defines = no; then
657 AC_CACHE_CHECK(if you must define ospeed,
658 nmh_cv_decl_ospeed_must_define,
659 [AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],
660 [[extern short ospeed; ospeed = 0;]])],
661 nmh_cv_decl_ospeed_must_define=yes,nmh_cv_decl_ospeed_must_define=no)])
664 AH_TEMPLATE(HAVE_OSPEED, [Define to 1 if your termcap library has the ospeed variable.])
665 if test $nmh_cv_decl_ospeed_include_defines = yes; then
666 AC_DEFINE(HAVE_OSPEED)dnl
667 elif test $nmh_cv_decl_ospeed_must_define = yes; then
668 AC_DEFINE(HAVE_OSPEED)
669 AC_DEFINE(MUST_DEFINE_OSPEED, 1,
670 [Define to 1 if you have ospeed, but it is not defined in termcap.h.])
673 dnl Check if tgetent accepts NULL (and will allocate its own termcap buffer)
674 dnl Some termcaps reportedly accept a zero buffer, but then dump core
676 dnl Under Cygwin test program crashes but exit code is still 0. So,
677 dnl we test for a file that porgram should create
678 AH_TEMPLATE([TGETENT_ACCEPTS_NULL],
679 [Define to 1 if tgetent() accepts NULL as a buffer.])
680 AC_CACHE_CHECK(if tgetent accepts NULL,
681 nmh_cv_func_tgetent_accepts_null,
686 int r1 = tgetent(buf, "vt100");
687 int r2 = tgetent((char*)0,"vt100");
688 if (r1 >= 0 && r1 == r2) {
692 creat("conftest.tgetent", 0640);
694 exit((r1 != r2) || r2 == -1);
697 if test -f conftest.tgetent; then
698 nmh_cv_func_tgetent_accepts_null=yes
700 nmh_cv_func_tgetent_accepts_null=no
702 nmh_cv_func_tgetent_accepts_null=no,
703 nmh_cv_func_tgetent_accepts_null=no)])
704 if test x$nmh_cv_func_tgetent_accepts_null = xyes; then
705 AC_DEFINE(TGETENT_ACCEPTS_NULL)
707 AC_CACHE_CHECK(if tgetent returns 0 on success,
708 nmh_cv_func_tgetent_zero_success,
713 int r1 = tgetent(buf, "!@#$%^&*");
714 int r2 = tgetent(buf, "vt100");
715 if (r1 < 0 && r2 == 0) {
719 creat("conftest.tgetent0", 0640);
724 if test -f conftest.tgetent0; then
725 nmh_cv_func_tgetent_zero_success=yes
727 nmh_cv_func_tgetent_zero_success=no
729 nmh_cv_func_tgetent_zero_success=no,
730 nmh_cv_func_tgetent_zero_success=no)])
731 AH_TEMPLATE([TGETENT_SUCCESS],
732 [Define to what tgetent() returns on success (0 on HP-UX X/Open curses).])
733 if test x$nmh_cv_func_tgetent_zero_success = xyes; then
734 AC_DEFINE(TGETENT_SUCCESS, 0)
736 AC_DEFINE(TGETENT_SUCCESS, 1)
739 dnl Now put the libraries back to what it was before we
740 dnl starting checking the termcap library.
741 LIBS="$nmh_save_LIBS"
753 dnl Check for sigset_t. Currently I'm looking in
754 dnl <sys/types.h> and <signal.h>. Others might need
756 AC_CACHE_CHECK(for sigset_t, nmh_cv_type_sigset_t,
757 [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h>
758 #include <signal.h>]], [[sigset_t tempsigset;]])],
759 nmh_cv_type_sigset_t=yes,nmh_cv_type_sigset_t=no)])
760 if test $nmh_cv_type_sigset_t = no; then
761 AC_DEFINE(sigset_t, unsigned int,
762 [Define to `unsigned int' if <sys/types.h> or <signal.h> doesn't define.])
768 AC_CHECK_MEMBERS(struct stat.st_blksize)
770 AC_CHECK_MEMBERS(struct tm.tm_gmtoff,,,
771 [#ifdef TIME_WITH_SYS_TIME
772 # include <sys/time.h>
775 # ifdef TM_IN_SYS_TIME
776 # include <sys/time.h>
782 AC_CHECK_MEMBERS(struct utmp.ut_type,,,[#include <utmp.h>])
784 AC_MSG_CHECKING(for union wait)
785 AC_CACHE_VAL(nmh_cv_union_wait, [dnl
786 AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h>
787 #include <sys/wait.h>]],
788 [[union wait status; int pid; pid = wait (&status);
790 /* Some POSIXoid systems have both the new-style macros and the old
791 union wait type, and they do not work together. If union wait
792 conflicts with WEXITSTATUS et al, we don't want to use it at all. */
793 if (WEXITSTATUS (status) != 0) pid = -1;
795 /* If we have WEXITSTATUS and WTERMSIG, just use them on ints. */
796 -- blow chunks here --
800 /* Make sure union wait works with waitpid. */
801 pid = waitpid (-1, &status, 0);
804 [nmh_cv_union_wait=yes],
805 [nmh_cv_union_wait=no])])
806 if test "$nmh_cv_union_wait" = yes; then
807 AC_DEFINE(HAVE_UNION_WAIT, 1,
808 [Define to 1 if you have the \`union wait' type in <sys/wait.h>.])
810 AC_MSG_RESULT($nmh_cv_union_wait)
812 CHECK_TYPE_STRUCT_DIRENT_D_TYPE()
817 dnl What style of signal do you have (POSIX, BSD, or SYSV)?
818 AH_TEMPLATE(RELIABLE_SIGNALS, [Define to 1 if you have reliable signals.])
819 AC_MSG_CHECKING(what style of signals to use)
820 if test $ac_cv_func_sigaction = yes -a $ac_cv_func_sigprocmask = yes; then
821 signals_style=POSIX_SIGNALS
822 AC_DEFINE(POSIX_SIGNALS, 1,
823 [Define to 1 if you use POSIX style signal handling.])
824 AC_DEFINE(RELIABLE_SIGNALS)
825 elif test $ac_cv_func_sigblock = yes -a $ac_cv_func_sigsetmask = yes; then
826 signals_style=BSD_SIGNALS
827 AC_DEFINE(BSD_SIGNALS,1,
828 [Define to 1 if you use BSD style signal handling (and can block signals).])
829 AC_DEFINE(RELIABLE_SIGNALS)
830 elif test $ac_cv_func_sighold = yes -a $ac_cv_func_sigrelse = yes; then
831 signals_style=SYSV_SIGNALS
832 AC_DEFINE(SYSV_SIGNALS,1,
833 [Define to 1 if you use SYSV style signal handling (and can block signals).])
835 signals_style=NO_SIGNAL_BLOCKING
836 AC_DEFINE(NO_SIGNAL_BLOCKING,1,
837 [Define to 1 if you have no signal blocking at all (bummer).])
840 AC_MSG_RESULT($signals_style)
842 dnl Where is <signal.h> located? Needed as input for signames.awk
843 AC_CACHE_CHECK(where signal.h is located, nmh_cv_path_signal_h,
844 [for SIGNAL_H in /usr/include/bsd/sys/signal.h dnl Next
845 /usr/include/asm/signal.h dnl Linux 1.3.0 and above
846 /usr/include/asm/signum.h dnl some versions of Linux/Alpha
847 /usr/include/linux/signal.h dnl Linux up to 1.2.11
848 /usr/include/sys/signal.h dnl Almost everybody else
849 /dev/null; dnl Just in case we fall through
851 test -f $SIGNAL_H && \
852 grep '#[ ]*define[ ][ ]*SIG[0-9A-Z]*[ ]*[0-9][0-9]*' $SIGNAL_H > /dev/null && \
855 nmh_cv_path_signal_h=$SIGNAL_H
857 SIGNAL_H=$nmh_cv_path_signal_h
858 AC_SUBST(SIGNAL_H)dnl
861 dnl OS SPECIFIC DEFINES
863 AH_TEMPLATE(SYS5, [Defined for Solaris 2.x, Irix, OSF/1, HP-UX, AIX, SCO5; only used in vmh.c which is not built.])
864 AH_TEMPLATE(SVR4, [Defined for Solaris 2.x, Irix, OSF/1, HP-UX, AIX; only used in vmh.c which is not built.])
865 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.])
866 AH_TEMPLATE(BSD42, [Defined for SunOS 4, FreeBSD, NetBSD, OpenBSD, BSD/OS, Mac OS X/Rhapsody -- does PicoBSD have uname?])
867 AH_TEMPLATE(SCO_5_STDIO, [Defined for SCO5.])
908 AC_DEFINE(SCO_5_STDIO)
916 AC_CONFIG_FILES(Makefile config/Makefile h/Makefile sbr/Makefile uip/Makefile \
917 etc/Makefile docs/Makefile man/Makefile)
918 AC_CONFIG_COMMANDS([stamp],[test -z "$CONFIG_HEADERS" || echo > stamp-h])
921 dnl These odd looking assignments are done to expand out unexpanded
922 dnl variables in bindir et al (for instance mandir is '${datarootdir}/man',
923 dnl but expanding that gives '${prefix}/share/man', so we need to expand
924 dnl again to get the final answer.
925 dnl We only use the expanded versions to print the install paths in
926 dnl the final summary and should use them nowhere else (see the autoconf
927 dnl docs for the rationale for bindir etc being unexpanded).
928 eval "nmhbin=${bindir}"; eval "nmhbin=${nmhbin}"
929 eval "nmhsysconf=${sysconfdir}"; eval "nmhsysconf=${nmhsysconf}"
930 eval "nmhlib=${libdir}"; eval "nmhlib=${nmhlib}"
931 eval "nmhman=${mandir}"; eval "nmhman=${nmhman}"
936 nmh version : AC_PACKAGE_VERSION
937 target os : ${target}
939 compiler flags : ${CFLAGS}
940 linker flags : ${LDFLAGS}
941 definitions : ${OURDEFS}
942 source code location : ${srcdir}
943 binary install path : ${nmhbin}
944 library install path : ${nmhlib}
945 config files install path : ${nmhsysconf}
946 man page install path : ${nmhman}
947 backup prefix : ${backup_prefix}
948 file locking type : ${LOCKTYPE}
949 default editor : ${editorpath}
950 default pager : ${pagerpath}
951 email address masquerading : ${masquerade}
952 SASL support : ${sasl_support}
953 TLS support : ${tls_support}"