* Merged mts/sendmail functionality into mts/smtp; switching between
[mmh] / configure.in
1 dnl
2 dnl configure.in -- autoconf template for nmh
3 dnl
4 dnl $Id$
5 dnl
6
7 AC_INIT(h/nmh.h)
8 AC_CONFIG_HEADER(config.h)
9
10 AC_CANONICAL_SYSTEM
11
12 dnl ---------------------
13 dnl define a macro or two
14 dnl ---------------------
15
16 AC_DEFUN(NMH_PROG_GNU_LIBTOOL, [
17   tmptest=`$LIBTOOL --version 2>&1 | grep GNU`
18   if test x"$tmptest" != x  ; then
19     GNU_LIBTOOL=1
20     AC_SUBST(GNU_LIBTOOL)dnl
21   fi
22 ] )
23   
24
25 dnl What version of nmh are we building?
26 VERSION=`sed -e 's/nmh-//' ${srcdir}/VERSION`
27 echo "configuring for nmh-$VERSION"
28 AC_SUBST(VERSION)dnl
29
30 dnl --------------------------
31 dnl CHECK COMMAND LINE OPTIONS
32 dnl --------------------------
33
34 dnl Do you want client-side support for apop?
35 AC_ARG_ENABLE(apop,
36 [  --enable-apop           enable client-side support for POP3 and APOP])
37 if test x"$enable_apop" = x"yes"; then
38   AC_DEFINE(APOP)dnl
39   APOPLIB=md5.o
40   enable_pop=yes
41 fi
42 AC_SUBST(APOPLIB)dnl
43
44 dnl Do you want to debug nmh?
45 undefine([debug])dnl
46 AC_ARG_ENABLE(debug,
47 [  --enable-debug          enable nmh code debugging])
48 dnl The old redundant --enable-nmh-debug is deprecated and undocumented.
49 if test x"$enable_nmh_debug" = x"yes"; then
50   enable_debug=yes
51 fi
52
53 dnl Allow users to send email from addresses other than their default?
54 undefine([masquerade])dnl
55 AC_ARG_ENABLE(masquerade,
56   [  --enable-masquerade[='draft_from mmailid username_extension']
57                           enable up to 3 types of address masquerading [none]],
58   [if test x"$enable_masquerade" = x"yes"; then
59     masquerade="draft_from mmailid username_extension"
60   else
61     masquerade="$enable_masquerade"
62   fi])
63 AC_SUBST(masquerade)dnl
64
65 dnl Do you want mhe support?
66 undefine([mhe])dnl
67 AC_ARG_ENABLE(mhe,
68 [  --enable-mhe            enable mhe support (DEFAULT)])
69
70 dnl mhe support is on by default, so define it unless --disable-mhe or the
71 dnl deprecated, undocumented --disable-nmh-mhe are specified.
72 if test x"$enable_mhe" != x"no" -a x"$enable_nmh_mhe" != x"no"; then
73   AC_DEFINE(MHE)dnl
74 fi
75
76 dnl Do you want client-side support for pop?
77 undefine([pop])dnl
78 AC_ARG_ENABLE(pop,
79 [  --enable-pop            enable client-side support for plain POP3])
80 dnl The old redundant --enable-nmh-pop is deprecated and undocumented.
81 if test x"$enable_nmh_pop" = x"yes"; then
82   enable_pop=yes
83 fi
84
85 dnl Do you want support for hesiod
86 AC_ARG_WITH(hesiod,
87 [  --with-hesiod=PREFIX    specify location of Hesiod])
88 if test x"$with_hesiod" != x -a x"$with_hesiod" != x"no"; then
89   AC_DEFINE(HESIOD)dnl
90 fi
91
92 dnl Do you want client-side support for kpop
93 AC_ARG_WITH(krb4,
94 [  --with-krb4=PREFIX      specify location of Kerberos V4 for KPOP support])
95 if test x"$with_krb4" != x -a x"$with_krb4" != x"no"; then
96   enable_pop=yes
97   AC_DEFINE(KPOP)dnl
98   AC_DEFINE(KPOP_PRINCIPAL, "pop")dnl
99 fi
100
101 dnl After we know if we're including apop and kpop support, do pop stuff
102 if test x"$enable_pop" = x"yes"; then
103   AC_DEFINE(POP)dnl
104   POPLIB=popsbr.o
105   POPSED='/^%nmhbeginpop%/d;/^%nmhendpop%/d'
106 else
107   POPSED='/^%nmhbeginpop%/,/^%nmhendpop%/d'
108 fi
109 AC_SUBST(POPLIB)dnl
110 AC_SUBST(POPSED)dnl
111
112 dnl What should be the default editor?
113 undefine([editor])dnl
114 AC_ARG_WITH(editor,
115 [  --with-editor=EDITOR    specify the default editor])
116
117 if test -n "$with_editor"; then
118   editorpath="$with_editor"
119 fi
120
121 dnl What method of posting should post use?
122 undefine([mts])dnl
123 AC_ARG_WITH(mts,
124 [  --with-mts=MTS          specify the default mail transport agent/service])
125
126 if test x"$with_mts" = x"smtp"; then
127   MTS="smtp"
128 elif test x"$with_mts" = x"sendmail"; then
129   MTS="sendmail"
130 else
131   MTS="smtp"
132 fi
133 AC_SUBST(MTS)dnl
134
135 dnl Both the smtp and sendmail mail transport services use the smtp code
136 AC_DEFINE(SMTPMTS)dnl
137
138 dnl What should be the default pager?
139 undefine([pager])dnl
140 AC_ARG_WITH(pager,
141 [  --with-pager=PAGER      specify the default pager])
142
143 if test -n "$with_pager"; then
144   pagerpath="$with_pager"
145 fi
146
147 dnl What should be the default mail server(s)?
148 undefine([smtpservers])dnl
149 AC_ARG_WITH(smtpservers,
150 [  --with-smtpservers='SMTPSERVER1[ SMTPSERVER2...]'
151                           specify the default SMTP server(s) [localhost]])
152 if test -n "$with_smtpservers"; then
153   smtpservers="$with_smtpservers"
154 else
155   smtpservers="localhost"
156 fi
157 AC_SUBST(smtpservers)dnl
158
159 dnl ----------------------------------------------------
160 dnl Default location is /usr/local/nmh/{bin,etc,lib,man}
161 dnl ----------------------------------------------------
162 AC_PREFIX_DEFAULT(/usr/local/nmh)
163
164 dnl ------------------
165 dnl CHECK THE COMPILER
166 dnl ------------------
167 dnl We want these before the checks,
168 dnl so the checks can modify their values.
169 test -z "$CFLAGS" && CFLAGS= auto_cflags=1
170 if test x"$enable_debug" = x"yes"; then
171   test -z "$LDFLAGS" && LDFLAGS=-g
172 fi
173
174 AC_PROG_CC
175
176 dnl if the user hasn't specified CFLAGS, then
177 dnl   if compiler is gcc, then
178 dnl     use -O2 and some warning flags
179 dnl   else use -O
180 if test -n "$auto_cflags"; then
181   if test x"$enable_debug" = x"yes"; then
182     if test -n "$GCC"; then
183       test -z "$CFLAGS" && CFLAGS="-Wall -g" || CFLAGS="$CFLAGS -Wall -g"
184     else
185       test -z "$CFLAGS" && CFLAGS=-g || CFLAGS="$CFLAGS -g"
186     fi
187   else
188     test -z "$LDFLAGS" && LDFLAGS=-s
189     if test -n "$GCC"; then
190       test -z "$CFLAGS" && CFLAGS="-Wall -O2" || CFLAGS="$CFLAGS -Wall -O2"
191     else
192       test -z "$CFLAGS" && CFLAGS=-O  || CFLAGS="$CFLAGS -O"
193     fi
194   fi
195 fi
196
197 AC_C_CONST              dnl Does compiler support `const'.
198
199 dnl ------------------
200 dnl CHECK FOR PROGRAMS
201 dnl ------------------
202 AC_PROG_MAKE_SET        dnl Does make define $MAKE
203 AC_PROG_INSTALL         dnl Check for BSD compatible `install'
204 AC_PROG_RANLIB          dnl Check for `ranlib'
205 AC_PROG_AWK             dnl Check for mawk,gawk,nawk, then awk
206 AC_PROG_LEX             dnl Check for lex/flex
207
208 dnl Look for `cut'
209 pathtmp=/usr/bin:/bin:/usr/local/bin:/usr/xpg4/bin:/usr/ucb
210 AC_PATH_PROG(cutpath, cut, no, [$pathtmp])
211
212 dnl ----------------------------------------------
213 dnl check for lclint, and lint if it doesn't exist
214 dnl ----------------------------------------------
215 AC_CHECK_PROG(linttmp1, lclint, lclint, no)dnl
216 if test x$ac_cv_prog_linttmp1 != xno ; then
217   LINT=$ac_cv_prog_linttmp1
218   LINTFLAGS="-weak +posixlib -macrovarprefixexclude"
219 else
220   AC_CHECK_PROG(linttmp2, lint, lint, no)dnl
221   if test x$ac_cv_prog_linttmp2 != xno ; then
222     LINT=$ac_cv_prog_linttmp2
223     LINTFLAGS=""
224   else
225     LINT="echo 'No lint program found'"
226     LINTFLAGS=""
227   fi
228 fi
229 AC_SUBST(LINT)
230 AC_SUBST(LINTFLAGS)
231
232 dnl try to figure out which one we've got
233 AC_CHECK_PROG(LIBTOOL, libtool, libtool, , [$pathtmp])
234 NMH_PROG_GNU_LIBTOOL
235
236 dnl Check for lorder and tsort commands
237 AC_CHECK_PROG(LORDER, lorder, lorder, no)dnl
238 AC_CHECK_PROG(TSORT, tsort, tsort, no)dnl
239
240 dnl If either doesn't exist, replace them with echo and cat
241 if test x$ac_cv_prog_LORDER != xlorder -o x$ac_cv_prog_TSORT != xtsort; then
242   LORDER=echo
243   TSORT=cat
244   AC_SUBST(LORDER)dnl
245   AC_SUBST(TSORT)dnl
246 dnl Mac OS X has lorder, but sh is too broken for it to work
247 dnl elif test -z "`lorder config/config.c 2>&1 | grep config/config.c`" ; then
248 dnl   LORDER=echo
249 dnl   TSORT=cat
250 dnl   AC_SUBST(LORDER)dnl
251 dnl   AC_SUBST(TSORT)dnl
252 fi
253
254 dnl Check whether tsort can deal with loops
255 AC_CACHE_CHECK(whether tsort can deal with loops, nmh_cv_tsort_loop,
256   [if test -z "`echo a b b a | tsort 2>/dev/null | grep a`" ; then
257     nmh_cv_tsort_loop=no
258   else
259     nmh_cv_tsort_loop=yes
260   fi])
261 if test x$nmh_cv_tsort_loop = xno ; then
262   LORDER=echo
263   TSORT=cat
264   AC_SUBST(LORDER)dnl
265   AC_SUBST(TSORT)dnl
266 fi
267
268 dnl Look for `ls'
269 pathtmp=/usr/bin:/bin:/usr/local/bin:/usr/xpg4/bin:/usr/ucb
270 AC_PATH_PROG(lspath, ls, no, [$pathtmp])
271
272 dnl See how we get ls to display the owner and the group
273 if test "$lspath" != "no"; then
274   AC_CACHE_CHECK(how to get ls to show us the group ownership of a file, 
275                  nmh_cv_ls_grpopt,
276   [if test x"`$lspath -dl / | $AWK '{print $9}'`" = x"/"; then
277     dnl There were 9 parameters, so unless this is a really bizarre, nonstandard
278     dnl ls, it would seem -l gave us both the user and group.  On this type of
279     dnl ls, -g makes _only_ the group be displayed (and not the user).
280     nmh_cv_ls_grpopt="-l"
281   else
282     dnl Looks like -l only gave us the user, so we need -g to get the group too.
283     nmh_cv_ls_grpopt="-lg"
284   fi])
285 fi
286
287 dnl Look for `more'
288 pathtmp=/usr/bin:/bin:/usr/ucb:/usr/local/bin
289 AC_PATH_PROG(morepath, more, no, [$pathtmp])
290
291 dnl If pager is not specified yet,
292 dnl then use `more' as the default.
293 if test -z "$pagerpath"; then
294   pagerpath="$morepath"
295 fi
296 AC_SUBST(pagerpath)dnl
297
298 dnl Look for `sendmail'
299 pathtmp=/usr/lib:/usr/sbin:/usr/etc:/usr/ucblib:/usr/bin:/bin
300 AC_PATH_PROG(sendmailpath, sendmail, no, [$pathtmp])
301
302 dnl Look for `vi'
303 pathtmp=/usr/bin:/bin:/usr/ucb:/usr/local/bin
304 AC_PATH_PROG(vipath, vi, no, [$pathtmp])
305
306 dnl If editor is not specified yet,
307 dnl then use `vi' as the default.
308 if test -z "$editorpath"; then
309   editorpath="$vipath"
310 fi
311 AC_SUBST(editorpath)dnl
312
313 dnl Check for broken vi
314 AC_CACHE_CHECK(for broken vi, nmh_cv_attvibug,
315 [if echo 'r /nonexist-file
316 q' | ex > /dev/null 2>&1
317 then
318         nmh_cv_attvibug=no
319 else
320         nmh_cv_attvibug=yes
321 fi])
322  
323 if test "$nmh_cv_attvibug" = yes; then
324   AC_DEFINE(ATTVIBUG)dnl
325 fi
326
327 dnl ----------------------------------------------------------
328 dnl FIND MAIL SPOOL AND SEE IF WE NEED TO MAKE inc SETGID MAIL
329 dnl ----------------------------------------------------------
330 AC_CACHE_CHECK(where mail spool is located, nmh_cv_mailspool,
331 [for mailspool in /var/mail        dnl
332                   /var/spool/mail  dnl
333                   /usr/spool/mail  dnl
334                   /dev/null;       dnl Just in case we fall through
335 do
336   test -d $mailspool && break
337 done
338 nmh_cv_mailspool=$mailspool
339 ])
340 mailspool=$nmh_cv_mailspool
341 AC_SUBST(mailspool)dnl
342
343 dnl See whether the mail spool directory is world-writable.
344 if test "$lspath" != "no" -a "$cutpath" != "no"; then
345   AC_CACHE_CHECK(whether the mail spool is world-writable, 
346                  nmh_cv_mailspool_world_writable,
347   [if test "`$lspath -dlL $mailspool | $cutpath -c9`" = "-"; then
348     nmh_cv_mailspool_world_writable=no
349   else
350     nmh_cv_mailspool_world_writable=yes
351   fi])
352 fi
353
354 dnl Also, check for liblockfile (as found on Debian systems)
355 AC_CHECK_HEADER(lockfile.h, AC_CHECK_LIB(lockfile, lockfile_create) )
356
357 dnl and whether its companion program dotlockfile is setgid
358 AC_PATH_PROG(dotlockfilepath, dotlockfile, no)
359 if test "$ac_cv_lib_lockfile_lockfile_create" != "no" ; then
360   if test "$ac_cv_path_dotlockfilepath" != "no" ; then
361     AC_CACHE_CHECK(whether dotlockfile is setgid, nmh_cv_dotlockfile_setgid,
362     [ if test -g "$ac_cv_path_dotlockfilepath" ; then
363         nmh_cv_dotlockfile_setgid=yes
364       else
365         nmh_cv_dotlockfile_setgid=no
366       fi])
367   fi
368 fi
369
370 dnl If mailspool is not world-writable and dotlockfile is not setgid,
371 dnl we need to #define MAILGROUP to 1 and make inc setgid.
372 if test x"$nmh_cv_mailspool_world_writable" = x"no" -a x"$nmh_cv_dotlockfile_setgid" != x"yes" ; then
373   dnl do we really need both of these?
374   AC_DEFINE(MAILGROUP)dnl
375   SETGID_MAIL=1
376 fi
377 AC_SUBST(SETGID_MAIL)dnl
378
379 dnl Use ls to see which group owns the mail spool directory.
380 AC_CACHE_CHECK(what group owns the mail spool, nmh_cv_ls_mail_grp,
381 [nmh_cv_ls_mail_grp=`$lspath -dL $nmh_cv_ls_grpopt $mailspool|$AWK '{print $4}'`
382 ])
383 MAIL_SPOOL_GRP=$nmh_cv_ls_mail_grp
384 AC_SUBST(MAIL_SPOOL_GRP)dnl
385
386 dnl ------------------
387 dnl CHECK HEADER FILES
388 dnl ------------------
389 AC_HEADER_DIRENT
390 AC_HEADER_STDC
391 AC_HEADER_TIME
392 AC_HEADER_SYS_WAIT
393 AC_HEADER_STAT
394 AC_CHECK_HEADERS(string.h memory.h stdlib.h unistd.h errno.h fcntl.h \
395                  limits.h crypt.h termcap.h termio.h termios.h locale.h \
396                  netdb.h sys/param.h sys/time.h sys/utsname.h arpa/inet.h \
397                  arpa/ftp.h)
398
399
400 AC_CACHE_CHECK(POSIX termios, nmh_cv_sys_posix_termios,
401 [AC_TRY_LINK([#include <sys/types.h>
402 #include <unistd.h>
403 #include <termios.h>],
404 [/* SunOS 4.0.3 has termios.h but not the library calls.  */
405 tcgetattr(0, 0);],
406   nmh_cv_sys_posix_termios=yes, nmh_cv_sys_posix_termios=no)])
407  
408 if test $nmh_cv_sys_posix_termios = yes; then
409   AC_CACHE_CHECK(TIOCGWINSZ in termios.h,
410   nmh_cv_header_termios_h_tiocgwinsz,
411   [AC_TRY_LINK([#include <sys/types.h>
412 #include <termios.h>],
413   [int x = TIOCGWINSZ;],
414   nmh_cv_header_termios_h_tiocgwinsz=yes,
415   nmh_cv_header_termios_h_tiocgwinsz=no)])
416 else
417   nmh_cv_header_termios_h_tiocgwinsz=no
418 fi
419  
420 if test $nmh_cv_header_termios_h_tiocgwinsz = no; then
421   AC_CACHE_CHECK(TIOCGWINSZ in sys/ioctl.h,
422   nmh_cv_header_sys_ioctl_h_tiocgwinsz,
423   [AC_TRY_LINK([#include <sys/types.h>
424 #include <sys/ioctl.h>],
425   [int x = TIOCGWINSZ;],
426   nmh_cv_header_sys_ioctl_h_tiocgwinsz=yes,
427   nmh_cv_header_sys_ioctl_h_tiocgwinsz=no)])
428   if test $nmh_cv_header_sys_ioctl_h_tiocgwinsz = yes; then
429     AC_DEFINE(GWINSZ_IN_SYS_IOCTL)
430   fi
431 fi
432  
433 dnl
434 dnl Checks for _IO_write_ptr. A Linuxism used by nmh on linux. We
435 dnl really use a whole set of them, but this check should be
436 dnl sufficient.
437 dnl
438 AC_CHECK_HEADER(libio.h, [
439   AC_EGREP_HEADER(_IO_write_ptr, libio.h, [
440     AC_DEFINE(LINUX_STDIO) ]) ]) 
441
442 AC_CHECK_HEADER([sys/ptem.h], AC_DEFINE(WINSIZE_IN_PTEM))
443
444 dnl ---------------
445 dnl CHECK FUNCTIONS
446 dnl ---------------
447 AC_FUNC_VFORK
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                sethostent getutent)
452
453 dnl solaris screws this up
454 AC_CHECK_FUNC(gethostbyname, [AC_DEFINE(HAVE_GETHOSTBYNAME)],
455   AC_CHECK_LIB(nsl, gethostbyname, [AC_DEFINE(HAVE_GETHOSTBYNAME)] ) )
456
457 dnl sigsetjmp may be a macro
458 AC_MSG_CHECKING(for sigsetjmp)
459 AC_TRY_LINK([#include <setjmp.h>], [sigsetjmp((void *)0, 0);],
460         [AC_DEFINE(HAVE_SIGSETJMP) AC_MSG_RESULT(yes)], AC_MSG_RESULT(no))
461
462 AC_REPLACE_FUNCS(snprintf strerror strdup)
463
464 dnl Look for the initgroups() declaration.  On AIX 4.[13], Solaris 4.1.3, and
465 dnl ULTRIX 4.2A the function is defined in libc but there's no declaration in
466 dnl any system header.  
467 dnl
468 dnl On Solaris 2.[456], the declaration is in <grp.h>.  On HP-UX 9-11 and
469 dnl (reportedly) FreeBSD 3.[23], it's in <unistd.h>.  Any other locations we
470 dnl need to check? 
471 AC_EGREP_HEADER(initgroups, grp.h, AC_DEFINE(INITGROUPS_HEADER, <grp.h>),
472                 AC_EGREP_HEADER(initgroups, unistd.h, 
473                                 AC_DEFINE(INITGROUPS_HEADER, <unistd.h>)))
474
475 dnl On AIX 4.1, snprintf() is defined in libc.a but there's no prototype in
476 dnl <stdio.h> or elsewhere.  Apparently it's not officially supported (though it
477 dnl seems to work perfectly and IBM apparently uses it in internal code).
478 dnl Anyhow, if we omit our own snprintf() and vsnprintf() prototypes when we
479 dnl HAVE_SNPRINTF, we get a billion warnings at compile time.  Use the C
480 dnl preprocessor to preprocess stdio.h and make sure that there's actually a 
481 dnl prototype. 
482 AC_EGREP_HEADER(snprintf, stdio.h, AC_DEFINE(HAVE_SNPRINTF_PROTOTYPE))
483
484 dnl -------------------
485 dnl CHECK FOR LIBRARIES
486 dnl -------------------
487 dnl Check location of modf
488 AC_CHECK_FUNC(modf, , AC_CHECK_LIB(m, modf))
489
490 dnl Checks for network libraries (nsl, socket)
491 AC_CHECK_NETLIBS
492
493 termcap_curses_order="termcap curses ncurses"
494 for lib in $termcap_curses_order; do
495   AC_CHECK_LIB(${lib}, tgetent, [TERMLIB="-l$lib"; break])
496 done
497 AC_SUBST(TERMLIB)dnl
498
499 dnl --------------
500 dnl CHECK FOR NDBM
501 dnl --------------
502 dnl Checks for ndbm
503 AC_CHECK_FUNC(dbm_open, ,
504   AC_CHECK_LIB(ndbm, dbm_open, ,
505     AC_CHECK_LIB(dbm, dbm_open)))
506
507 dnl ----------------
508 dnl CHECK FOR NDBM.H
509 dnl ----------------
510 AC_CHECK_HEADERS(db1/ndbm.h)
511
512 dnl ----------------
513 dnl CHECK FOR HESIOD
514 dnl ----------------
515 if test x"$with_hesiod" != x -a x"$with_hesiod" != x"no"; then
516   if test x"$with_hesiod" != x"yes"; then
517     HESIOD_INCLUDES="-I$with_hesiod/include"
518     HESIOD_LIBS="-L$with_hesiod/lib"
519   fi
520   AC_CHECK_FUNC(res_send, ,
521     AC_CHECK_LIB(resolv, res_send))
522   AC_CHECK_LIB(hesiod, hes_resolve, [HESIOD_LIBS="$HESIOD_LIBS -lhesiod"],
523     [AC_MSG_ERROR(Hesiod library not found)], $HESIOD_LIBS)
524 fi
525 AC_SUBST(HESIOD_INCLUDES)dnl
526 AC_SUBST(HESIOD_LIBS)dnl
527
528 dnl ----------------------------------
529 dnl CHECK FOR KRB4 (Kerberos4 support)
530 dnl ----------------------------------
531 if test x"$with_krb4" != x -a x"$with_krb4" != x"no"; then
532   if test x"$with_krb4" != x"yes"; then
533     KRB4_INCLUDES="-I$with_krb4/include"
534     if test -d "$with_krb4/include/kerberosIV"; then
535       KRB4_INCLUDES="$KRB4_INCLUDES -I$with_krb4/include/kerberosIV"
536     fi
537     KRB4_LIBS="-L$with_krb4/lib"
538   elif test -d /usr/include/kerberosIV; then
539     KRB4_INCLUDES="-I/usr/include/kerberosIV"
540   fi
541   AC_CHECK_LIB(krb4, krb_rd_req,
542     [KRB4_LIBS="$KRB4_LIBS -lkrb4 -ldes425 -lkrb5 -lcrypto -lcom_err"],
543     [AC_CHECK_LIB(krb, krb_rd_req,
544       [KRB4_LIBS="$KRB4_LIBS -lkrb -ldes"],
545       [AC_MSG_ERROR(Kerberos 4 libraries not found)],
546       $KRB4_LIBS -ldes)],
547     $KRB4_LIBS -ldes425 -lkrb5 -lcrypto -lcom_err)
548 fi
549 AC_SUBST(KRB4_INCLUDES)dnl
550 AC_SUBST(KRB4_LIBS)dnl
551
552 dnl ---------------------
553 dnl CHECK TERMCAP LIBRARY
554 dnl ---------------------
555
556 dnl Add the termcap library, so that the following configure
557 dnl tests will find it when it tries to link test programs.
558 nmh_save_LIBS="$LIBS"
559 LIBS="$TERMLIB $LIBS"
560
561 dnl Checks for external variable ospeed in the termcap library.
562 AC_CACHE_CHECK(if an include file defines ospeed,
563 nmh_cv_decl_ospeed_include_defines,
564 [AC_TRY_LINK(
565 [#include <sys/types.h>
566 #if HAVE_TERMIOS_H
567 #include <termios.h>
568 #endif
569 #if HAVE_TERMCAP_H
570 #include <termcap.h>
571 #endif], [ospeed = 0;],
572 nmh_cv_decl_ospeed_include_defines=yes,
573 nmh_cv_decl_ospeed_include_defines=no)])
574  
575 if test $nmh_cv_decl_ospeed_include_defines = no; then
576   AC_CACHE_CHECK(if you must define ospeed,
577   nmh_cv_decl_ospeed_must_define,
578   [AC_TRY_LINK( ,[extern short ospeed; ospeed = 0;],
579   nmh_cv_decl_ospeed_must_define=yes,
580   nmh_cv_decl_ospeed_must_define=no)])
581 fi
582  
583 if test $nmh_cv_decl_ospeed_include_defines = yes; then
584   AC_DEFINE(HAVE_OSPEED)
585 elif test $nmh_cv_decl_ospeed_must_define = yes; then
586   AC_DEFINE(HAVE_OSPEED)
587   AC_DEFINE(MUST_DEFINE_OSPEED)
588 fi
589
590 dnl dnl Checks if tgetent accepts NULL and will
591 dnl dnl allocate its own termcap buffer.
592 dnl AC_CACHE_CHECK(if tgetent accepts NULL,
593 dnl nmh_cv_func_tgetent_accepts_null,
594 dnl [AC_TRY_RUN([main(){int i = tgetent((char*)0,"vt100");exit(!i || i == -1);}],
595 dnl   nmh_cv_func_tgetent_accepts_null=yes,
596 dnl   nmh_cv_func_tgetent_accepts_null=no,
597 dnl   nmh_cv_func_tgetent_accepts_null=no)])
598 dnl if test $nmh_cv_func_tgetent_accepts_null = yes; then
599 dnl   AC_DEFINE(TGETENT_ACCEPTS_NULL)
600 dnl fi
601
602 dnl Now put the libraries back to what it was before we
603 dnl starting checking the termcap library.
604 LIBS="$nmh_save_LIBS"
605
606 dnl --------------
607 dnl CHECK TYPEDEFS
608 dnl --------------
609 AC_TYPE_SIGNAL
610 AC_TYPE_PID_T
611 AC_TYPE_OFF_T
612 AC_TYPE_UID_T
613 AC_TYPE_MODE_T
614 AC_TYPE_SIZE_T
615
616 dnl Check for sigset_t.  Currently I'm looking in
617 dnl <sys/types.h> and <signal.h>.  Others might need
618 dnl to be added.
619 AC_CACHE_CHECK(for sigset_t, nmh_cv_type_sigset_t,
620 [AC_TRY_COMPILE(
621 [#include <sys/types.h>
622 #include <signal.h>], [sigset_t tempsigset;],
623   nmh_cv_type_sigset_t=yes, nmh_cv_type_sigset_t=no)])
624 if test $nmh_cv_type_sigset_t = no; then
625   AC_DEFINE(sigset_t, unsigned int)
626 fi
627
628 dnl ----------------
629 dnl CHECK STRUCTURES
630 dnl ----------------
631 AC_STRUCT_ST_BLKSIZE
632
633 AC_CACHE_CHECK(for tm_gmtoff in struct tm, nmh_cv_struct_tm_gmtoff,
634 [AC_TRY_COMPILE(
635 [#ifdef TIME_WITH_SYS_TIME
636 # include <sys/time.h>
637 # include <time.h>
638 #else
639 # ifdef TM_IN_SYS_TIME
640 #  include <sys/time.h>
641 # else
642 #  include <time.h>
643 # endif
644 #endif],
645 [struct tm temptm; temptm.tm_gmtoff = 0;],
646   nmh_cv_struct_tm_gmtoff=yes, nmh_cv_struct_tm_gmtoff=no)])
647 if test $nmh_cv_struct_tm_gmtoff = yes; then
648   AC_DEFINE(HAVE_TM_GMTOFF)
649 fi
650
651 dnl -------------
652 dnl CHECK SIGNALS
653 dnl -------------
654 dnl What style of signal do you have (POSIX, BSD, or SYSV)?
655 AC_MSG_CHECKING(what style of signals to use)
656 if test $ac_cv_func_sigaction = yes -a $ac_cv_func_sigprocmask = yes; then
657   signals_style=POSIX_SIGNALS
658   AC_DEFINE(POSIX_SIGNALS)
659   AC_DEFINE(RELIABLE_SIGNALS)
660 elif test $ac_cv_func_sigblock = yes -a $ac_cv_func_sigsetmask = yes; then
661   signals_style=BSD_SIGNALS
662   AC_DEFINE(BSD_SIGNALS)
663   AC_DEFINE(RELIABLE_SIGNALS)
664 elif test $ac_cv_func_sighold = yes -a $ac_cv_func_sigrelse = yes; then
665   signals_style=SYSV_SIGNALS
666   AC_DEFINE(SYSV_SIGNALS)
667 else
668   signals_style=NO_SIGNAL_BLOCKING
669   AC_DEFINE(NO_SIGNAL_BLOCKING)
670 fi
671
672 AC_MSG_RESULT($signals_style)
673
674 dnl Where is <signal.h> located?  Needed as input for signames.awk
675 AC_CACHE_CHECK(where signal.h is located, nmh_cv_path_signal_h,
676 [for SIGNAL_H in /usr/include/bsd/sys/signal.h  dnl Next
677                  /usr/include/asm/signal.h      dnl Linux 1.3.0 and above
678                  /usr/include/asm/signum.h      dnl some versions of Linux/Alpha
679                  /usr/include/linux/signal.h    dnl Linux up to 1.2.11
680                  /usr/include/sys/signal.h      dnl Almost everybody else
681                  /dev/null;                     dnl Just in case we fall through
682 do
683   test -f $SIGNAL_H && \
684   grep '#[      ]*define[       ][      ]*SIG[0-9A-Z]*[         ]*[0-9][0-9]*' $SIGNAL_H > /dev/null && \
685   break
686 done
687 nmh_cv_path_signal_h=$SIGNAL_H
688 ])
689 SIGNAL_H=$nmh_cv_path_signal_h
690 AC_SUBST(SIGNAL_H)dnl
691
692 dnl ----------------
693 dnl OS SPECIFIC DEFINES
694 dnl ----------------
695 case "$target_os" in
696
697   solaris2*)
698     AC_DEFINE(SYS5)
699     AC_DEFINE(SVR4)
700     ;;
701   irix*)
702     AC_DEFINE(SYS5)
703     AC_DEFINE(SVR4)
704     ;;
705   osf*)
706     AC_DEFINE(SYS5)
707     AC_DEFINE(SVR4)
708     ;;
709   aix*)
710     AC_DEFINE(SYS5)
711     AC_DEFINE(SVR4)
712     ;;
713   sunos4*)
714     AC_DEFINE(BSD42)
715     ;;
716   freebsd*)  
717     AC_DEFINE(BSD42)
718     AC_DEFINE(BSD44)
719     ;;
720   netbsd*)
721     AC_DEFINE(BSD42)
722     AC_DEFINE(BSD44)
723     ;;
724   openbsd*)
725     AC_DEFINE(BSD42)
726     AC_DEFINE(BSD44)
727     ;;
728   bsd/os*)
729     AC_DEFINE(BSD42)
730     AC_DEFINE(BSD44)
731     ;;
732   sco5*)
733     AC_DEFINE(SYS5)
734     AC_DEFINE(SCO_5_STDIO)
735     ;;
736 esac
737
738
739 dnl ----------------
740 dnl OUTPUT MAKEFILES
741 dnl ----------------
742 AC_OUTPUT(Makefile config/Makefile h/Makefile sbr/Makefile uip/Makefile \
743           zotnet/Makefile zotnet/mts/Makefile \
744           mts/Makefile mts/smtp/Makefile \
745           mts/sendmail/Makefile mts/mmdf/Makefile etc/Makefile \
746           docs/Makefile man/Makefile, \
747           [test -z "$CONFIG_HEADERS" || echo > stamp-h])
748
749 dnl Umm, what's the point of these assignments??  -- <dan-nmh@dilvish.speed.net>
750 eval "nmhbin=${bindir}";         eval "nmhbin2=${nmhbin}"
751 eval "nmhsysconf=${sysconfdir}"; eval "nmhsysconf2=${nmhsysconf}"
752 eval "nmhlib=${libdir}";         eval "nmhlib2=${nmhlib}"
753 eval "nmhman=${mandir}"
754
755 pop_kinds=no
756 if test x"$enable_pop" = x"yes"; then
757   pop_kinds="yes ("
758
759   if test x"$enable_apop" = x"yes"; then
760     pop_kinds="${pop_kinds}APOP "
761   fi
762
763   if test x"$with_krb4" != x -a x"$with_krb4" != x"no"; then
764     pop_kinds="${pop_kinds}KPOP "
765   fi
766
767   pop_kinds="${pop_kinds}POP3)"
768 fi
769
770 echo "
771 nmh configuration
772 -----------------
773 nmh version                : ${VERSION}
774 target os                  : ${target}
775 compiler                   : ${CC}
776 compiler flags             : ${CFLAGS}
777 linker flags               : ${LDFLAGS}
778 source code location       : ${srcdir}
779 binary install path        : ${nmhbin2}
780 libary install path        : ${nmhlib2}
781 config files install path  : ${nmhsysconf2}
782 man page install path      : ${nmhman}
783 transport system           : ${MTS}
784 default smtp servers       : ${smtpservers}
785 default editor             : ${editorpath}
786 default pager              : ${pagerpath}
787 email address masquerading : ${masquerade}
788 pop is enabled             : ${pop_kinds}"
789 echo ""
790
791
792