1 dnl Autoconfigure input file for fetchmail
2 dnl Eric S. Raymond <esr@thyrsus.com>
4 dnl Process this file with autoconf to produce a configure script.
7 AC_INIT(fetchmail.h) dnl A distinctive file to look for in srcdir.
8 AC_CONFIG_HEADER(config.h)
10 dnl We want these before the checks, so the checks can modify their values.
11 test -z "$CFLAGS" && CFLAGS="-O" AC_SUBST(CFLAGS)
12 test -z "$LDFLAGS" && LDFLAGS=-s AC_SUBST(LDFLAGS)
17 AC_PROG_CPP dnl Later checks need this.
26 AC_CHECK_HEADERS(unistd.h termios.h termio.h sgtty.h stdarg.h alloca.h sys/itimer.h fcntl.h sys/fcntl.h memory.h sys/wait.h)
28 AC_C_CONST dnl getopt needs this.
38 PACKAGE=`sed -n '/PACKAGE *= *\(.*\)/s//\1/p' <$srcdir/Makefile.in`
39 AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE")
42 VERSION=`sed -n '/VERSION *= *\(.*\)/s//\1/p' <$srcdir/Makefile.in`
43 AC_DEFINE_UNQUOTED(VERSION, "$VERSION")
46 # Check for LynxOS special case: -lbsd needed (at least on 2.3.0) and -s
48 if test `uname` = "LynxOS"
50 echo "Adding -lbsd to standard libraries"
53 echo "Prepending standard include path to gcc flags"
54 CPFLAGS="-I/usr/include"
57 # Check for FreeBSD special case: -lkvm needed
58 if test `uname` = "FreeBSD"
60 echo "Adding -lkvm to standard libraries"
64 # Check for Rhapsody special case: it doesn't like -s
65 if test `uname` = "Rhapsody"
67 echo "Removing -s load flag"
68 LDFLAGS=`echo $LDFLAGS | sed "s/-s //"`
72 # Arnaldo Carvalho de Melo <acme@conectiva.com.br>
73 # Sat Nov 7 15:39:03 EDT 1998
75 ALL_LINGUAS="cs es fr pl pt_BR ru"
81 # Under sysV68, socket and friends are provided by the C library.
82 # -linet does not provide socket, but causes multiple definition
83 # errors at link-time. It is thus better to only use the C library.
84 # So don't add -linet to the link list unless it's necessary
86 AC_MSG_RESULT(using libc's socket),
87 AC_CHECK_LIB(socket,socket)
88 AC_CHECK_LIB(inet,socket))
90 # If gettext isn't in the C library, maybe there's a -lintl.
91 AC_CHECK_FUNC(gettext,
92 AC_MSG_RESULT(using libc's gettext),
93 AC_CHECK_LIB(intl,gettext))
95 # The condition in this test copes with the presence of inet_addr in libc6.
96 AC_CHECK_FUNC(inet_addr,
97 AC_MSG_RESULT(using libc's inet_addr),
98 AC_CHECK_LIB(nsl,inet_addr))
100 dnl Port hack for Interactive UNIX System V/386 Release 3.2
101 AC_CHECK_LIB(cposix, strchr,
102 [EXTRADEFS="$EXTRADEFS -D_SYSV3"
103 LIBS="$LIBS -lcposix"])
105 AC_CHECK_FUNC(strstr, AC_DEFINE(HAVE_STRSTR),
106 [EXTRASRC="$EXTRASRC \$(srcdir)/strstr.c"
107 EXTRAOBJ="$EXTRAOBJ strstr.o"])
109 AC_CHECK_FUNC(strcasecmp, AC_DEFINE(HAVE_STRCASECMP),
110 [EXTRASRC="$EXTRASRC \$(srcdir)/strcasecmp.c"
111 EXTRAOBJ="$EXTRAOBJ strcasecmp.o"])
113 AC_CHECK_FUNC(memmove, AC_DEFINE(HAVE_MEMMOVE),
114 [EXTRASRC="$EXTRASRC \$(srcdir)/memmove.c"
115 EXTRAOBJ="$EXTRAOBJ memmove.o"])
117 AC_CHECK_FUNC(getopt_long, AC_DEFINE(HAVE_GETOPTLONG),
118 [EXTRASRC="$EXTRASRC \$(srcdir)/getopt.c \$(srcdir)/getopt1.c"
119 EXTRAOBJ="$EXTRAOBJ getopt.o getopt1.o"])
125 EXTRASRC="$EXTRASRC \$(srcdir)/alloca.c"
126 EXTRAOBJ="$EXTRAOBJ alloca.o"
129 dnl AC_CHECK_FUNC calls that might hack the Makefile must precede
130 dnl the following AC_SUBSTs
136 AC_CHECK_FUNCS(tcsetattr stty setsid geteuid seteuid gethostbyname \
137 res_search herror strrchr strerror setlinebuf syslog \
138 snprintf vprintf vsnprintf vsyslog \
139 atexit inet_aton strftime setrlimit socketpair sigprocmask)
141 # Under Red Hat 4.0 (and many other Linuxes) -lresolv is seriously flaky
142 # and breaks gethostbyname(2). It's better to use the bind stuff in the C
143 # library. So don't add -lresolv to the link list unless it's necessary
144 # (It will be necessary when using GNU libc6).
145 AC_CHECK_FUNC(res_search,
146 AC_MSG_RESULT(using libc's resolver functions),
147 AC_CHECK_LIB(resolv,res_search,
148 [AC_DEFINE(HAVE_RES_SEARCH) AC_MSG_RESULT(found resolver functions in libresolv); LIBS="$LIBS -lresolv"], AC_MSG_RESULT(no resolver calls found)))
150 dnl Check for libcrypt
151 AC_CHECK_LIB(crypt,crypt)
153 dnl AC_FUNC_SETVBUF_REVERSED
155 dnl Check for usable void pointer type
156 AC_MSG_CHECKING(use of void pointer type)
160 p = (char *) xmalloc(1);
162 [AC_DEFINE(HAVE_VOIDPOINTER) AC_MSG_RESULT(yes)],
165 dnl Check for ANSI volatile
166 AC_MSG_CHECKING(for ANSI volatile)
169 [AC_DEFINE(HAVE_VOLATILE) AC_MSG_RESULT(yes)],
172 dnl Check out the wait reality. We have to assume sys/wait.h is present.
173 AC_CHECK_FUNCS(waitpid wait3)
174 AC_MSG_CHECKING(for union wait);
175 AC_TRY_LINK([#include <sys/types.h>
176 #include <sys/wait.h>],
177 [union wait status; int pid; pid = wait (&status);
179 /* Some POSIXoid systems have both the new-style macros and the old
180 union wait type, and they do not work together. If union wait
181 conflicts with WEXITSTATUS et al, we don't want to use it at all. */
182 if (WEXITSTATUS (status) != 0) pid = -1;
185 /* Make sure union wait works with waitpid. */
186 pid = waitpid (-1, &status, 0);
189 [AC_DEFINE(HAVE_UNION_WAIT) AC_MSG_RESULT(yes)],
192 AC_MSG_CHECKING(sys_siglist declaration in signal.h or unistd.h)
193 AC_TRY_LINK([#include <signal.h>
194 /* NetBSD declares sys_siglist in <unistd.h>. */
197 #endif], [char *msg = *(sys_siglist + 1);],
198 [AC_DEFINE(SYS_SIGLIST_DECLARED) AC_MSG_RESULT(yes)],
201 # Find the right directory to put the root-mode PID file in
202 for dir in "/var/run" "/etc"
209 AC_MSG_RESULT(root-mode pid file will go in $dir)
210 AC_DEFINE_UNQUOTED(PID_DIR, "$dir")
212 AC_CHECK_SIZEOF(short)
214 AC_CHECK_SIZEOF(long)
216 if test "$USE_NLS" = "yes"
218 echo 'Enabling internationalization support...'
219 POMAKE='$(MAKE) -C po'
220 if test "x$prefix" != xNONE; then
221 EXTRADEFS="$EXTRADEFS -DLOCALEDIR='\"$prefix/share/locale\"'"
223 EXTRADEFS="$EXTRADEFS -DLOCALEDIR='\"$ac_default_prefix/share/locale\"'"
226 echo 'Disabling internationalization support...'
227 POMAKE="@echo '(NLS support disabled)'; #"
230 ### use option --enable-POP2 to compile in the POP2 support
232 [ --enable-POP2 compile in POP2 protocol support (obsolete)],
233 [with_POP2=$enableval],
235 test "$with_POP2" = "yes" && AC_DEFINE(POP2_ENABLE)
237 ### use option --disable-POP3 to omit the POP3 support
239 [ --disable-POP3 don't compile in POP3 protocol support],
240 [with_POP3=$enableval],
242 test "$with_POP3" = "yes" && AC_DEFINE(POP3_ENABLE)
244 ### use option --disable-IMAP to omit the IMAP support
246 [ --disable-IMAP don't compile in IMAP protocol support],
247 [with_IMAP=$enableval],
249 test "$with_IMAP" = "yes" && AC_DEFINE(IMAP_ENABLE)
251 ### use option --disable-ETRN to omit the ETRN support
253 [ --disable-ETRN don't compile in ETRN protocol support],
254 [with_ETRN=$enableval],
256 test "$with_ETRN" = "yes" && AC_DEFINE(ETRN_ENABLE)
258 ### use option --enable-RPA to compile in the RPA support
260 [ --enable-RPA compile in RPA protocol support],
261 [with_RPA=$enableval],
263 test "$with_RPA" = "yes" && AC_DEFINE(RPA_ENABLE)
265 ### use option --enable-NTLM to compile in the NTLM support
267 [ --enable-NTLM compile in NTLM authentication support],
268 [with_NTLM=$enableval],
270 test "$with_NTLM" = "yes" && AC_DEFINE(NTLM_ENABLE)
272 ### use option --enable-SDPS to compile in the SDPS support
274 [ --enable-SDPS compile in SDPS protocol support],
275 [with_SDPS=$enableval],
277 test "$with_SDPS" = "yes" && AC_DEFINE(SDPS_ENABLE)
279 ### use option --enable-opie to compile in the OPIE support
281 [ --enable-opie support OTP through the OPIE library],
282 [ AC_CHECK_HEADER(opie.h,, [echo 'configure: cannot find <opie.h>, which is required for OPIE support.'; exit 1])
283 AC_CHECK_LIB(opie,opiegenerator,, [echo 'configure: cannot find libopie, which is required for OPIE support.'; exit 1])
288 [ --enable-inet6 support IPv6 (requires the inet6-apps library)],
289 [ unset ac_cv_lib_inet6_getaddrinfo; AC_CHECK_LIB(inet6, getaddrinfo,,
290 [ unset ac_cv_lib_inet6_getaddrinfo; LDFLAGS="$LDFLAGS -L/usr/inet6/lib"; AC_CHECK_LIB(inet6, getaddrinfo,,
291 [ echo 'configure: cannot find libinet6, which is required for IPv6 support.'; exit 1]) ])
292 AC_DEFINE(INET6, 1) ])
294 AC_ARG_ENABLE(netsec,
295 [ --enable-netsec support network security (requires inet6-apps library)],
296 [ unset ac_cv_lib_inet6_net_security_strtorequest; AC_CHECK_LIB(inet6, net_security_strtorequest,,
297 [ unset ac_cv_lib_inet6_net_security_strtorequest; LDFLAGS="$LDFLAGS -L/usr/inet6/lib"; AC_CHECK_LIB(inet6, net_security_strtorequest,,
298 [ echo 'configure: cannot find net_security_strtorequest in libinet6, which is required';
299 echo ' for network security support. Either it does not exist, or it was';
300 echo ' not built with network security support enabled.';
302 unset ac_cv_header_net_security_h; AC_CHECK_HEADER(net/security.h,,
303 [ unset ac_cv_header_net_security_h; CPPFLAGS="$CPPFLAGS -I/usr/inet6/include"; CFLAGS="$CFLAGS -I/usr/inet6/include"; AC_CHECK_HEADER(net/security.h,,
304 [ echo 'configure: cannot find <net/security.h>, which is required for network security';
307 AC_DEFINE(NET_SECURITY, 1) ])
309 ### use option --with-kerberos5=DIR to point at a Kerberos 5 directory
310 AC_ARG_WITH(kerberos5,
311 [ --with-kerberos5=DIR point fetchmail compilation at a Kerberos 5 directory])
313 # The "then" arm (nonempty $with_kerberos5) is kind of a crock. It works for
314 # configuring the BSD/OS Kerberos IV support, though.
315 if test -n "$with_kerberos5"
318 CEFLAGS="$CEFLAGS -DKERBEROS_V5 -I$with_kerberos5/include"
319 LDEFLAGS="$LDEFLAGS -L$with_kerberos5/lib"
320 if test -f "$with_kerberos5/include/roken.h"
323 LIBS="$LIBS -lkrb5 -lasn1 -ldes -lroken -lcom_err"
325 LIBS="$LIBS -lkrb5 -lcrypto -lcom_err"
328 if test "$with_kerberos5" != "no" ; then
329 for dir in /usr/kerberos /usr/local/krb5 /usr/athena
331 if test -f "$dir/include/krb5.h"
333 CEFLAGS="$CEFLAGS -DKERBEROS_V5 -I$dir/include"
334 LDEFLAGS="$LDEFLAGS -L$dir/lib"
335 if test -f "$dir/include/roken.h"
338 LIBS="$LIBS -lkrb5 -lasn1 -ldes -lcom_err"
340 LIBS="$LIBS -lkrb5 -lcrypto -lcom_err"
349 ### use option --with-kerberos=DIR to point at a Kerberos directory
350 AC_ARG_WITH(kerberos,
351 [ --with-kerberos=DIR point fetchmail compilation at a Kerberos directory])
353 # The "elif" arm (nonempty $with_kerberos) is kind of a crock. It works for
354 # configuring the BSD/OS Kerberos IV support, though.
356 # Check for a NetBSD/OpenBSD special case
357 if test "$with_kerberos" = "yes" && test `uname` = "NetBSD" -o `uname` = "OpenBSD"
359 echo "Configuring kerberosIV for `uname`"
360 CEFLAGS="$CEFLAGS -DKERBEROS_V4 -I/usr/include/kerberosIV"
361 LIBS="$LIBS -lkrb -ldes"
362 elif test -n "$with_kerberos" -a -n "$with_kerberos5"
364 CEFLAGS="$CEFLAGS -DKERBEROS_V4 -I$with_kerberos/include"
365 LDEFLAGS="$LDEFLAGS -L$with_kerberos/lib"
366 if test -f "$with_kerberos5/roken.h"
369 LIBS="-lkrb4 -l45 $LIBS"
371 LIBS="-lkrb4 -ldes425 $LIBS"
373 elif test -n "$with_kerberos5"
375 for dir in /usr/kerberos /usr/kerberosIV /usr/athena
377 if test -f "$dir/include/kerberosIV/krb.h"
379 CEFLAGS="$CEFLAGS -DKERBEROS_V4 -I$dir/include"
380 LDEFLAGS="$LDEFLAGS -L$dir/lib"
381 LIBS="-lkrb4 -ldes425 $LIBS"
385 elif test -n "$with_kerberos" -a "$with_kerberos" != "no"
387 CEFLAGS="$CEFLAGS -DKERBEROS_V4 -I$with_kerberos/include"
388 LDEFLAGS="$LDEFLAGS -L$with_kerberos/lib"
389 LIBS="$LIBS -lkrb -ldes"
391 if test "$with_kerberos" != "no"
393 for dir in /usr/kerberos /usr/kerberosIV /usr/athena
395 if test -f "$dir/include/krb.h"
397 CEFLAGS="$CEFLAGS -DKERBEROS_V4 -I$dir/include"
398 LDEFLAGS="$LDEFLAGS -L$dir/lib"
399 LIBS="$LIBS -lkrb -ldes"
405 ### use option --with-socks=DIR to point at SOCKS library
407 [ --with-socks[=DIR] add built-in SOCKS firewall access],
409 if test "$with_socks" != no
411 if test "$with_socks" != yes
413 LDEFLAGS="$LDEFLAGS -L$with_socks"
415 AC_CHECK_LIB(socks, Rconnect,,
416 AC_MSG_ERROR([could not find libsocks which is needed for built-in SOCKS support]))
418 AC_DEFINE(HAVE_SOCKS)
419 CEFLAGS="$CEFLAGS -Dconnect=Rconnect -Dgetsockname=Rgetsockname -Dbind=Rbind -Daccept=Raccept -Dlisten=Rlisten -Dselect=Rselect"
423 ### use option --with-hesiod=DIR to point at a HESIOD directory
425 [ --with-hesiod=DIR point fetchmail compilation at a HESIOD directory])
427 if test -n "$with_hesiod"
430 CEFLAGS="$CEFLAGS -DHESIOD -I$with_hesiod/include"
431 LDEFLAGS="$LDEFLAGS -L$with_hesiod/lib"
432 LIBS="$LIBS -lhesiod"
434 for dir in /usr/athena /usr /usr/local
436 if test -f "$dir/include/hesiod.h"
438 CEFLAGS="$CEFLAGS -DHESIOD -I$dir/include"
439 LDEFLAGS="$LDEFLAGS -L$dir/lib"
440 LIBS="$LIBS -lhesiod"
448 ### use option --with-gssapi=DIR to compile in GSSAPI support
450 [ --with-gssapi[=DIR] compile in GSSAPI support using libraries in DIR],
452 if test "$with_gssapi" != "no"
454 if test "$with_gssapi" = "yes" -a -n "$with_kerberos5"
456 with_gssapi=$with_kerberos5
458 if test "$with_gssapi" != "yes" -a -n "$with_gssapi"
460 CFLAGS="$CFLAGS -I$with_gssapi/include"
461 LDFLAGS="$LDFLAGS -L$with_gssapi/lib"
464 AC_CHECK_LIB(krb5, krb5_init_context,,
465 AC_MSG_ERROR([could not find libkrb5 which is needed for GSSAPI support]))
466 if test -f "$with_kerberos5/include/roken.h"
468 AC_CHECK_LIB(gssapi, gss_init_sec_context,LIBS="$LIBS -lgssapi",
469 AC_MSG_ERROR([could not find libgssapi which is needed for GSSAPI support]), )
472 AC_CHECK_LIB(gssapi_krb5, gss_init_sec_context,LIBS="$LIBS -lgssapi_krb5",
473 AC_MSG_ERROR([could not find libgssapi_krb5 which is needed for GSSAPI support]), -lkrb5)
476 save_CPPFLAGS=$CPPFLAGS
477 CPPFLAGS="-I$with_gssapi/include"
478 AC_CHECK_HEADERS(gssapi.h gssapi/gssapi.h gssapi/gssapi_generic.h)
479 if test "$ac_cv_header_gssapi_h" = "yes"; then
480 AC_EGREP_HEADER(GSS_C_NT_HOSTBASED_SERVICE, gssapi.h, AC_DEFINE(HAVE_GSS_C_NT_HOSTBASED_SERVICE))
482 AC_EGREP_HEADER(GSS_C_NT_HOSTBASED_SERVICE, gssapi/gssapi.h, AC_DEFINE(HAVE_GSS_C_NT_HOSTBASED_SERVICE))
484 CPPFLAGS=$save_CPPFLAGS
487 AC_OUTPUT([Makefile intl/Makefile po/Makefile.in], [
488 # The reason for this odd makedepend line is that we want
489 # to have all dependencies evaluated relative to the source directory
490 # and let VPATH do all the dirty work when we build remotely
491 echo "You can ignore any makedepend error messages";
492 (cd $srcdir; makedepend -f - *.c) >>Makefile])
495 dnl comment-start: "dnl "
497 dnl comment-start-skip: "\\bdnl\\b\\s *"
498 dnl compile-command: "make configure config.h.in"