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