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