]> diplodocus.org Git - nmh/blob - configure.ac
Clean up comments, and update information on file locking.
[nmh] / configure.ac
1 dnl
2 dnl configure.ac -- autoconf template for nmh
3 dnl
4
5 dnl Move this up a bit
6 AC_PREREQ([2.68])
7
8 AC_INIT([nmh], m4_normalize(m4_include([VERSION])), [nmh-workers@nongnu.org])
9 AC_CONFIG_SRCDIR([h/nmh.h])
10 AC_CONFIG_HEADER([config.h])
11 AM_INIT_AUTOMAKE([-Wall foreign serial-tests subdir-objects 1.12])
12
13 AC_CANONICAL_HOST
14
15 AC_MSG_NOTICE([configuring for AC_PACKAGE_NAME-AC_PACKAGE_VERSION])
16 AC_SUBST(VERSION,AC_PACKAGE_VERSION)dnl
17
18 dnl What date of nmh are we building?
19 DATE=`cat ${srcdir}/DATE`
20 AC_MSG_NOTICE([configuring for nmh dated $DATE])
21 AC_SUBST([DATE])dnl
22
23 dnl --------------------------
24 dnl CHECK COMMAND LINE OPTIONS
25 dnl --------------------------
26
27 dnl Do you want to debug nmh?
28 AC_ARG_ENABLE([debug],
29 AS_HELP_STRING([--enable-debug],[enable nmh code debugging]))
30
31 dnl Do you want to disable use of locale functions
32 AH_TEMPLATE([LOCALE],
33 [Undefine if you don't want locale features. By default this is defined.])
34 AC_ARG_ENABLE([locale],
35 [AS_HELP_STRING([--disable-locale], [turn off locale features])],
36 [AS_IF([test x$enableval = xyes], [AC_DEFINE(LOCALE)])],
37 [AC_DEFINE(LOCALE)])
38
39 dnl Do you want client-side support for using SASL for authentication?
40 dnl Note that this code will be enabled for both POP and SMTP
41 AC_ARG_WITH([cyrus-sasl], AS_HELP_STRING([--with-cyrus-sasl],
42 [Enable SASL support via the Cyrus SASL library]))
43 AS_IF([test x"$with_cyrus_sasl" != x -a x"$with_cyrus_sasl" != x"no"],[
44 AC_DEFINE([CYRUS_SASL], [1],
45 [Define to use the Cyrus SASL library for authentication of POP and SMTP.])dnl
46 AS_IF([test x"$with_cyrus_sasl" != xyes],[
47 AC_MSG_WARN([Arguments to --with-cyrus-sasl now ignored])
48 AC_MSG_WARN([Please pass the appropriate arguments to CPPFLAGS/LDFLAGS])])
49 sasl_support=yes], [sasl_support=no])
50
51 dnl Do you want client-side support for encryption with TLS?
52 AC_ARG_WITH([tls], AS_HELP_STRING([--with-tls], [Enable TLS support]))
53 AS_IF([test x"$with_tls" != x -a x"$with_tls" != x"no"],[
54 AC_DEFINE([TLS_SUPPORT], [1], [Support TLS for session encryption.])dnl
55 tls_support=yes],[tls_support=no])
56
57 dnl Set the backup prefix
58 AC_ARG_WITH([hash-backup],
59 AS_HELP_STRING([--with-hash-backup],[use # as the backup prefix (default: ,)]))
60 AS_IF([test x"$with_hash_backup" != x -a x"$with_hash_backup" != x"no"],
61 [backup_prefix="#"], [backup_prefix=","])
62 AC_DEFINE_UNQUOTED([BACKUP_PREFIX], "$backup_prefix",
63 [The prefix that is prepended to the name of message files when they are "removed" by rmm. This should typically be `,' or `#'.])dnl
64
65 dnl What method of posting should post use?
66 AC_ARG_WITH([mts],
67 AS_HELP_STRING([--with-mts=@<:@smtp|sendmail/smtp|sendmail/pipe@:>@],
68 [specify the default mail transport agent/service]))
69
70 AS_IF([test x"$with_mts" = x"smtp"], [MTS="smtp"],
71 [test x"$with_mts" = x"sendmail"], [MTS="sendmail/smtp"],
72 [test x"$with_mts" = x"sendmail/smtp"], [MTS="sendmail/smtp"],
73 [test x"$with_mts" = x"sendmail/pipe"], [MTS="sendmail/pipe"],
74 [MTS="smtp"])
75 AC_SUBST([MTS])dnl
76
77 dnl What should be the default mail server(s)?
78 AC_ARG_WITH([smtpservers],
79 [AS_HELP_STRING([--with-smtpservers='SMTPSERVER1@<:@ SMTPSERVER2...@:>@'],
80 [specify the default SMTP server(s) @<:@localhost@:>@])])
81 AS_IF([test -n "$with_smtpservers"], [smtpservers="$with_smtpservers"],
82 [smtpservers="localhost"])
83 AC_SUBST([smtpservers])dnl
84
85 dnl ----------------------------------------------------
86 dnl Default location is /usr/local/nmh/{bin,etc,lib,man}
87 dnl ----------------------------------------------------
88 AC_PREFIX_DEFAULT([/usr/local/nmh])
89
90 dnl ------------------
91 dnl CHECK THE COMPILER
92 dnl ------------------
93 dnl We want these before the checks,
94 dnl so the checks can modify their values.
95 test -z "$CFLAGS" && CFLAGS= auto_cflags=1
96 if test x"$enable_debug" = x"yes"; then
97 test -z "$LDFLAGS" && LDFLAGS=-g
98 fi
99
100 AC_PROG_CC
101 AM_PROG_CC_C_O
102
103 AC_CACHE_CHECK([whether compiler supports -Wextra], [nmh_cv_has_wextra],
104 [nmh_saved_cflags="$CFLAGS"
105 CFLAGS="$CFLAGS -Wextra -Werror"
106 AC_TRY_COMPILE([],[],nmh_cv_has_wextra=yes,nmh_cv_has_wextra=no)
107 CFLAGS="$nmh_saved_cflags"])
108
109 dnl Can't use -ansi with gcc 4.5.3 on Cygwin, at least through setup
110 dnl setup version 2.763, because it disables some features in the
111 dnl system system header files and warns about them with -Wall. Try
112 dnl to test for that generally, though still with gcc.
113 if test "$GCC" = yes; then
114 AC_CACHE_CHECK([whether we can use -ansi with gcc], [nmh_cv_has_dash_ansi],
115 [nmh_saved_cppflags="$CPPFLAGS"
116 nmh_saved_cflags="$CFLAGS"
117 CPPFLAGS="-D_GNU_SOURCE"
118 CFLAGS="-ansi -Wall -Werror"
119 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <time.h>],[tzset();])],
120 [nmh_cv_has_dash_ansi=yes],
121 [nmh_cv_has_dash_ansi=no])
122 CPPFLAGS="$nmh_saved_cppflags"
123 CFLAGS="$nmh_saved_cflags"])
124
125 dnl Disable clang complaint about unused -ansi when linking.
126 AC_CACHE_CHECK([whether linker supports -Qunused-arguments],
127 [nmh_cv_has_q_unused_arguments],
128 [nmh_saved_ldflags="$LDFLAGS"
129 LDFLAGS="$LDFLAGS -Qunused-arguments"
130 AC_TRY_LINK([],[],nmh_cv_has_q_unused_arguments=yes,
131 nmh_cv_has_q_unused_arguments=no)
132 LDFLAGS="$nmh_saved_ldflags"])
133
134 if test "$nmh_cv_has_q_unused_arguments" = "yes"; then
135 test -z "$LDFLAGS" && LDFLAGS=-Qunused-arguments \
136 || LDFLAGS="$LDFLAGS -Qunused-arguments"
137 fi
138 else
139 nmh_cv_has_dash_ansi=no
140 fi
141
142 dnl if the user hasn't specified CFLAGS, then
143 dnl if compiler is gcc, then
144 dnl use -O2 and some warning flags
145 dnl else use -O
146 dnl We use -Wall and -Wextra if supported. If the compiler supports it we
147 dnl also use -Wno-pointer-sign, because gcc 4 now produces a lot of new
148 dnl warnings which are probably mostly spurious and which in any case we
149 dnl don't want to deal with now.
150 if test "$nmh_cv_has_dash_ansi" = "yes"; then
151 nmh_gcc_warnflags="-ansi -pedantic -Wall"
152 else
153 nmh_gcc_warnflags="-Wall"
154 fi
155 if test "$nmh_cv_has_wextra" = "yes"; then
156 nmh_gcc_warnflags="${nmh_gcc_warnflags} -Wextra"
157 fi
158
159 if test -n "$auto_cflags"; then
160 if test x"$enable_debug" = x"yes"; then
161 if test -n "$GCC"; then
162 test -z "$CFLAGS" && CFLAGS="$nmh_gcc_warnflags -g" || CFLAGS="$CFLAGS $nmh_gcc_warnflags -g"
163 else
164 test -z "$CFLAGS" && CFLAGS=-g || CFLAGS="$CFLAGS -g"
165 fi
166 else
167 if test -z "$LDFLAGS"; then
168 case "$build_os" in
169 darwin*)
170 LDFLAGS=
171 ;;
172 *)
173 LDFLAGS=-s
174 ;;
175 esac
176 fi
177 if test -n "$GCC"; then
178 test -z "$CFLAGS" && CFLAGS="$nmh_gcc_warnflags -O2" || CFLAGS="$CFLAGS $nmh_gcc_warnflags -O2"
179 else
180 test -z "$CFLAGS" && CFLAGS=-O || CFLAGS="$CFLAGS -O"
181 fi
182 AC_DEFINE([NDEBUG], [1],
183 [Define to disable run-time debugging and asserts.])
184 fi
185 fi
186
187 dnl ------------------
188 dnl CHECK FOR PROGRAMS
189 dnl ------------------
190 AC_PROG_MAKE_SET dnl Does make define $MAKE
191 AC_PROG_INSTALL dnl Check for BSD compatible `install'
192 AC_PROG_RANLIB dnl Check for `ranlib'
193 AC_PROG_AWK dnl Check for mawk,gawk,nawk, then awk
194 AC_PROG_SED dnl Check for Posix-compliant sed
195 AM_PROG_LEX dnl Check for lex/flex
196
197 AM_PROG_AR
198
199 dnl Look for `cut'
200 pathtmp=/usr/xpg4/bin:/usr/bin:/bin:/usr/local/bin:/usr/ucb
201 AC_PATH_PROG([cutpath], [cut], [no], [$pathtmp])
202
203 dnl
204 dnl Check for MD5 program and formatting command
205 dnl
206 AC_CHECK_PROGS([MD5SUM], [md5sum md5], [missing])
207 AS_CASE(["${MD5SUM}"],
208 [md5sum], [MD5FMT="cat"],
209 [md5], [[MD5FMT="${SED} -e 's/MD5 *(.*) *= \([0-9a-f]*\)/\1/'"]],
210 [MD5FMT="missing"])
211 AC_SUBST([MD5FMT])
212
213 dnl ----------------------------------------------
214 dnl check for lclint, and lint if it doesn't exist
215 dnl ----------------------------------------------
216 AC_CHECK_PROG([linttmp1], [lclint], [lclint], [no])dnl
217 AS_IF([test x$ac_cv_prog_linttmp1 != xno],
218 [LINT=$ac_cv_prog_linttmp1
219 LINTFLAGS="-weak +posixlib -macrovarprefixexclude"],
220 [AC_CHECK_PROG([linttmp2], [lint], [lint], [no])dnl
221 AS_IF([test x$ac_cv_prog_linttmp2 != xno],
222 [LINT=$ac_cv_prog_linttmp2
223 LINTFLAGS=""],
224 [LINT="echo 'No lint program found'"
225 LINTFLAGS=""])])
226 AC_SUBST([LINT])dnl
227 AC_SUBST([LINTFLAGS])dnl
228
229 dnl Look for `ls'
230 pathtmp=/usr/xpg4/bin:/usr/bin:/bin:/usr/local/bin:/usr/ucb
231 AC_PATH_PROG([lspath], [ls], [no], [$pathtmp])
232
233 dnl See how we get ls to display the owner and the group
234 AS_IF([test "$lspath" != "no"],
235 [AC_CACHE_CHECK([how to get ls to show us the group ownership of a file],
236 [nmh_cv_ls_grpopt],
237 [AS_IF([test x"`$lspath -dl / | $AWK '{print $9}'`" = x"/"],[
238 dnl There were 9 parameters, so unless this is a really bizarre, nonstandard
239 dnl ls, it would seem -l gave us both the user and group. On this type of
240 dnl ls, -g makes _only_ the group be displayed (and not the user).
241 nmh_cv_ls_grpopt="-l"],[
242 dnl Looks like -l only gave us the user, so we need -g to get the group too.
243 nmh_cv_ls_grpopt="-lg"])])])
244
245 dnl Look for `sendmail'
246 pathtmp=/usr/sbin:/usr/lib:/usr/etc:/usr/ucblib:/usr/bin:/bin
247 AC_PATH_PROG([sendmailpath], [sendmail], [/usr/sbin/sendmail], [$pathtmp])
248
249 dnl Cygwin FAT filesystems do not support hard links. So default to
250 dnl cp instead, even if running on an NTFS or other filesystem.
251 AS_CASE(["$host_os"],
252 [cygwin*], [LN=cp],
253 [LN=ln])
254 AC_SUBST([LN])
255
256 dnl ----------------------------------------------------------
257 dnl FIND MAIL SPOOL AND SEE IF WE NEED TO MAKE inc SETGID MAIL
258 dnl ----------------------------------------------------------
259 AC_CACHE_CHECK(where mail spool is located, nmh_cv_mailspool,
260 [for mailspool in /var/mail dnl
261 /var/spool/mail dnl
262 /usr/spool/mail dnl
263 /dev/null; dnl Just in case we fall through
264 do
265 test -d $mailspool && break
266 done
267 nmh_cv_mailspool=$mailspool
268 ])
269 mailspool=$nmh_cv_mailspool
270 AC_SUBST([mailspool])dnl
271
272 dnl See whether the mail spool directory is world-writable.
273 if test "$lspath" != "no" -a "$cutpath" != "no"; then
274 AC_CACHE_CHECK(whether the mail spool is world-writable,
275 nmh_cv_mailspool_world_writable,
276 [if test "`$lspath -dlL $mailspool | $cutpath -c9`" = "-"; then
277 nmh_cv_mailspool_world_writable=no
278 else
279 nmh_cv_mailspool_world_writable=yes
280 fi])
281 fi
282
283 dnl Also, check for liblockfile (as found on Debian systems)
284 AC_CHECK_HEADER([lockfile.h], [AC_CHECK_LIB(lockfile, lockfile_create)])
285
286 dnl and whether its companion program dotlockfile is setgid
287 AC_PATH_PROG(dotlockfilepath, dotlockfile, no)
288 if test "$ac_cv_lib_lockfile_lockfile_create" != "no" ; then
289 if test "$ac_cv_path_dotlockfilepath" != "no" ; then
290 AC_CACHE_CHECK(whether dotlockfile is setgid, nmh_cv_dotlockfile_setgid,
291 [ if test -g "$ac_cv_path_dotlockfilepath" ; then
292 nmh_cv_dotlockfile_setgid=yes
293 else
294 nmh_cv_dotlockfile_setgid=no
295 fi])
296 fi
297 fi
298
299 dnl Provide a way for distcheck to disable setgid_mail via
300 dnl DISTCHECK_CONFIGURE_FLAGS.
301 AS_IF([test x"$DISABLE_SETGID_MAIL" != x -a x"$DISABLE_SETGID_MAIL" != x0],
302 [nmh_cv_dotlockfile_setgid=yes])
303
304 dnl If mailspool is not world-writable and dotlockfile is not setgid,
305 dnl we need to #define MAILGROUP to 1 and make inc setgid.
306 if test x"$LOCKTYPE" = x"dot" -a x"$nmh_cv_mailspool_world_writable" = x"no" -a x"$nmh_cv_dotlockfile_setgid" != x"yes" ; then
307 dnl do we really need both of these?
308 AC_DEFINE(MAILGROUP,1,
309 [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
310 SETGID_MAIL=1
311 fi
312 AC_SUBST([SETGID_MAIL])dnl
313
314 dnl Use ls to see which group owns the mail spool directory.
315 AC_CACHE_CHECK(what group owns the mail spool, nmh_cv_ls_mail_grp,
316 [nmh_cv_ls_mail_grp=`$lspath -dL $nmh_cv_ls_grpopt $mailspool|$AWK '{print $4}'`
317 ])
318 MAIL_SPOOL_GRP=$nmh_cv_ls_mail_grp
319 AC_SUBST(MAIL_SPOOL_GRP)dnl
320
321 dnl ------------------
322 dnl CHECK HEADER FILES
323 dnl ------------------
324
325 dnl On glibc we need to define at least the '_XOPEN_SOURCE' level of features,
326 dnl or wchar.h doesn't declare a prototype for wcwidth(). But if we only define
327 dnl that level then db.h won't compile. So we define _GNU_SOURCE which turns
328 dnl on everything. Perhaps other OSes need some feature switch set to get wcwidth()
329 dnl declared; if so they should have an entry added to this case statement.
330 dnl NB that we must define this on the compiler command line, not in config.h,
331 dnl because it must be set before any system header is included and there's no
332 dnl portable way to make sure that files generated by lex include config.h
333 dnl before system header files.
334
335 AS_CASE(["$host_os"],
336 [linux*],
337 [# Like DEFS, but doesn't get stomped on by configure when using config.h:
338 AS_IF([test -z "$CPPFLAGS"],[CPPFLAGS="-D_GNU_SOURCE"],
339 [CPPFLAGS="$CPPFLAGS -D_GNU_SOURCE"])])
340
341 AC_HEADER_TIOCGWINSZ
342 AC_CHECK_HEADERS([fcntl.h ncurses/termcap.h termcap.h langinfo.h \
343 wchar.h wctype.h sys/param.h sys/time.h sys/stream.h])
344
345 AC_CHECK_HEADER([sys/ptem.h], AC_DEFINE(WINSIZE_IN_PTEM,1,
346 [Define to 1 if `struct winsize' requires <sys/ptem.h>.]),,
347 [[#if HAVE_SYS_STREAM_H
348 # include <sys/stream.h>
349 #endif
350 ]])
351
352 dnl ---------------
353 dnl CHECK FUNCTIONS
354 dnl ---------------
355 AC_CHECK_FUNCS([wcwidth mbtowc writev lstat nl_langinfo getutxent])
356
357 dnl Check for multibyte character set support
358 AS_IF([test "x$ac_cv_header_wchar_h" = "xyes" -a \
359 "x$ac_cv_header_wctype_h" = "xyes" -a \
360 "x$ac_cv_func_wcwidth" = "xyes" -a \
361 "x$ac_cv_func_mbtowc" = "xyes"],
362 [AC_DEFINE([MULTIBYTE_SUPPORT], [1],
363 [Define to enable support for multibyte character sets.])
364 MULTIBYTE_ENABLED=1],
365 [MULTIBYTE_ENABLED=0])
366 AC_SUBST([MULTIBYTE_ENABLED])
367
368 dnl -------------------
369 dnl CHECK FOR LIBRARIES
370 dnl -------------------
371 dnl Check location of modf
372 AC_CHECK_FUNC([modf], , AC_CHECK_LIB([m], [modf]))
373
374 dnl Checks for network libraries (nsl, socket)
375 NMH_CHECK_NETLIBS
376
377 dnl Check for readline support
378 NMH_READLINE
379
380 dnl Check the locking functions supported and what we should use by default
381 NMH_LOCKING
382
383 dnl Check for iconv
384 NMH_CHECK_ICONV
385
386 termcap_curses_order="termcap curses ncurses"
387 for lib in $termcap_curses_order; do
388 AC_CHECK_LIB(${lib}, tgetent, [TERMLIB="-l$lib"; break])
389 done
390 AC_SUBST([TERMLIB])dnl
391 AS_IF([test "x$TERMLIB" = "x"],
392 [AC_MSG_FAILURE([Could not find tgetent in any library. Is there a curses
393 or ncurses library or package that you can install?])])
394
395 dnl --------------
396 dnl CHECK FOR NDBM
397 dnl --------------
398
399 AC_ARG_WITH([ndbm],AS_HELP_STRING([--with-ndbm=ARG],[use -lARG to link with ndbm]),
400 [nmh_ndbm=$withval],[nmh_ndbm=autodetect])
401 AC_ARG_WITH([ndbmheader],AS_HELP_STRING([--with-ndbmheader=ARG],[#include <ARG> to use ndbm]),
402 [nmh_ndbmheader=$withval],[nmh_ndbmheader=autodetect])
403
404 if test "$nmh_ndbm" = "autodetect"; then
405 if test "$nmh_ndbmheader" != "autodetect"; then
406 AC_MSG_ERROR([must specify both --with-ndbm and --with-ndbmheader or neither])
407 else
408
409 dnl There are at least four implementations of ndbm, and
410 dnl several of those can be in different places at the whim
411 dnl of the system integrator. A good summary of this mess
412 dnl can be found at http://www.unixpapa.com/incnote/dbm.html
413
414 dnl Classic ndbm with no library required (eg NetBSD): try this
415 dnl first so we don't accidentally link in a pointless but harmless
416 dnl library in one of the later ndbm.h+libfoo tests:
417 NMH_CHECK_NDBM(ndbm.h,,,
418 dnl Berkeley DBv2 emulating ndbm: header in db.h:
419 NMH_CHECK_NDBM(db.h,db,,
420 dnl Berkeley DBv1 emulating ndbm:
421 NMH_CHECK_NDBM(ndbm.h,db,,
422 NMH_CHECK_NDBM(ndbm.h,db1,,
423 dnl Classic ndbm:
424 NMH_CHECK_NDBM(ndbm.h,ndbm,,
425 dnl glibc2.1 systems put db1 in a subdir:
426 NMH_CHECK_NDBM(db1/ndbm.h,db1,,
427 dnl GNU gdbm emulating ndbm, with header possibly in gdbm/
428 dnl and possibly needing gbdm_compat library:
429 NMH_CHECK_NDBM(gdbm/ndbm.h,gdbm,,
430 NMH_CHECK_NDBM(gdbm/ndbm.h,gdbm_compat -lgdbm,,
431 NMH_CHECK_NDBM(ndbm.h,gdbm,,
432 NMH_CHECK_NDBM(ndbm.h,gdbm_compat -lgdbm))))))))))
433
434 fi
435 else
436 dnl We don't really need to check that the user-specified values work,
437 dnl but it is a convenience to the user to bomb out early rather than
438 dnl after configure and half the compile process.
439 NMH_CHECK_NDBM([$nmh_ndbmheader],[$nmh_ndbm])
440 fi
441
442 if test "$nmh_ndbm_found" = "no"; then
443 AC_MSG_ERROR([could not find a working ndbm library/header combination])
444 else
445 dnl Now export the lib/header to our makefile/config.h:
446 if test x"$nmh_ndbmheader" != x; then
447 AC_DEFINE_UNQUOTED(NDBM_HEADER, <$nmh_ndbmheader>,
448 [Define to the header containing the ndbm API prototypes.])
449 fi
450 if test x"$nmh_ndbm" != x; then
451 NDBM_LIBS="-l$nmh_ndbm"
452 else
453 NDBM_LIBS=
454 fi
455 AC_SUBST([NDBM_LIBS])
456 fi
457
458 dnl ------------------
459 dnl Set RPM build root
460 dnl ------------------
461 dnl nmhrpm is used in the final summary, see below. The default value is
462 dnl reported there as ./RPM, consistent with the reporting of the default
463 dnl source code location as ., but its absolute path is used in the Makefile.
464 AC_ARG_WITH([rpmdir],
465 [AS_HELP_STRING([--with-rpmdir=RPMDIR], [RPM build directory @<:@RPM@:>@])])
466 AS_IF([test x"$with_rpmdir" = x], [rpmdir='$(abs_srcdir)/RPM'; nmhrpm=./RPM],
467 [rpmdir="$with_rpmdir"; eval "nmhrpm=${rpmdir}"])
468 AC_SUBST([rpmdir])
469
470
471 dnl --------------------
472 dnl CHECK FOR CYRUS-SASL
473 dnl --------------------
474
475 AS_IF([test x"$sasl_support" = x"yes"],[
476 AC_CHECK_HEADER([sasl/sasl.h], , [AC_MSG_ERROR([sasl.h not found])])
477 AC_CHECK_LIB([sasl2], [sasl_client_new], [SASLLIB="-lsasl2"],
478 [AC_MSG_ERROR([Cyrus SASL library not found])])],[SASLLIB=""])
479 AC_SUBST([SASLLIB])
480
481 dnl -----------------
482 dnl CHECK FOR OPENSSL
483 dnl -----------------
484
485 AS_IF([test x"$tls_support" = x"yes"],[
486 AC_CHECK_HEADER([openssl/ssl.h], , [AC_MSG_ERROR([openssl/ssl.h not found])])
487 AC_CHECK_LIB([crypto], [BIO_write], [TLSLIB="-lcrypto"],
488 [AC_MSG_ERROR([OpenSSL crypto library not found])])
489 AC_CHECK_LIB([ssl], [SSL_library_init], [TLSLIB="-lssl $TLSLIB"],
490 [AC_MSG_ERROR([OpenSSL library not found])])],
491 [TLSLIB=])
492 AC_SUBST([TLSLIB])
493
494 dnl ---------------------
495 dnl CHECK TERMCAP LIBRARY
496 dnl ---------------------
497
498 dnl Add the termcap library, so that the following configure
499 dnl tests will find it when it tries to link test programs.
500 nmh_save_LIBS="$LIBS"
501 LIBS="$TERMLIB $LIBS"
502
503 dnl Check if tgetent accepts NULL (and will allocate its own termcap buffer)
504 dnl Some termcaps reportedly accept a zero buffer, but then dump core
505 dnl in tgetstr().
506 dnl Under Cygwin test program crashes but exit code is still 0. So,
507 dnl we test for a file that porgram should create
508 AH_TEMPLATE([TGETENT_ACCEPTS_NULL],
509 [Define to 1 if tgetent() accepts NULL as a buffer.])
510 AC_CACHE_CHECK(if tgetent accepts NULL,
511 nmh_cv_func_tgetent_accepts_null,
512 [AC_TRY_RUN([
513 main()
514 {
515 char buf[4096];
516 int r1 = tgetent(buf, "vt100");
517 int r2 = tgetent((char*)0,"vt100");
518 if (r1 >= 0 && r1 == r2) {
519 char tbuf[1024], *u;
520 u = tbuf;
521 tgetstr("cl", &u);
522 creat("conftest.tgetent", 0640);
523 }
524 exit((r1 != r2) || r2 == -1);
525 }
526 ],
527 if test -f conftest.tgetent; then
528 nmh_cv_func_tgetent_accepts_null=yes
529 else
530 nmh_cv_func_tgetent_accepts_null=no
531 fi,
532 nmh_cv_func_tgetent_accepts_null=no,
533 nmh_cv_func_tgetent_accepts_null=no)])
534 if test x$nmh_cv_func_tgetent_accepts_null = xyes; then
535 AC_DEFINE(TGETENT_ACCEPTS_NULL)
536 fi
537 AC_CACHE_CHECK(if tgetent returns 0 on success,
538 nmh_cv_func_tgetent_zero_success,
539 [AC_TRY_RUN([
540 main()
541 {
542 char buf[4096];
543 int r1 = tgetent(buf, "!@#$%^&*");
544 int r2 = tgetent(buf, "vt100");
545 if (r1 < 0 && r2 == 0) {
546 char tbuf[1024], *u;
547 u = tbuf;
548 tgetstr("cl", &u);
549 creat("conftest.tgetent0", 0640);
550 }
551 exit(r1 == r2);
552 }
553 ],
554 if test -f conftest.tgetent0; then
555 nmh_cv_func_tgetent_zero_success=yes
556 else
557 nmh_cv_func_tgetent_zero_success=no
558 fi,
559 nmh_cv_func_tgetent_zero_success=no,
560 nmh_cv_func_tgetent_zero_success=no)])
561 AH_TEMPLATE([TGETENT_SUCCESS],
562 [Define to what tgetent() returns on success (0 on HP-UX X/Open curses).])
563 if test x$nmh_cv_func_tgetent_zero_success = xyes; then
564 AC_DEFINE(TGETENT_SUCCESS, 0)
565 else
566 AC_DEFINE(TGETENT_SUCCESS, 1)
567 fi
568
569 dnl Now put the libraries back to what it was before we
570 dnl starting checking the termcap library.
571 LIBS="$nmh_save_LIBS"
572
573 dnl ----------------
574 dnl CHECK FLEX FIXUP
575 dnl ----------------
576 dnl Use LFLAGS make variable setting to work around bugs in flex
577 dnl 2.5.35-37 that cause signed/unsigned mismatch,
578 dnl http://sourceforge.net/p/flex/bugs/140/
579 AS_IF([test "$LEX" = flex],
580 [AS_CASE([`$LEX -V`],
581 [flex\ 2.5.35], [[LFLAGS=\
582 '; printf "%s\n" '\''1,$$s/(size_t) \(num_to_read\)/\1/'\'' w q | ed -s $@']],
583 [flex\ 2.5.3@<:@67@:>@], [[LFLAGS=\
584 '; printf "%s\n" '\''1,$$s/\( \)int i;/\1yy_size_t i;/'\'' w q | ed -s $@']])
585 AC_SUBST([LFLAGS])])
586
587 dnl --------------
588 dnl CHECK TYPEDEFS
589 dnl --------------
590 AC_TYPE_PID_T
591 AC_TYPE_OFF_T
592 AC_TYPE_UID_T
593 AC_TYPE_MODE_T
594 AC_TYPE_SIZE_T
595
596 dnl ----------------
597 dnl CHECK STRUCTURES
598 dnl ----------------
599
600 dnl For platforms such as FreeBSD that have tm_gmtoff in struct tm.
601 dnl (FreeBSD has a timezone() function but not a timezone global
602 dnl variable that is visible).
603 AC_CHECK_MEMBERS([struct tm.tm_gmtoff],,,[#include <time.h>])
604
605 AC_STRUCT_DIRENT_D_TYPE
606
607 dnl Where is <signal.h> located? Needed as input for signames.awk
608 AC_CACHE_CHECK(where signal.h is located, nmh_cv_path_signal_h,
609 [for SIGNAL_H in /usr/include/bsd/sys/signal.h dnl Next
610 /usr/include/asm/signal.h dnl Linux 1.3.0 and above
611 /usr/include/asm/signum.h dnl some versions of Linux/Alpha
612 /usr/include/linux/signal.h dnl Linux up to 1.2.11
613 /usr/include/sys/signal.h dnl Almost everybody else
614 /dev/null; dnl Just in case we fall through
615 do
616 test -f $SIGNAL_H && \
617 grep '#[ ]*define[ ][ ]*SIG[0-9A-Z]*[ ]*[0-9][0-9]*' $SIGNAL_H > /dev/null && \
618 break
619 done
620 nmh_cv_path_signal_h=$SIGNAL_H
621 ])
622 SIGNAL_H=$nmh_cv_path_signal_h
623 AC_SUBST(SIGNAL_H)dnl
624
625 dnl
626 dnl Sigh, this is required because under the new world order autoconf has
627 dnl nothing to create in a few of the build directories when doing an object
628 dnl tree build. So make sure we created certain directories if they don't
629 dnl exist.
630 dnl
631
632 AC_CONFIG_COMMANDS([build-directories],
633 [test -d etc || AS_MKDIR_P([etc])
634 test -d man || AS_MKDIR_P([man])])
635
636 AC_CONFIG_COMMANDS_POST([
637
638 dnl These odd looking assignments are done to expand out unexpanded
639 dnl variables in bindir et al (for instance mandir is '${datarootdir}/man'),
640 dnl but expanding that gives '${prefix}/share/man', so we need to expand
641 dnl again to get the final answer.
642 dnl We only use the expanded versions to print the install paths in
643 dnl the final summary and should use them nowhere else (see the autoconf
644 dnl docs for the rationale for bindir etc being unexpanded).
645 eval "nmhbin=${bindir}"; eval "nmhbin=${nmhbin}"
646 eval "nmhsysconf=${sysconfdir}"; eval "nmhsysconf=${nmhsysconf}"
647 eval "nmhlib=${libdir}"; eval "nmhlib=${nmhlib}"
648 eval "nmhman=${mandir}"; eval "nmhman=${nmhman}"
649 eval "nmhrpm=${nmhrpm}";
650
651 AC_MSG_NOTICE([
652 nmh configuration
653 -----------------
654 nmh version : AC_PACKAGE_VERSION
655 host os : ${host}
656 compiler : ${CC}
657 compiler flags : ${CFLAGS}
658 linker flags : ${LDFLAGS}
659 preprocessor flags : ${CPPFLAGS}
660 source code location : ${srcdir}
661 binary install path : ${nmhbin}
662 library install path : ${nmhlib}
663 config files install path : ${nmhsysconf}
664 man page install path : ${nmhman}
665 RPM build root : ${nmhrpm}
666 backup prefix : ${backup_prefix}
667 transport system : ${MTS}
668 spool default locking type : ${with_locking}
669 default smtp servers : ${smtpservers}
670 SASL support : ${sasl_support}
671 TLS support : ${tls_support}
672 ])])dnl
673
674 dnl ---------------
675 dnl OUTPUT MAKEFILE
676 dnl ---------------
677 AC_CONFIG_FILES([Makefile test/common.sh])
678 AC_CONFIG_FILES([uip/spost], [chmod +x uip/spost])
679 AC_OUTPUT