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