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