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