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