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