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