]> Pileus Git - ~andy/fetchmail/blob - configure.ac
2e61aed474fe394db8c892f4504717e0b04432c8
[~andy/fetchmail] / configure.ac
1 dnl Autoconfigure input file for fetchmail
2 #
3 # Fetchmail automatic configuration support
4 #
5 # Eric S. Raymond <esr@thyrsus.com>
6 # 2004 - 2010 Matthias Andree <matthias.andree@gmx.de>
7 #
8 dnl Process this file with autoconf to produce a configure script.
9 dnl
10
11 dnl XXX - if bumping version here, check fetchmail.man, too!
12 AC_INIT([fetchmail],[6.4.0-alpha1],[fetchmail-devel@lists.berlios.de])
13 AC_CONFIG_SRCDIR([fetchmail.h])
14 AC_CONFIG_HEADERS([config.h])
15 AC_CONFIG_LIBOBJ_DIR([.])
16
17 AC_CANONICAL_HOST
18
19 dnl automake options are in Makefile.am
20 AC_PREREQ(2.60)
21 dnl 2.60 required for AC_USE_SYSTEM_EXTENSIONS
22 AM_INIT_AUTOMAKE
23
24 dnl python is optional
25 #
26 # you can pass PYTHON=: in environment or on the command line
27 # to disable python detection and continue without building/installing
28 # fetchmail.conf -- be sure to check README.packaging, too!
29 #
30 AM_PATH_PYTHON(2.0,,AC_MSG_WARN([Disabling fetchmailconf: python 2.0 or greater not found]))
31 AM_CONDITIONAL([HAVE_PYTHON], [test "$PYTHON" != :])
32
33 AC_PROG_AWK
34 AC_PROG_CC
35 AM_PROG_CC_C_O
36 AC_PROG_CPP                     dnl Later checks need this.
37 AC_PROG_INSTALL
38 AM_PROG_LEX
39 AC_PROG_MAKE_SET
40 AC_PROG_RANLIB
41 AC_PROG_YACC
42
43 AC_USE_SYSTEM_EXTENSIONS
44
45 dnl check for b0rked Solaris (and other shells) and find one that works
46 AC_MSG_CHECKING(for a working shell...)
47 for i in /usr/xpg6/bin/sh /usr/xpg4/bin/sh /usr/ccs/bin/sh /bin/sh /usr/bin/sh /bin/ksh /bin/bash /usr/local/bin/bash ; do
48     $i -c 'if ! false ; then echo $(echo ok) ; fi' >config.$$ 2>/dev/null
49     j=`cat config.$$`
50     rm -f config.$$
51     if test "x$j" = "xok" ; then
52         SHELL=$i
53         AC_SUBST(SHELL)
54         break
55     fi
56 done
57 AC_MSG_RESULT($SHELL)
58 if test "x$SHELL" = "x" ; then
59     AC_MSG_ERROR(no SUS compliant shell found - on Solaris, install SUNWxcu4)
60 fi
61
62
63 AC_TYPE_SIZE_T
64 AC_TYPE_PID_T
65 AC_CHECK_HEADERS([arpa/nameser.h md5.h])
66
67 AC_CHECK_HEADERS([resolv.h],,,[
68 #include <sys/types.h>
69 #ifdef HAVE_NETINET_IN_H
70 #include <netinet/in.h>
71 #endif
72 #ifdef HAVE_ARPA_NAMESER_H
73 #include <arpa/nameser.h>
74 #endif
75 ])
76
77 AC_CHECK_DECLS([h_errno],,,[
78         AC_INCLUDES_DEFAULT
79         #ifdef HAVE_NETDB_H
80         #include <netdb.h>
81         #endif
82 ])
83
84 AC_C_CONST                      dnl getopt needs this.
85
86 # Check for OS special cases
87 case $host_os in
88 darwin*)
89     AC_MSG_NOTICE(found Darwin - Adding -DBIND_8_COMPAT to CFLAGS)
90     CPPFLAGS="$CPPFLAGS -DBIND_8_COMPAT"
91     ;;
92 # Check for FreeBSD special case: more libs needed
93 freebsd*)
94     AC_MSG_NOTICE(found FreeBSD - Adding -lkvm -lcom_err to standard libraries)
95     LIBS="$LIBS -lkvm -lcom_err"
96     ;;
97 esac
98
99 AC_CACHE_SAVE
100
101 dnl i18n
102 AM_GNU_GETTEXT([external], [need-ngettext])
103 AM_GNU_GETTEXT_VERSION([0.17])
104 dnl end i18n
105
106 # Under sysV68, socket and friends are provided by the C library.
107 # -linet does not provide socket, but causes multiple definition
108 # errors at link-time.  It is thus better to only use the C library.
109 # So don't add -linet to the link list unless it's necessary
110 AC_CHECK_FUNC(socket,
111     AC_MSG_RESULT(using libc's socket),
112     AC_CHECK_LIB(socket,socket)
113     AC_CHECK_LIB(inet,socket))
114
115 # The condition in this test copes with the presence of inet_addr in libc6.
116 AC_CHECK_FUNC(inet_addr,
117     AC_MSG_RESULT(using libc's inet_addr),
118     AC_CHECK_LIB(nsl,inet_addr))
119
120 AC_REPLACE_FUNCS([stpcpy strlcpy strlcat])
121
122 have_md5=no
123 if test "$ac_cv_header_md5_h" != no ; then
124     AC_SEARCH_LIBS(MD5Init, [md], [have_md5=yes])
125 fi
126
127 if test "$have_md5" != yes ; then
128     AC_LIBSOURCE(md5c.c)
129     EXTRAOBJ="$EXTRAOBJ md5c.\$(OBJEXT)"
130 fi
131
132 AC_CHECK_FUNC(getopt_long, [],
133               [AC_LIBSOURCES([getopt.c, getopt1.c])
134                EXTRAOBJ="$EXTRAOBJ getopt.\$(OBJEXT) getopt1.\$(OBJEXT)"])
135
136 AC_SUBST(EXTRAOBJ)
137
138 AC_CHECK_FUNCS(vsyslog inet_aton)
139
140 dnl INET6 is used by KAME/getnameinfo
141 AC_CACHE_CHECK(for AF_INET6/PF_INET6,ac_cv_inet6,
142 AC_COMPILE_IFELSE([
143   AC_LANG_PROGRAM([[
144     #ifdef HAVE_SYS_TYPES_H
145     #include <sys/types.h>
146     #endif
147     #ifdef HAVE_SYS_SOCKET_H
148     #include <sys/socket.h>
149     #endif
150   ]],[[
151     int foo = AF_INET6;
152     int bar = PF_INET6;
153   ]])],
154   ac_cv_inet6=yes , ac_cv_inet6=no
155 ))
156 if test "x$ac_cv_inet6" = xyes
157 then
158     AC_DEFINE(INET6,1,Define to 1 if your system defines AF_INET6 and PF_INET6.)
159 fi
160
161 # Under Red Hat 4.0 (and many other Linuxes) -lresolv is seriously flaky
162 # and breaks gethostbyname(2).  It's better to use the bind stuff in the C
163 # library.  So don't add -lresolv to the link list unless it's necessary
164 # (It will be necessary when using GNU libc6).
165 old_LIBS="$LIBS"
166 for lib in '' -lresolv; do
167     if test -z "$lib"; then
168        AC_MSG_CHECKING([for res_search in libc])
169     else
170        AC_MSG_CHECKING([for res_search in $lib])
171     fi
172     LIBS="$old_LIBS $lib"
173     AC_LINK_IFELSE([AC_LANG_PROGRAM([[
174 #include <sys/types.h>
175 #ifdef HAVE_NETINET_IN_H
176 #include <netinet/in.h>
177 #endif
178 #ifdef HAVE_ARPA_NAMESER_H
179 #include <arpa/nameser.h>
180 #endif
181 #ifdef HAVE_RESOLV_H
182 #include <resolv.h>
183 #endif
184 extern int res_search();
185 ]], [[res_search(0, 0, 0, 0, 0); dn_skipname(0,0);]])],
186     [AC_MSG_RESULT([found])
187      AC_DEFINE(HAVE_RES_SEARCH, [1],
188                [Define to 1 if you have the 'res_search' and 'dn_skipname' functions.])
189      break], [AC_MSG_RESULT([not found])])
190      LIBS=$old_LIBS
191 done
192
193 dnl Check for libcrypt -- it may live in libc or libcrypt, as on IRIX
194 AC_CHECK_FUNC(crypt, , AC_CHECK_LIB(crypt,crypt))
195
196 dnl Check for usable void pointer type
197 AC_MSG_CHECKING(use of void pointer type)
198 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[char *p;
199     void *xmalloc();
200     p = (char *) xmalloc(1);
201    ]])],[AC_DEFINE(HAVE_VOIDPOINTER,1,[Define if your C compiler allows void * as a function result]) AC_MSG_RESULT(yes)],[AC_MSG_RESULT(no)])
202
203 dnl Check for ANSI volatile
204 AC_C_VOLATILE
205
206 dnl Check out the wait reality.  We have to assume sys/wait.h is present.
207 AC_CHECK_FUNCS(waitpid wait3)
208 AC_MSG_CHECKING(for union wait);
209 AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h>
210 #include <sys/wait.h>]], [[union wait status; int pid; pid = wait (&status);
211 #ifdef WEXITSTATUS
212 /* Some POSIXoid systems have both the new-style macros and the old
213    union wait type, and they do not work together.  If union wait
214    conflicts with WEXITSTATUS et al, we do not want to use it at all.  */
215 if (WEXITSTATUS (status) != 0) pid = -1;
216 #endif
217 #ifdef HAVE_WAITPID
218 /* Make sure union wait works with waitpid.  */
219 pid = waitpid (-1, &status, 0);
220 #endif
221 ]])],[AC_DEFINE(HAVE_UNION_WAIT,1,Define if 'union wait' is the type of the first arg to wait functions.) AC_MSG_RESULT(yes)],[AC_MSG_RESULT(no)])
222
223 AC_MSG_CHECKING(sys_siglist declaration in signal.h or unistd.h)
224 AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <signal.h>
225 /* NetBSD declares sys_siglist in <unistd.h>.  */
226 #include <unistd.h>
227 ]], [[char *msg = *(sys_siglist + 1);]])],[AC_DEFINE(SYS_SIGLIST_DECLARED,1,[Define if 'sys_siglist' is declared by <signal.h>.]) AC_MSG_RESULT(yes)],[AC_MSG_RESULT(no)])
228
229 # Find the right directory to put the root-mode PID file in
230 for dir in "/var/run" "/etc"
231 do
232         if test -d $dir 
233         then
234                 break;
235         fi
236 done
237 AC_MSG_RESULT(root-mode pid file will go in $dir)
238 AC_DEFINE_UNQUOTED(PID_DIR, "$dir", directory for PID lock files)
239
240 # We may have a fallback MDA available in case the socket open to the 
241 # local SMTP listener fails.  Best to use procmail for this, as we know
242 # it won't try delivering through local SMTP and cause a mail loop.
243 # Sendmail without the -t option to use the message headers will work too,
244 # not just for sendmail itself but for workalikes like exim.
245 #
246 # Note1: A disadvantage of using procmail is that local alias expansion
247 # according to /etc/aliases won't get done if we fall back.  This doesn't
248 # matter in single-drop mode.
249 #
250 # Note2: it would be a very bad idea to use any MDA that doesn't return
251 # a refuse-to-deliver status on disk- or process-table-full
252 # conditions; mail could get lost that way.  Sendmail and all of the MDAs
253 # like exim that might be lurking under a sendmail alias) do the right 
254 # thing in this circumstance.  Matthias Andree warns that procmail does
255 # not.  
256 #
257 # Note3: Defalt value of fallback is now off.  Matthias writes:
258 #
259 # 1. there is no way to predict when the fallback is used. With some MTAs
260 #    (such as those limiting load average), outer circumstances can cause
261 #    the fallback to kick in.
262
263 # 2. the fallback changes fetchmail behaviour in unpredictable ways. It's
264 #    not only about alias expansion, .forwards to special filters won't
265 #    work, mail may end up in a different place (users claim "mail loss"
266 #    for that).
267
268 # 3. The claim procmail did the right thing with its exit codes is plain
269 #    wrong. I've seen procmail exit with code 1 when it should have exited
270 #    with code 75, like, configuration errors. Procmail is a dangerous
271 #    beast and is best replaced by maildrop.
272
273 # 4. if multiple choices exist (like procmail and maildrop), fetchmail
274 #    cannot tell which one it should choose. Say, your MTA is configured
275 #    to use maildrop to deliver to user's mailboxes, if fetchmail then
276 #    chooses procmail, this is plain wrong.
277 #
278
279 AC_PATH_PROG(procmail, procmail, "", $PATH:/usr/sbin)
280 AC_PATH_PROG(sendmail, sendmail, "", $PATH:/usr/sbin:/usr/lib)
281 AC_PATH_PROG(maildrop, maildrop, "", $PATH:/usr/local/bin)
282
283 ###     use option --disable-fallback to disable fallback MDA
284 ###     use option --enable-fallback=procmail or 
285 ###                --enable-fallback=sendmail to select
286 AC_ARG_ENABLE(fallback,
287         [  --enable-fallback=procmail    enable procmail as fallback
288   --enable-fallback=sendmail    enable /usr/sbin/sendmail as fallback
289   --enable-fallback=maildrop    enable maildrop as fallback
290   --enable-fallback=no          disable fallback],,[enable_fallback=no])
291
292 case "$enable_fallback" in
293         sendmail)       if test -z "$sendmail" ; then 
294                                 AC_MSG_ERROR([Sendmail selected as fallback, but not found])
295                                 #not reached
296                         fi
297                         AC_DEFINE_UNQUOTED(FALLBACK_MDA, "$sendmail -i %T", Fallback MTA to use if defined)
298                         AC_MSG_NOTICE(Will use $sendmail as fallback MDA.)
299                         ;;
300         procmail)       if test -z "$procmail" ; then
301                                 AC_MSG_ERROR([procmail selected as fallback, but not found])
302                                 #not reached
303                         fi
304                         AC_DEFINE_UNQUOTED(FALLBACK_MDA, "$procmail -d %T")
305                         AC_MSG_NOTICE(Will use $procmail as fallback MDA.)
306                         ;;
307         maildrop)       if test -z "$maildrop" ; then
308                                 AC_MSG_ERROR([maildrop selected as fallback, but not found])
309                                 #not reached
310                         fi
311                         AC_DEFINE_UNQUOTED(FALLBACK_MDA, "$maildrop -d %T")
312                         AC_MSG_NOTICE(Will use $maildrop as fallback MDA.)
313                         ;;
314         no|unset)       AC_MSG_NOTICE(Will not use a fallback MDA.)
315                         ;;
316         auto|yes|set)   if test -n "$sendmail" ; then
317                                 AC_DEFINE_UNQUOTED(FALLBACK_MDA,"$sendmail -i %T")
318                                 AC_MSG_NOTICE(Will use $sendmail as fallback MDA.)
319                         else
320                                 AC_MSG_WARN(No fallback MDA available.  procmail and maildrop are not eligible)
321                                 AC_MSG_WARN(for automatic fallback MDA configuration for reliability reasons.)
322                         fi
323                         ;;
324         *)              AC_MSG_ERROR([unkown value for --enable-fallback given: $enable_fallback])
325                         #notreached
326                         ;;
327 esac
328
329 AC_CHECK_SIZEOF(short)
330 AC_CHECK_SIZEOF(int)
331 AC_CHECK_SIZEOF(long)
332
333 ###     use option --disable-POP3 to omit the POP3 support
334 AC_ARG_ENABLE(POP3,
335         [  --disable-POP3          don't compile in POP3 protocol support],
336         [with_POP3=$enableval],
337         [with_POP3=yes])
338 test "$with_POP3" = "yes" && AC_DEFINE(POP3_ENABLE,1,Define if you want POP3 support compiled in)
339 AM_CONDITIONAL(POP3_ENABLE, test "$with_POP3" = yes)
340
341 ###     use option --disable-IMAP to omit the IMAP support
342 AC_ARG_ENABLE(IMAP,
343         [  --disable-IMAP          don't compile in IMAP protocol support],
344         [with_IMAP=$enableval],
345         [with_IMAP=yes])
346 test "$with_IMAP" = "yes" && AC_DEFINE(IMAP_ENABLE,1,Define if you want IMAP support compiled in)
347 AM_CONDITIONAL(IMAP_ENABLE, test "$with_IMAP" = yes)
348
349 ###     use option --disable-ETRN to omit the ETRN support
350 AC_ARG_ENABLE(ETRN,
351         [  --disable-ETRN          don't compile in ETRN protocol support],
352         [with_ETRN=$enableval],
353         [with_ETRN=yes])
354 test "$with_ETRN" = "yes" && AC_DEFINE(ETRN_ENABLE,1,Define if you want ETRN support compiled in.)
355 AM_CONDITIONAL(ETRN_ENABLE, test "$with_ETRN" = yes)
356
357 ###     use option --disable-ODMR to omit the ODMR support
358 AC_ARG_ENABLE(ODMR,
359         [  --disable-ODMR          don't compile in ODMR protocol support],
360         [with_ODMR=$enableval],
361         [with_ODMR=yes])
362 test "$with_ODMR" = "yes" && AC_DEFINE(ODMR_ENABLE,1,Define if you want ODMR support compiled in)
363 AM_CONDITIONAL(ODMR_ENABLE, test "$with_ODMR" = yes)
364
365 ###     use option --enable-RPA to compile in the RPA support
366 AC_ARG_ENABLE(RPA,
367         [  --enable-RPA            compile in RPA protocol support],
368         [with_RPA=$enableval],
369         [with_RPA=no])
370 test "$with_RPA" = "yes" && AC_DEFINE(RPA_ENABLE,1,Define if you want RPA support compiled in)
371 AM_CONDITIONAL(RPA_ENABLE, test "$with_RPA" = yes)
372
373 ###     use option --enable-NTLM to compile in the NTLM support
374 AC_ARG_ENABLE(NTLM,
375         [  --enable-NTLM           compile in NTLM authentication support],
376         [with_NTLM=$enableval],
377         [with_NTLM=no])
378 test "$with_NTLM" = "yes" && AC_DEFINE(NTLM_ENABLE,1,Define if you want NTLM authentication)
379 AM_CONDITIONAL(NTLM_ENABLE, test "$with_NTLM" = yes)
380
381 ###     use option --enable-SDPS to compile in the SDPS support
382 AC_ARG_ENABLE(SDPS,
383         [  --enable-SDPS           compile in SDPS protocol support],
384         [with_SDPS=$enableval],
385         [with_SDPS=no])
386 if test "$with_SDPS" = yes ; then
387    if test "$with_POP3" != yes ; then
388        AC_MSG_WARN([SDPS cannot be enabled with POP3 disabled. Disabling SDPS.])
389        with_SDPS=no
390    else
391        AC_DEFINE(SDPS_ENABLE,1,Define if you want SDPS support compiled in)
392    fi
393 fi
394 if test "$with_POP3" != yes && test "$with_IMAP"  != yes ; then
395     AC_MSG_ERROR([You must enable at least one of POP3 and IMAP.])
396 fi
397
398 AC_CACHE_SAVE
399
400 ###     use option --enable-opie to compile in the OPIE support
401 AC_ARG_ENABLE(opie,
402         [  --enable-opie           support OTP through the OPIE library],
403         [ AC_CHECK_HEADER(opie.h,, [AC_MSG_ERROR(cannot find <opie.h>, which is required for OPIE support.)])
404           AC_CHECK_LIB(opie,opiegenerator,, [AC_MSG_ERROR(cannot find libopie, which is required for OPIE support.)])
405           with_opie=$enableval],
406         [with_opie=no])
407 test "$with_opie" = "yes" && AC_DEFINE(OPIE_ENABLE,1,Define if you want OPIE support compiled in)
408
409 dnl Mostly stolen from gnulib's getaddrinfo.m4
410 AC_SEARCH_LIBS(getaddrinfo, [nsl socket])
411 AC_CACHE_CHECK([for getaddrinfo],[fm_cv_getaddrinfo],[
412   AC_LINK_IFELSE([AC_LANG_PROGRAM([[
413 #include <sys/types.h>
414 #ifdef HAVE_SYS_SOCKET_H
415 #include <sys/socket.h>
416 #endif
417 #ifdef HAVE_NETDB_H
418 #include <netdb.h>
419 #endif
420   ]], [[getaddrinfo(0, 0, 0, 0);]])],[ fm_cv_getaddrinfo=yes],[ fm_cv_getaddrinfo=no ])
421 ])
422
423 if test x"$fm_cv_getaddrinfo" = "xyes"; then  
424      AC_DEFINE(HAVE_GETADDRINFO, 1,
425       [Define to 1 if you have the getaddrinfo function.])
426 fi
427
428 AC_CACHE_CHECK([for getnameinfo],[fm_cv_getnameinfo],[
429   AC_LINK_IFELSE([AC_LANG_PROGRAM([[
430 #include <sys/types.h>
431 #ifdef HAVE_SYS_SOCKET_H
432 #include <sys/socket.h>
433 #endif
434 #ifdef HAVE_NETDB_H
435 #include <netdb.h>
436 #endif
437 #ifndef NULL
438 #define NULL 0
439 #endif
440   ]], [[getnameinfo(NULL,0, NULL,0, NULL, 0, 0);]])],[ fm_cv_getnameinfo=yes],[ fm_cv_getnameinfo=no ])
441 ])
442 if test $fm_cv_getnameinfo = yes ; then
443     AC_DEFINE(HAVE_GETNAMEINFO,1,[Define to 1 if your system has getnameinfo()])
444 fi
445
446 AM_CONDITIONAL(NEED_GETADDRINFO, test "$fm_cv_getaddrinfo" != yes)
447 AM_CONDITIONAL(NEED_GETNAMEINFO, test "$fm_cv_getnameinfo"   != yes)
448
449 AC_CHECK_FUNCS(inet_ntop)
450 dnl Check if getaddrinfo is async-signal-safe - most implementations aren't
451 if test "$fm_cv_getaddrinfo" = yes ; then
452     AC_MSG_CHECKING(if your getaddrinfo is async-signal-safe)
453     gai_ts=no
454     dnl we have getaddrinfo() - check if the OS is known to have a async-signal-safe implementation
455     case $host_os in
456         darwin9*)                               gai_ts=yes ;;
457         linux*)                                 gai_ts=yes ;;
458         freebsd5.5|freebsd6*|freebsd7*)         gai_ts=yes ;;
459         solaris2.8|solaris2.9|solaris2.10)      gai_ts=yes ;;
460     esac
461     AC_MSG_RESULT($gai_ts)
462     if test $gai_ts = yes ; then
463         AC_DEFINE(GETADDRINFO_ASYNCSAFE, 1, [define to 1 if you know your getaddrinfo function is async-signal-safe])
464     fi
465 fi
466
467 # This version of the Kerberos 4 and 5 options addresses the follwing issues:
468
469 # * Build correctly under Heimdal kerberos if it is compiled with db2 and
470 #   OpenSSL support (Debian's is)
471 # * Build the kerberos.c stuff (KPOP) only for kerberosIV, to avoid breakage.
472 #   I don't know if this is 100% correct, but now at least IMAP and POP3
473 #   behave the same way regarding kerberosV.
474 # * Build without any fuss for both kerberosIV and V at the same time.
475 # * Move all the kerberos header mess to kerberos.h, and #include that
476 #   in driver.c and kerberos.c.
477
478 # Tested using the Heimdal Kerberos V libs, Kungliga Tekniska Högskolan (the
479 # Royal Institute of Technology in Stockholm, Sweden)'s kerberos IV libs, and
480 # the MIT reference implementation of KerberosV (all as packaged in Debian).
481
482 ###    use option --with-kerberos5=DIR to point at a Kerberos 5 directory
483 ### make sure --with-ssl is run before --with-kerberos* !
484 AC_ARG_WITH(kerberos5,
485        [  --with-kerberos5=DIR    point fetchmail compilation at a Kerberos 5 directory],
486 [
487 if test "$with_kerberos5" != "no"
488 then
489 # Check for a OpenBSD special case
490 if test "$with_kerberos5" = "yes" && ( test `uname` = "OpenBSD" )
491 then
492   AS_MESSAGE(checking kerberosV for OpenBSD...)
493   AC_DEFINE(HEIMDAL,1,Define if you have HEIMDAL kerberos 5)
494   AC_DEFINE(KERBEROS_V5,1,Define if you have Kerberos V5)
495   CFLAGS="$CFLAGS -I/usr/include/kerberosV"
496   LIBS="$LIBS -lasn1 -lkrb5 -lcom_err -lkafs"
497 elif krb5-config 2> /dev/null >/dev/null ; then
498   krb5_prefix=`krb5-config --prefix krb5`
499   AC_MSG_RESULT([krb5-config points to kerberosV under $krb5_prefix])
500   if test -f ${krb5_prefix}/include/et/com_err.h && \
501    ! test -f ${krb5_prefix}/include/com_err.h  ; then
502     CFLAGS="$CFLAGS -I${krb5_prefix}/include/et"
503   fi
504   unset krb5_prefix
505   CFLAGS="$CFLAGS `krb5-config --cflags krb5`"
506   LIBS="$LIBS `krb5-config --libs krb5`"
507   AC_DEFINE(KERBEROS_V5)
508 else
509   if test "$with_kerberos5" != "yes" 
510   then
511       LDFLAGS="$LDFLAGS -L${with_kerberos5}/lib"
512       searchdirs="$with_kerberos5"
513   else
514       searchdirs="/usr/kerberos /usr/local/krb5 /usr/athena /usr"
515   fi
516   with_kerberos5=
517   for dir in $searchdirs
518   do AC_MSG_CHECKING([for Kerberos V in $dir])
519      if test -f "$dir/include/krb5.h" || test -f "$dir/include/krb5/krb5.h"
520      then
521         if test -d "$dir/include/krb5" ; then CPPFLAGS="$CPPFLAGS -I$dir/include/krb5" ; fi
522         ac_krblibs=
523         if test -f "$dir/include/roken.h" || test -f "$dir/include/krb5/roken.h"
524         then
525            ac_krblibs="-lasn1 -lroken -lcom_err"
526            AC_MSG_RESULT([Heimdal found])
527           dnl Attempt to detect if we need to -ldb2 to link Heimdal
528           dnl we assume we do if it is available
529            AC_CHECK_LIB(db2, db_open, ac_krblibs="$ac_krblibs -ldb2", [],
530                 ${LDFLAGS})
531            AC_CHECK_LIB(des, des_string_to_key, libk5crypto=-ldes,
532               AC_CHECK_LIB(crypto, MD5_Init, [],
533                 AC_MSG_ERROR([DES libraries not found. Try adding --with-ssl to enable OpenSSL support]),
534                 ${LDFLAGS} ${ac_krblibs}),
535            ${LDFLAGS} ${ac_krblibs})
536            AC_DEFINE(HEIMDAL)
537         else
538           AC_MSG_RESULT([found])
539           ac_krblibs="-lcom_err"
540            AC_CHECK_LIB(crypto,
541              krb5_des_string_to_key,
542              libk5crypto=-lcrypto,
543                 AC_CHECK_LIB(k5crypto,
544                    krb5_des_string_to_key,
545                    libk5crypto=-lk5crypto,
546                       AC_MSG_ERROR([Kerberos 5 DES libraries not found]),
547                    ${LDFLAGS} ${ac_krblibs}),
548                  ${LDFLAGS} ${ac_krblibs})
549         fi
550         AC_CHECK_LIB(krb5, krb5_init_context,[],
551            continue,
552            ${LDFLAGS} ${ac_krblibs})
553         AC_DEFINE(KERBEROS_V5)
554         test "$dir" != "/usr" && CFLAGS="$CFLAGS -I$dir/include"
555         LDFLAGS="$LDFLAGS -L$dir/lib"
556        LIBS="$LIBS $ac_krblibs $libk5crypto"
557         with_kerberos5=$dir
558         break
559      else
560         AC_MSG_RESULT([not found])
561      fi
562   done
563   if test -z "$with_kerberos5" ; then
564      AC_MSG_ERROR([Kerberos 5 libraries not found])
565   fi
566 fi
567 fi
568 ]) dnl --with-kerberos5=DIR
569
570 ###    use option --with-kerberos=DIR to point at a Kerberos 4 directory
571 KERBEROS_V4=0
572 AC_ARG_WITH(kerberos,
573        [  --with-kerberos=DIR     point fetchmail compilation at a Kerberos 4 directory],
574 [
575 if test "$with_kerberos" != "no"
576 then
577     AC_MSG_WARN([Kerberos IV support is obsolete. Use --with-kerberos5 if possible.])
578 # Check for a NetBSD/OpenBSD special case
579 if test "$with_kerberos" = "yes" && ( test `uname` = "NetBSD" || test `uname` = "OpenBSD" )
580 then
581   AS_MESSAGE(checking kerberosIV for `uname`...)
582   KERBEROS_V4=1
583   CFLAGS="$CFLAGS -I/usr/include/kerberosIV"
584   case `uname` in
585       NetBSD)  LIBS="$LIBS -lkrb -ldes -lroken -lcom_err" ;;
586       OpenBSD) LIBS="$LIBS -lkrb -ldes" ;;
587   esac
588 elif krb4-config 2> /dev/null >/dev/null ; then
589   krb4_prefix=`krb4-config --prefix`
590   AC_MSG_RESULT([krb4-config points to kerberosIV under $krb4_prefix])
591   unset krb4_prefix
592   CFLAGS="$CFLAGS `krb4-config --cflags`"
593   LIBS="$LIBS `krb4-config --libs`"
594   KERBEROS_V4=1
595 elif krb5-config 2> /dev/null >/dev/null ; then
596   krb4_prefix=`krb5-config --prefix krb4`
597   AC_MSG_RESULT([krb5-config points to kerberosIV under $krb4_prefix])
598   if test -f ${krb4_prefix}/include/kerberosIV/krb.h ; then
599     AC_DEFINE(KERBEROS_V4_V5,1,Define if you have Kerberos V4 headers under a kerberosIV directory)
600   fi
601   unset krb4_prefix
602   CFLAGS="$CFLAGS `krb5-config --cflags krb4`"
603   LIBS="$LIBS `krb5-config --libs krb4`"
604   KERBEROS_V4=1
605 else
606   #we need to detect when we're building under a kerberosV compatibility
607   #layer, btw...
608   if test "$with_kerberos" != "yes" ; then
609      searchdirs="$with_kerberos"
610   else
611      searchdirs="$with_kerberos5 /usr/kerberos /usr/kerberosIV /usr/athena /usr"
612   fi
613   with_kerberos=
614   ac_saveLDFLAGS="$LDFLAGS"
615   for dir in $searchdirs
616   do
617      AC_MSG_CHECKING([for Kerberos IV in $dir])
618      if test -f "$dir/include/krb.h" || test -f "$dir/include/krb4.h" \
619             || test -f "$dir/include/kerberosIV/krb.h"
620      then
621         AC_MSG_RESULT([found])
622      else
623         AC_MSG_RESULT([not found])
624        continue
625      fi
626      #Find libs
627      if test -f "$with_kerberos5/roken.h" ; then
628        AC_CHECK_LIB(45, krb_mk_req)
629      fi
630      LDFLAGS="-L$dir/lib $ac_saveLDFLAGS"
631      if test `uname` = "FreeBSD"; then
632         AC_SEARCH_LIBS(_ossl_old_des_string_to_key, [des425 des crypto], [], continue)
633      else
634         AC_SEARCH_LIBS(des_string_to_key, [crypto], [], continue)
635      fi
636      AC_SEARCH_LIBS(krb_realmofhost, [krb4 krb], [], continue)
637      with_kerberos="$dir"
638      if test -f "$dir/include/kerberosIV/krb.h" ; then
639         dir="$dir/include/kerberosIV"
640      else
641        dir="$dir/include"
642      fi
643      KERBEROS_V4=1
644      test -f "$with_kerberos5/roken.h" && AC_DEFINE(HEIMDAL)
645      test "$dir" != "/usr/include" && CFLAGS="$CFLAGS -I$dir"
646      LDFLAGS="$LDFLAGS -L$with_kerberos/lib"
647      break
648   done
649   if test -z "$with_kerberos" ; then
650      AC_MSG_ERROR([Kerberos 4 libraries not found])
651   fi
652   LDFLAGS="$ac_saveLDFLAGS"
653 fi
654 fi
655 ]) dnl --with-kerberos=DIR
656 if test "$KERBEROS_V4" = 1 ; then
657     AC_DEFINE(KERBEROS_V4,1,Define if you have Kerberos V4)
658 fi
659 AM_CONDITIONAL(KERBEROS_V4_ENABLE, test "$KERBEROS_V4" = 1)
660
661 ###     use option --with-ssl to compile in the SSL support
662 AC_ARG_WITH(ssl,
663         [  --with-ssl=[DIR]        enable SSL support using libraries in DIR],
664         [with_ssl=$withval],
665         [with_ssl=no])
666 test "$with_ssl" != "no" && AC_DEFINE(SSL_ENABLE,1,Define if you want SSL support compiled in)
667
668 if test "$with_ssl" = "yes"
669 then
670     #   User didn't specify an SSL location.  Let's look at some common
671     #   directories where SSL has been found in the past and try and auto
672     #   configure for SSL.  OpenSSL determination will be made later.
673     #   This will screw up if an OpenSSL install is located in a later
674     #   directory than an older SSLeay install, but the user should fix that
675     #   anyways and he can override on the configure line.
676     #   Just testing for directories is not sufficient, /usr exists on
677     #   all systems!
678     for ac_dir in \
679       /usr/local/ssl \
680       /usr/local \
681       /usr/ssl \
682       /usr \
683       /local/ssl \
684       /opt/ssl \
685       /opt/csw \
686       ; \
687     do
688         if test -r "$ac_dir/include/openssl/ssl.h" ; then
689             with_ssl=$ac_dir
690             break;
691         fi
692     done
693 fi
694
695 if test -n "$with_ssl" -a "$with_ssl" != "no"
696 then
697   # With the autoconfigure above, the only time this is going to be
698   # true is going to be when we could not find the headers.  If they
699   # are not in system standard locations, we are going to be broken.
700   if test "$with_ssl" = "yes"
701   then
702     # Let's just define the standard location for the SSLeay root
703     with_ssl="/usr/local/ssl"
704   fi
705   if test -r $with_ssl/include/openssl/ssl.h
706   then
707     ### ssl.h found under openssl.  Use openssl configuration preferentially,
708     AC_MSG_NOTICE(Enabling OpenSSL support in $with_ssl.)
709     test "$with_ssl" != "/usr" && CFLAGS="$CFLAGS -I$with_ssl/include"
710     ### In Red Hat 9, this file includes a reference to <krb5.h>, so we
711     ### force the Kerberos direcory onto the include path so it will build.
712     CFLAGS="$CFLAGS -I/usr/kerberos/include"
713     ### OpenBSD comes with ssl headers
714   else
715     AC_MSG_ERROR([SSL support enabled, but OpenSSL not found])
716   fi
717   LDFLAGS="$LDFLAGS -L$with_ssl/lib"
718   LIBS="$LIBS -lssl -lcrypto"
719   dnl check if -ldl is needed
720   AC_MSG_CHECKING([for additional library dependencies of SSL])
721   found=0
722   save_LIBS="$LIBS"
723   for i in "" "-ldl" ; do
724       LIBS="$LDFLAGS $save_LIBS $i"
725       AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <openssl/ssl.h>],[SSL_library_init()])],[found=1; break])
726   done
727   if test $found = 0 ; then
728       AC_MSG_RESULT([error])
729       AC_MSG_ERROR([cannot link with SSL - check config.log])
730   fi
731   LIBS="$save_LIBS $i"
732   if test "$i" = "" ; then i="(none)" ; fi
733   AC_MSG_RESULT($i)
734   dnl XXX FIXME: use pkg-config if available!
735   AC_DEFINE(SSL_ENABLE)
736 else
737   AC_MSG_NOTICE(Disabling SSL support.)
738 fi
739
740 ###     use option --with-socks=DIR to point at SOCKS library
741 AC_ARG_WITH(socks,
742         [  --with-socks[=DIR]      add built-in SOCKS firewall access],
743 [
744 if test "$with_socks" != no
745 then
746     if test "$with_socks" != yes
747     then
748         LDFLAGS="$LDFLAGS -L$with_socks"
749     else
750         AC_CHECK_LIB(socks, Rconnect,,
751                AC_MSG_ERROR([could not find libsocks which is needed for built-in SOCKS support]))
752     fi
753     AC_DEFINE(HAVE_SOCKS,1,Define if you want built-in SOCKS support)
754     CFLAGS="$CFLAGS -Dconnect=Rconnect -Dgetsockname=Rgetsockname -Dbind=Rbind -Daccept=Raccept -Dlisten=Rlisten -Dselect=Rselect"
755     LIBS="-lsocks $LIBS"
756 fi])
757
758 ###     use option --with-socks5=DIR to point at SOCKS library
759 AC_ARG_WITH(socks5,
760         [  --with-socks5[=DIR]     add built-in SOCKS5 firewall access],
761 [
762 if test "$with_socks5" != no
763 then
764   if test "$with_socks5" != yes
765   then
766     LDFLAGS="$LDFLAGS -L$with_socks5"
767   fi
768   ac_savedLDFLAGS="$LDFLAGS"
769   LDFLAGS="$LDFLAGS $LDFLAGS"
770   AC_CHECK_LIB(socks5, SOCKSconnect,,
771         AC_MSG_ERROR([could not find libsocks5 which is needed for built-in SOCKS5 support]))
772   AC_DEFINE(HAVE_SOCKS)
773   CFLAGS="$CFLAGS -Dconnect=SOCKSconnect -Dgetsockname=SOCKSgetsockname -Dbind=SOCKSbind -Daccept=SOCKSaccept -Dlisten=SOCKSlisten -Dselect=SOCKSselect -Drecvfrom=SOCKSrecvfrom -Dsendto=SOCKSsendto -Drecv=SOCKSrecv -Dsend=SOCKSsend -Dread=SOCKSread -Dwrite=SOCKSwrite -Drresvport=SOCKSrresvport -Dshutdown=SOCKSshutdown -Dlisten=SOCKSlisten -Dclose=SOCKSclose -Ddup=SOCKSdup -Ddup2=SOCKSdup2 -Dgethostbyname=SOCKSgethostbyname"
774   AC_CHECK_FUNC(SOCKSfclose, [CFLAGS="$CFLAGS -Dfclose=SOCKSfclose"])
775   LDFLAGS="$ac_savedLDFLAGS"
776 fi])
777
778 dnl for libesmtp/ modules:
779 ACX_WHICH_GETHOSTBYNAME_R
780
781 ###     use option --with-hesiod=DIR to point at a HESIOD directory
782 AC_ma_SEARCH_PACKAGE(hesiod, hesiod_getmailhost, /usr/athena /usr /usr/local,hesiod, hesiod.h)
783
784 ###     use option --with-gssapi=DIR to compile in GSSAPI support
785 AC_ARG_WITH(gssapi,
786         [  --with-gssapi[=DIR]     compile in GSSAPI support using libraries in DIR],
787 [
788 if test "$with_gssapi" != "no"
789 then
790   if test "$with_gssapi" = "yes" -a -n "$with_kerberos5"
791   then
792     with_gssapi=$with_kerberos5
793   fi
794
795   if test "$with_gssapi" != "yes" -a -n "$with_gssapi"
796   then
797     CFLAGS="$CFLAGS -I$with_gssapi/include"
798     LDFLAGS="$LDFLAGS -L$with_gssapi/lib"
799   fi
800
801   dnl obtain gssapi default libs
802   if krb5-config --libs gssapi 2>/dev/null >/dev/null ; then
803       LIBS="$LIBS `krb5-config --libs gssapi`"
804   else
805     AC_CHECK_LIB(gss, gss_check_version, LIBS="$LIBS -lgss", nogss=t)
806     if test -n "$nogss"
807     then
808       # -lgss not found
809       if test "$with_gssapi" = yes ; then
810           with_gssapi=/usr
811       fi
812       if test -f "$with_gssapi/include/roken.h" -o -f "$with_gssapi/include/krb5/roken.h"
813       then
814          # have roken.h, assume Heimdal
815          case `uname` in
816              NetBSD) LIBS="$LIBS -lkrb5" ;;
817              *)      LIBS="$LIBS -lkrb5 -lasn1 -ldes -lroken -ldb -ldl" ;;
818          esac
819          AC_CHECK_LIB(gssapi, gss_init_sec_context,LIBS="$LIBS -lgssapi",
820                       AC_MSG_ERROR([could not find libgssapi which is needed for GSSAPI support]), )
821          AC_DEFINE(HEIMDAL)
822       else
823          # no roken.h, assume MIT
824          AC_CHECK_LIB(gssapi_krb5, gss_init_sec_context,LIBS="$LIBS -lgssapi_krb5",
825                       AC_MSG_ERROR([could not find libgssapi_krb5 which is needed for GSSAPI support]), -lkrb5)
826       fi
827     fi
828   fi
829   AC_DEFINE(GSSAPI,1,Define if you want GSSAPI authentication)
830   if test "$with_gssapi" != yes ; then
831     CPPFLAGS="$CPPFLAGS -I$with_gssapi/include"
832   fi
833   AC_CHECK_HEADERS(gss.h gssapi.h gssapi/gssapi.h gssapi/gssapi_generic.h)
834   if test "$ac_cv_header_gssapi_h" = "yes"; then
835     AC_EGREP_HEADER(GSS_C_NT_HOSTBASED_SERVICE, gssapi.h, AC_DEFINE(HAVE_GSS_C_NT_HOSTBASED_SERVICE,1,Define if you have MIT kerberos))
836   else
837     AC_EGREP_HEADER(GSS_C_NT_HOSTBASED_SERVICE, gssapi/gssapi.h, AC_DEFINE(HAVE_GSS_C_NT_HOSTBASED_SERVICE))
838   fi
839 fi])
840
841 AC_CONFIG_FILES([Makefile po/Makefile.in genlsm.sh])
842 AC_OUTPUT
843
844 dnl Local Variables:
845 dnl comment-start: "dnl "
846 dnl comment-end: ""
847 dnl comment-start-skip: "\\bdnl\\b\\s *"
848 dnl compile-command: "make configure config.h.in"
849 dnl End: