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