]> Pileus Git - ~andy/fetchmail/blob - configure.in
Version bump.
[~andy/fetchmail] / configure.in
1 dnl Autoconfigure input file for fetchmail
2 dnl Eric S. Raymond <esr@thyrsus.com>
3 dnl
4 dnl Process this file with autoconf to produce a configure script.
5 dnl
6
7 AC_INIT(fetchmail.h)            dnl A distinctive file to look for in srcdir. 
8 AM_CONFIG_HEADER(config.h)
9
10 dnl We want these before the checks, so the checks can modify their values.
11 test -z "$CFLAGS" && CFLAGS="-O" AC_SUBST(CFLAGS)
12 test -z "$LDFLAGS" && LDFLAGS=AC_SUBST(LDFLAGS)
13
14 PACKAGE=`sed -n '/PACKAGE *= *\(.*\)/s//\1/p' <$srcdir/Makefile.in`
15 VERSION=`sed -n '/VERSION *= *\(.*\)/s//\1/p' <$srcdir/Makefile.in`
16 AM_INIT_AUTOMAKE("$PACKAGE", "$VERSION")
17
18 AC_CANONICAL_HOST
19 AC_PROG_CC
20 AC_PROG_INSTALL
21 AC_PROG_CPP                     dnl Later checks need this.
22 AC_PROG_CC_C_O
23 AC_AIX
24 AC_ISC_POSIX
25 AC_MINIX
26 AC_HEADER_STDC
27 AC_TYPE_SIZE_T
28 AC_TYPE_PID_T
29 AC_TYPE_SIGNAL
30 AC_CHECK_HEADERS(unistd.h termios.h termio.h sgtty.h stdarg.h alloca.h)
31 AC_CHECK_HEADERS(sys/itimer.h fcntl.h sys/fcntl.h memory.h sys/wait.h sys/shm.h)
32 AC_CHECK_HEADERS(arpa/inet.h arpa/nameser.h resolv.h net/socket.h sys/select.h)
33
34 AC_C_CONST                      dnl getopt needs this.
35
36 dnl do NOT use AM_PROG_LEX, builds without LEX are not supported properly
37 AC_PROG_LEX
38 AC_PROG_MAKE_SET
39 AC_PROG_YACC
40 AC_SUBST(CPFLAGS)
41 AC_SUBST(CEFLAGS)
42 AC_SUBST(LDEFLAGS)
43 AC_SUBST(LIBOBJS)
44
45 # Check for LynxOS special case: -lbsd needed (at least on 2.3.0) and -s
46 # not working.
47 if test `uname` = "LynxOS" 
48 then
49   echo "Adding -lbsd to standard libraries"
50   LIBS="$LIBS -lbsd"
51   LDFLAGS=""
52   echo "Prepending standard include path to gcc flags"
53   CPFLAGS="-I/usr/include"
54 fi
55
56 # Check for FreeBSD special case: more libs needed
57 if test `uname` = "FreeBSD" 
58 then
59    echo "Adding -lmd -lkvm -lcom_err to standard libraries"
60    LIBS="$LIBS -lmd -lkvm -lcom_err"
61 fi
62  
63 # Check for Rhapsody special case: it doesn't like -s
64 if test `uname` = "Rhapsody" 
65 then
66    echo "Removing -s load flag"
67    LDFLAGS=`echo $LDFLAGS | sed "s/-s //"`
68 fi
69  
70 dnl i18n
71 ALL_LINGUAS="cs es fr pl pt_BR gl da"
72 AM_GNU_GETTEXT
73 dnl end i18n
74
75 # Under sysV68, socket and friends are provided by the C library.
76 # -linet does not provide socket, but causes multiple definition
77 # errors at link-time.  It is thus better to only use the C library.
78 # So don't add -linet to the link list unless it's necessary
79 AC_CHECK_FUNC(socket,
80     AC_MSG_RESULT(using libc's socket),
81     AC_CHECK_LIB(socket,socket)
82     AC_CHECK_LIB(inet,socket))
83
84 # The condition in this test copes with the presence of inet_addr in libc6.
85 AC_CHECK_FUNC(inet_addr,
86     AC_MSG_RESULT(using libc's inet_addr),
87     AC_CHECK_LIB(nsl,inet_addr))
88
89 dnl Port hack for Interactive UNIX System V/386 Release 3.2
90 AC_CHECK_LIB(cposix, strchr,
91                 [EXTRADEFS="$EXTRADEFS -D_SYSV3"
92                 LIBS="$LIBS -lcposix"])
93
94 dnl Port hack for Sparc/NetBSD-1.5
95 AC_CHECK_LIB(intl, gettext,
96                 [LIBS="$LIBS -lintl"])
97
98 AC_CHECK_FUNC(strstr, AC_DEFINE(HAVE_STRSTR), 
99               [EXTRASRC="$EXTRASRC \$(srcdir)/strstr.c"
100                EXTRAOBJ="$EXTRAOBJ strstr.o"])
101
102 AC_CHECK_FUNC(strcasecmp, AC_DEFINE(HAVE_STRCASECMP), 
103               [EXTRASRC="$EXTRASRC \$(srcdir)/strcasecmp.c"
104                EXTRAOBJ="$EXTRAOBJ strcasecmp.o"])
105              
106 AC_CHECK_FUNC(memmove, AC_DEFINE(HAVE_MEMMOVE), 
107               [EXTRASRC="$EXTRASRC \$(srcdir)/memmove.c"
108                EXTRAOBJ="$EXTRAOBJ memmove.o"])
109              
110 AC_CHECK_FUNC(MD5Init, AC_DEFINE(HAVE_MD5),
111               [EXTRASRC="$EXTRASRC \$(srcdir)/md5c.c"
112                EXTRAOBJ="$EXTRAOBJ md5c.o"])
113
114 AC_CHECK_FUNC(getopt_long, AC_DEFINE(HAVE_GETOPT_LONG),
115               [EXTRASRC="$EXTRASRC \$(srcdir)/getopt.c \$(srcdir)/getopt1.c"
116                EXTRAOBJ="$EXTRAOBJ getopt.o getopt1.o"])
117
118 AC_FUNC_VPRINTF
119 AC_FUNC_ALLOCA
120 if test -n "$ALLOCA" 
121 then
122   EXTRASRC="$EXTRASRC \$(srcdir)/alloca.c"
123   EXTRAOBJ="$EXTRAOBJ alloca.o"
124 fi
125
126 dnl AC_CHECK_FUNC calls that might hack the Makefile must precede
127 dnl the following AC_SUBSTs
128
129 AC_SUBST(EXTRADEFS)
130 AC_SUBST(EXTRASRC)
131 AC_SUBST(EXTRAOBJ)
132
133 AC_CHECK_FUNCS(tcsetattr stty setsid geteuid seteuid gethostbyname \
134   res_search herror strrchr strerror setlinebuf syslog \
135   snprintf vprintf vsnprintf vsyslog \
136   atexit inet_aton strftime setrlimit socketpair sigprocmask sigaction \
137   getopt_long)
138
139 # Under Red Hat 4.0 (and many other Linuxes) -lresolv is seriously flaky
140 # and breaks gethostbyname(2).  It's better to use the bind stuff in the C
141 # library.  So don't add -lresolv to the link list unless it's necessary
142 # (It will be necessary when using GNU libc6).
143 AC_CHECK_FUNC(res_search,
144     AC_MSG_RESULT(using libc's resolver functions),
145     AC_CHECK_LIB(resolv,res_search, 
146         [AC_DEFINE(HAVE_RES_SEARCH) AC_MSG_RESULT(found resolver functions in libresolv); LIBS="$LIBS -lresolv"], AC_MSG_RESULT(no resolver calls found)))
147
148 dnl Check for libcrypt -- it may live in libc or libcrypt, as on IRIX
149 AC_CHECK_FUNC(crypt, , AC_CHECK_LIB(crypt,crypt))
150
151 dnl Check for RSA refersence library in case we're using SSL
152 AC_CHECK_LIB(rsaref, RSAPublicDecrypt)
153
154 dnl AC_FUNC_SETVBUF_REVERSED
155
156 dnl Check for usable void pointer type
157 AC_MSG_CHECKING(use of void pointer type)
158 AC_TRY_COMPILE([],
159    [char *p;
160     void *xmalloc();
161     p = (char *) xmalloc(1);
162    ],
163  [AC_DEFINE(HAVE_VOIDPOINTER) AC_MSG_RESULT(yes)],
164  AC_MSG_RESULT(no))
165
166 dnl Check for ANSI volatile
167 AC_MSG_CHECKING(for ANSI volatile)
168 AC_TRY_COMPILE([],
169    [volatile int n;],
170  [AC_DEFINE(HAVE_VOLATILE) AC_MSG_RESULT(yes)],
171  AC_MSG_RESULT(no))
172
173 dnl Check out the wait reality.  We have to assume sys/wait.h is present.
174 AC_CHECK_FUNCS(waitpid wait3)
175 AC_MSG_CHECKING(for union wait);
176 AC_TRY_LINK([#include <sys/types.h>
177 #include <sys/wait.h>],
178                  [union wait status; int pid; pid = wait (&status);
179 #ifdef WEXITSTATUS
180 /* Some POSIXoid systems have both the new-style macros and the old
181    union wait type, and they do not work together.  If union wait
182    conflicts with WEXITSTATUS et al, we don't want to use it at all.  */
183 if (WEXITSTATUS (status) != 0) pid = -1;
184 #endif
185 #ifdef HAVE_WAITPID
186 /* Make sure union wait works with waitpid.  */
187 pid = waitpid (-1, &status, 0);
188 #endif
189 ],
190   [AC_DEFINE(HAVE_UNION_WAIT) AC_MSG_RESULT(yes)],
191   AC_MSG_RESULT(no))
192
193 AC_MSG_CHECKING(sys_siglist declaration in signal.h or unistd.h)
194 AC_TRY_LINK([#include <signal.h>
195 /* NetBSD declares sys_siglist in <unistd.h>.  */
196 #ifdef HAVE_UNISTD_H
197 #include <unistd.h>
198 #endif], [char *msg = *(sys_siglist + 1);],
199   [AC_DEFINE(SYS_SIGLIST_DECLARED) AC_MSG_RESULT(yes)],
200   AC_MSG_RESULT(no))
201
202 # Find the right directory to put the root-mode PID file in
203 for dir in "/var/run" "/etc"
204 do
205         if test -d $dir 
206         then
207                 break;
208         fi
209 done
210 AC_MSG_RESULT(root-mode pid file will go in $dir)
211 AC_DEFINE_UNQUOTED(PID_DIR, "$dir")
212
213 # We may have a fallback MDA available in case the socket open to the 
214 # local SMTP listener fails.  Best to use procmail for this, as we know
215 # it won't try delivering through local SMTP and cause a mail loop.
216 # Sendmail without the -t option to use the message headers will work too,
217 # not just for sendmail itself but for workalikes like exim.
218 #
219 # Note1: A disadvantage of using procmail is that local alias expansion
220 # according to /etc/aliases won't get done if we fall back.  This doesn't
221 # matter in single-drop mode.
222 #
223 # Note2: it would be a very bad idea to use any MDA that doesn't return
224 # a refuse-to-deliver status on disk- or process-table-full
225 # conditions; mail could get lost that way.  Both procmail and
226 # sendmail (and all of the MDAs like exim that might be lurking under
227 # a sendmail alias) do the right thing in this circumstance.
228 #
229 AC_PATH_PROG(procmail, procmail, "", $PATH:/usr/sbin)
230 AC_PATH_PROG(sendmail, sendmail, "", $PATH:/usr/sbin:/usr/lib)
231
232 ###     use option --disable-fallback to disable fallback MDA
233 ###     use option --enable-fallback=procmail or 
234 ###                --enable-fallback=sendmail to select
235 AC_ARG_ENABLE(fallback,
236         [  --enable-fallback=procmail    enable procmail as fallback (default)
237   --enable-fallback=sendmail    enable /usr/sbin/sendmail as fallback
238   --enable-fallback=no          disable fallback],,[enable_fallback=auto])
239
240 case "$enable_fallback" in
241         sendmail)       if test -z "$sendmail" ; then 
242                                 AC_ERROR([Sendmail selected as fallback, but not found])
243                                 #not reached
244                         fi
245                         AC_DEFINE_UNQUOTED(FALLBACK_MDA, "$sendmail %T")
246                         echo "Will use $sendmail as fallback MDA."
247                         ;;
248         procmail)       if test -z "$procmail" ; then
249                                 AC_ERROR([procmail selected as fallback, but not found])
250                                 #not reached
251                         fi
252                         AC_DEFINE_UNQUOTED(FALLBACK_MDA, "$procmail -d %T")
253                         echo "Will use $procmail as fallback MDA."
254                         ;;
255         no|unset)       echo "Will not use a fallback MDA"
256                         ;;
257         auto|yes|set)   if test -n "$procmail" ; then
258                                 AC_DEFINE_UNQUOTED(FALLBACK_MDA,"$procmail -d %T")
259                                 echo "Will use $procmail as fallback MDA."
260                         elif test -n "$sendmail" ; then
261                                 AC_DEFINE_UNQUOTED(FALLBACK_MDA,"$sendmail %T")
262                                 echo "Will use $sendmail as fallback MDA."
263                         else    echo "No fallback MDA available."
264                         fi
265                         ;;
266         *)              AC_ERROR([unkown value for --enable-fallback given: $enable_fallback])
267                         #notreached
268                         ;;
269 esac
270
271 AC_CHECK_SIZEOF(short)
272 AC_CHECK_SIZEOF(int)
273 AC_CHECK_SIZEOF(long)
274
275 ###     use option --enable-POP2 to compile in the POP2 support
276 AC_ARG_ENABLE(POP2,
277         [  --enable-POP2           compile in POP2 protocol support (obsolete)],
278         [with_POP2=$enableval],
279         [with_POP2=no])
280 test "$with_POP2" = "yes" && AC_DEFINE(POP2_ENABLE)
281
282 ###     use option --disable-POP3 to omit the POP3 support
283 AC_ARG_ENABLE(POP3,
284         [  --disable-POP3          don't compile in POP3 protocol support],
285         [with_POP3=$enableval],
286         [with_POP3=yes])
287 test "$with_POP3" = "yes" && AC_DEFINE(POP3_ENABLE)
288
289 ###     use option --disable-IMAP to omit the IMAP support
290 AC_ARG_ENABLE(IMAP,
291         [  --disable-IMAP          don't compile in IMAP protocol support],
292         [with_IMAP=$enableval],
293         [with_IMAP=yes])
294 test "$with_IMAP" = "yes" && AC_DEFINE(IMAP_ENABLE)
295
296 ###     use option --disable-ETRN to omit the ETRN support
297 AC_ARG_ENABLE(ETRN,
298         [  --disable-ETRN          don't compile in ETRN protocol support],
299         [with_ETRN=$enableval],
300         [with_ETRN=yes])
301 test "$with_ETRN" = "yes" && AC_DEFINE(ETRN_ENABLE)
302
303 ###     use option --disable-ODMR to omit the ODMR support
304 AC_ARG_ENABLE(ODMR,
305         [  --disable-ODMR          don't compile in ODMR protocol support],
306         [with_ODMR=$enableval],
307         [with_ODMR=yes])
308 test "$with_ODMR" = "yes" && AC_DEFINE(ODMR_ENABLE)
309
310 ###     use option --enable-RPA to compile in the RPA support
311 AC_ARG_ENABLE(RPA,
312         [  --enable-RPA            compile in RPA protocol support],
313         [with_RPA=$enableval],
314         [with_RPA=no])
315 test "$with_RPA" = "yes" && AC_DEFINE(RPA_ENABLE)
316
317 ###     use option --enable-NTLM to compile in the NTLM support
318 AC_ARG_ENABLE(NTLM,
319         [  --enable-NTLM           compile in NTLM authentication support],
320         [with_NTLM=$enableval],
321         [with_NTLM=no])
322 test "$with_NTLM" = "yes" && AC_DEFINE(NTLM_ENABLE)
323
324 ###     use option --enable-SDPS to compile in the SDPS support
325 AC_ARG_ENABLE(SDPS,
326         [  --enable-SDPS           compile in SDPS protocol support],
327         [with_SDPS=$enableval],
328         [with_SDPS=no])
329 test "$with_SDPS" = "yes" && AC_DEFINE(SDPS_ENABLE)
330
331 ###     use option --enable-opie to compile in the OPIE support
332 AC_ARG_ENABLE(opie,
333         [  --enable-opie           support OTP through the OPIE library],
334         [ AC_CHECK_HEADER(opie.h,, [echo 'configure: cannot find <opie.h>, which is required for OPIE support.'; exit 1])
335           AC_CHECK_LIB(opie,opiegenerator,, [echo 'configure: cannot find libopie, which is required for OPIE support.'; exit 1])
336           with_opie=$enableval],
337         [with_opie=no])
338 test "$with_opie" = "yes" && AC_DEFINE(OPIE_ENABLE)
339
340 AC_ARG_ENABLE(inet6,
341         [  --enable-inet6          support IPv6 (requires the inet6-apps library)],
342
343         [ AC_CHECK_FUNC(getaddrinfo, [with_inet6=yes],
344           [ LDFLAGS="$LDFLAGS -L/usr/inet6/lib";
345             AC_CHECK_LIB(inet6, getaddrinfo, [with_inet6=yes
346             LIBS="$LIBS -linet6"],
347             [ echo 'configure: cannot find proper glibc version or libinet6,';
348               echo '           which is required for IPv6 support.';
349               exit 1]) ] )],
350         [with_inet6=no])
351 test "$with_inet6" = "yes" && AC_DEFINE(INET6_ENABLE)
352
353 AC_CHECK_FUNCS(inner_connect)
354
355 AC_ARG_ENABLE(netsec,
356         [  --enable-netsec         support network security (requires inet6-apps library)],
357         [ unset ac_cv_lib_inet6_net_security_strtorequest; AC_CHECK_LIB(inet6, net_security_strtorequest,,
358           [ unset ac_cv_lib_inet6_net_security_strtorequest;
359             LDFLAGS="$LDFLAGS -L/usr/inet6/lib"; 
360             AC_CHECK_LIB(inet6, net_security_strtorequest,,
361             [ echo 'configure: cannot find net_security_strtorequest in libinet6, which is required';
362               echo '           for network security support. Either it does not exist, or it was';
363               echo '           not built with network security support enabled.';
364               exit 1]) ])
365         unset ac_cv_header_net_security_h; AC_CHECK_HEADER(net/security.h,,
366         [ unset ac_cv_header_net_security_h; 
367         CPPFLAGS="$CPPFLAGS -I/usr/inet6/include"; 
368         CFLAGS="$CFLAGS -I/usr/inet6/include"; AC_CHECK_HEADER(net/security.h,,
369           [ echo 'configure: cannot find <net/security.h>, which is required';
370           echo '             for network security support.';
371           exit 1]) ]) ]
372         [with_netsec=no])
373 test "$with_netsec" = "yes" && AC_DEFINE(NET_SECURITY)
374
375 # This version of the Kerberos 4 and 5 options addresses the follwing issues:
376
377 # * Build correctly under Heimdal kerberos if it is compiled with db2 and
378 #   OpenSSL support (Debian's is)
379 # * Build the kerberos.c stuff (KPOP) only for kerberosIV, to avoid breakage.
380 #   I don't know if this is 100% correct, but now at least IMAP and POP3
381 #   behave the same way regarding kerberosV.
382 # * Build without any fuss for both kerberosIV and V at the same time.
383 # * Move all the kerberos header mess to kerberos.h, and #include that
384 #   in driver.c and kerberos.c.
385
386 # Tested using the Heimdal Kerberos V libs, Kungliga Tekniska Högskolan (the
387 # Royal Institute of Technology in Stockholm, Sweden)'s kerberos IV libs, and
388 # the MIT reference implementation of KerberosV (all as packaged in Debian).
389
390 ###    use option --with-kerberos5=DIR to point at a Kerberos 5 directory
391 ### make sure --with-ssl is run before --with-kerberos* !
392 AC_ARG_WITH(kerberos5,
393        [  --with-kerberos5=DIR    point fetchmail compilation at a Kerberos 5
394 directory],
395 [
396 if test "$with_kerberos5" != "no"
397 then
398 # Check for a OpenBSD special case
399 if test "$with_kerberos5" = "yes" && ( test `uname` = "OpenBSD" )
400 then
401   AC_CHECKING([kerberosV for OpenBSD])
402   AC_DEFINE(HEIMDAL)
403   AC_DEFINE(KERBEROS_V5)
404   CEFLAGS="$CEFLAGS -I/usr/include/kerberosV"
405   LIBS="$LIBS -lasn1 -lkrb5 -lcom_err"
406 else
407   if test "$with_kerberos5" != "yes" 
408   then
409       LDEFLAGS="$LDEFLAGS -L${with_kerberos5}/lib"
410       searchdirs="$with_kerberos5"
411   else
412       searchdirs="/usr/kerberos /usr/local/krb5 /usr/athena /usr"
413   fi
414   with_kerberos5=
415   for dir in $searchdirs
416   do AC_MSG_CHECKING([for Kerberos V in $dir])
417      if test -f "$dir/include/krb5.h"
418      then
419         ac_krblibs=
420         if test -f "$dir/include/roken.h"
421         then
422            ac_krblibs="-lasn1 -lroken -lcom_err"
423            AC_MSG_RESULT([Heimdal found])
424           dnl Attempt to detect if we need to -ldb2 to link Heimdal
425           dnl we assume we do if it is available
426            AC_CHECK_LIB(db2, db_open, ac_krblibs="$ac_krblibs -ldb2", [],
427                 ${LDEFLAGS})
428            AC_CHECK_LIB(des, des_string_to_key, libk5crypto=-ldes,
429               AC_CHECK_LIB(ssl, MD5_Init, [],
430                 AC_ERROR([DES libraries not found. Try adding --with-ssl to enable OpenSSL support]),
431                 ${LDEFLAGS} ${ac_krblibs}),
432            ${LDEFLAGS} ${ac_krblibs})
433            AC_DEFINE(HEIMDAL)
434         else
435           AC_MSG_RESULT([found])
436           ac_krblibs="-lcom_err"
437            AC_CHECK_LIB(crypto,
438              krb5_des_string_to_key,
439              libk5crypto=-lcrypto,
440                 AC_CHECK_LIB(k5crypto,
441                    krb5_des_string_to_key,
442                    libk5crypto=-lk5crypto,
443                       AC_ERROR([Kerberos 5 DES libraries not found]),
444                    ${LDEFLAGS} ${ac_krblibs}),
445                  ${LDEFLAGS} ${ac_krblibs})
446         fi
447         AC_CHECK_LIB(krb5, krb5_init_context,[],
448            continue,
449            ${LDEFLAGS} ${ac_krblibs})
450         AC_DEFINE(KERBEROS_V5)
451         test "$dir" != "/usr" && CEFLAGS="$CEFLAGS -I$dir/include"
452         LDEFLAGS="$LDEFLAGS -L$dir/lib"
453        LIBS="$LIBS $ac_krblibs $libk5crypto"
454         with_kerberos5=$dir
455         break
456      else
457         AC_MSG_RESULT([not found])
458      fi
459   done
460   if test -z "$with_kerberos5" ; then
461      AC_ERROR([Kerberos 5 libraries not found])
462   fi
463 fi
464 fi
465 ]) dnl --with-kerberos5=DIR
466
467 ###    use option --with-kerberos=DIR to point at a Kerberos 4 directory
468 AC_ARG_WITH(kerberos,
469        [  --with-kerberos=DIR     point fetchmail compilation at a Kerberos 4
470 directory],
471 [
472 if test "$with_kerberos" != "no"
473 then
474 # Check for a NetBSD/OpenBSD special case
475 if test "$with_kerberos" = "yes" && ( test `uname` = "NetBSD" || test `uname` = "OpenBSD" )
476 then
477   AC_CHECKING([kerberosIV for `uname`])
478   AC_DEFINE(KERBEROS_V4)
479   CEFLAGS="$CEFLAGS -I/usr/include/kerberosIV"
480   LIBS="$LIBS -lkrb -ldes"
481 else
482   #we need to detect when we're building under a kerberosV compatibility
483   #layer, btw...
484   if test "$with_kerberos" != "yes" ; then
485      searchdirs="$with_kerberos"
486   else
487      searchdirs="$with_kerberos5 /usr/kerberos /usr/kerberosIV /usr/athena/usr"
488   fi
489   with_kerberos=
490   ac_saveLDFLAGS="$LDFLAGS"
491   for dir in $searchdirs
492   do
493      AC_MSG_CHECKING([for Kerberos IV in $dir])
494      if test -f "$dir/include/krb.h" || test -f "$dir/include/krb4.h" \
495             || test -f "$dir/include/kerberosIV/krb.h"
496      then
497         AC_MSG_RESULT([found])
498      else
499         AC_MSG_RESULT([not found])
500        continue
501      fi
502      #Find libs
503      if test -f "$with_kerberos5/roken.h" ; then
504        AC_CHECK_LIB(45, krb_mk_req)
505      fi
506      LDFLAGS="-L$dir/lib $ac_saveLDFLAGS"
507      AC_SEARCH_LIBS(des_string_to_key, [des425 des], [], continue)
508      AC_SEARCH_LIBS(krb_realmofhost, [krb4 krb], [], continue)
509      with_kerberos="$dir"
510      if test -f "$dir/include/kerberosIV/krb.h" ; then
511         dir="$dir/include/kerberosIV"
512      else
513        dir="$dir/include"
514      fi
515      AC_DEFINE(KERBEROS_V4)
516      test -f "$with_kerberos5/roken.h" && AC_DEFINE(HEIMDAL)
517      test "$dir" != "/usr/include" && CEFLAGS="$CEFLAGS -I$dir"
518      LDEFLAGS="$LDEFLAGS -L$with_kerberos/lib"
519      break
520   done
521   if test -z "$with_kerberos" ; then
522      AC_ERROR([Kerberos 4 libraries not found])
523   fi
524   LDFLAGS="$ac_saveLDFLAGS"
525 fi
526 fi
527 ]) dnl --with-kerberos=DIR
528
529 ###     use option --with-ssl to compile in the SSL support
530 AC_ARG_WITH(ssl,
531         [  --with-ssl=[DIR]        enable SSL support using libraries in DIR],
532         [with_ssl=$withval],
533         [with_ssl=no])
534 test "$with_ssl" != "no" && AC_DEFINE(SSL_ENABLE)
535
536 if test "$with_ssl" = "yes"
537 then
538     #   He didn't specify an SSL location.  Let's look at some common
539     #   directories where SSL has been found in the past and try and auto
540     #   configure for SSL.  OpenSSL determination will be made later.
541     #   This will screw up if an OpenSSL install is located in a later
542     #   directory than an older SSLeay install, but the user should fix that
543     #   anyways and he can override on the configure line.
544     for ac_dir in \
545       /usr/local/ssl \
546       /usr/ssl \
547       /local/ssl \
548       /opt/ssl \
549       ; \
550     do
551         if test -d "$ac_dir" ; then
552             with_ssl=$ac_dir
553             break;
554         fi
555     done
556 fi
557
558 if test -n "$with_ssl" -a "$with_ssl" != "no"
559 then
560   # With the autoconfigure above, the only time this is going to be
561   # true is going to be when we could not find the headers.  If they
562   # are not in system standard locations, we are going to be broken.
563   if test "$with_ssl" = "yes"
564   then
565     # Let's just define the standard location for the SSLeay root
566     with_ssl="/usr/local/ssl"
567   fi
568   if test -r $with_ssl/include/openssl/ssl.h
569   then
570     ### ssl.h found under openssl.  Use openssl configuration preferentially
571     echo "Enabling OpenSSL support in $with_ssl"
572     CEFLAGS="$CEFLAGS -I$with_ssl/include -I$with_ssl/include/openssl"
573     ### OpenBSD comes with ssl headers
574   elif test -r /usr/include/ssl/ssl.h
575   then
576     echo "Enabling SSLeay support in $with_ssl"
577     CEFLAGS="$CEFLAGS -I/usr/include/ssl"
578   else
579     echo "Enabling SSLeay support in $with_ssl"
580     CEFLAGS="$CEFLAGS -I$with_ssl/include"
581   fi
582   LDEFLAGS="$LDEFLAGS -L$with_ssl/lib"
583   LIBS="$LIBS -lssl -lcrypto"
584   AC_DEFINE(SSL_ENABLE)
585 else
586   echo 'Disabling SSL support...'
587 fi
588
589 ###     use option --with-socks=DIR to point at SOCKS library
590 AC_ARG_WITH(socks,
591         [  --with-socks[=DIR]      add built-in SOCKS firewall access],
592 [
593 if test "$with_socks" != no
594 then
595     if test "$with_socks" != yes
596     then
597         LDEFLAGS="$LDEFLAGS -L$with_socks"
598     else
599         AC_CHECK_LIB(socks, Rconnect,,
600                AC_MSG_ERROR([could not find libsocks which is needed for built-in SOCKS support]))
601     fi
602     AC_DEFINE(HAVE_SOCKS)
603     CEFLAGS="$CEFLAGS -Dconnect=Rconnect -Dgetsockname=Rgetsockname -Dbind=Rbind -Daccept=Raccept -Dlisten=Rlisten -Dselect=Rselect"
604     LIBS="-lsocks $LIBS"
605 fi])
606
607 ###     use option --with-socks5=DIR to point at SOCKS library
608 AC_ARG_WITH(socks5,
609         [  --with-socks5[=DIR]     add built-in SOCKS5 firewall access],
610 [
611 if test "$with_socks5" != no
612 then
613   if test "$with_socks5" != yes
614   then
615     LDEFLAGS="$LDEFLAGS -L$with_socks5"
616   fi
617   ac_savedLDFLAGS="$LDFLAGS"
618   LDFLAGS="$LDEFLAGS $LDFLAGS"
619   AC_CHECK_LIB(socks5, SOCKSconnect,,
620         AC_MSG_ERROR([could not find libsocks5 which is needed for built-in SOCKS5 support]))
621   AC_DEFINE(HAVE_SOCKS)
622   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"
623   AC_CHECK_FUNC(SOCKSfclose, [CFLAGS="$CFLAGS -Dfclose=SOCKSfclose"])
624   LDFLAGS="$ac_savedLDFLAGS"
625 fi])
626
627 ###     use option --with-hesiod=DIR to point at a HESIOD directory
628 AC_ARG_WITH(hesiod,
629         [  --with-hesiod=DIR       point fetchmail compilation at a HESIOD directory])
630
631 case "x$with_hesiod" in
632 xno)
633     ;;
634 x)
635     for dir in /usr/athena /usr /usr/local
636     do
637       if test -f "$dir/include/hesiod.h"
638       then
639         CEFLAGS="$CEFLAGS -DHESIOD -I$dir/include"
640         LDEFLAGS="$LDEFLAGS -L$dir/lib"
641         LIBS="$LIBS -lhesiod"
642         with_hesiod=$dir
643         break
644       fi
645     done
646     ;;
647 *)
648     # Path given
649     CEFLAGS="$CEFLAGS -DHESIOD -I$with_hesiod/include"
650     LDEFLAGS="$LDEFLAGS -L$with_hesiod/lib"
651     LIBS="$LIBS -lhesiod"
652     ;;
653 esac
654
655 ###     use option --with-gssapi=DIR to compile in GSSAPI support
656 AC_ARG_WITH(gssapi,
657         [  --with-gssapi[=DIR]     compile in GSSAPI support using libraries in DIR],
658 [
659 if test "$with_gssapi" != "no"
660 then
661   if test "$with_gssapi" = "yes" -a -n "$with_kerberos5"
662   then
663     with_gssapi=$with_kerberos5
664   fi
665   if test "$with_gssapi" != "yes" -a -n "$with_gssapi"
666   then
667     CFLAGS="$CFLAGS -I$with_gssapi/include"
668     LDFLAGS="$LDFLAGS -L$with_gssapi/lib"
669   fi
670
671   if test -f "$with_gssapi/include/roken.h"
672   then
673      LIBS="$LIBS -lkrb5 -lasn1 -ldes -lroken -ldb -ldl"
674      AC_CHECK_LIB(gssapi, gss_init_sec_context,LIBS="$LIBS -lgssapi",
675                   AC_MSG_ERROR([could not find libgssapi which is needed for GSSAPI support]), )
676      AC_DEFINE(HEIMDAL)
677   else
678      AC_CHECK_LIB(gssapi_krb5, gss_init_sec_context,LIBS="$LIBS -lgssapi_krb5",
679                   AC_MSG_ERROR([could not find libgssapi_krb5 which is needed for GSSAPI support]), -lkrb5)
680   fi
681   AC_DEFINE(GSSAPI)
682   save_CPPFLAGS=$CPPFLAGS
683   CPPFLAGS="-I$with_gssapi/include"
684   AC_CHECK_HEADERS(gssapi.h gssapi/gssapi.h gssapi/gssapi_generic.h)
685   if test "$ac_cv_header_gssapi_h" = "yes"; then
686     AC_EGREP_HEADER(GSS_C_NT_HOSTBASED_SERVICE, gssapi.h, AC_DEFINE(HAVE_GSS_C_NT_HOSTBASED_SERVICE))
687   else
688     AC_EGREP_HEADER(GSS_C_NT_HOSTBASED_SERVICE, gssapi/gssapi.h, AC_DEFINE(HAVE_GSS_C_NT_HOSTBASED_SERVICE))
689   fi
690 fi])
691
692 AC_OUTPUT([Makefile intl/Makefile po/Makefile.in], [
693         # The reason for this odd makedepend line is that we want
694         # to have all dependencies evaluated relative to the source directory
695         # and let VPATH do all the dirty work when we build remotely
696         echo "You can ignore any makedepend error messages:";
697         echo timestamp > stamp-h;
698         (cd $srcdir; makedepend -f - *.c) >>Makefile])
699
700 dnl Local Variables:
701 dnl comment-start: "dnl "
702 dnl comment-end: ""
703 dnl comment-start-skip: "\\bdnl\\b\\s *"
704 dnl compile-command: "make configure config.h.in"
705 dnl End: