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