dnl Autoconfigure input file for fetchmail dnl Eric S. Raymond dnl dnl Process this file with autoconf to produce a configure script. dnl AC_INIT(fetchmail.h) dnl A distinctive file to look for in srcdir. AC_CONFIG_HEADER(config.h) dnl We want these before the checks, so the checks can modify their values. test -z "$CFLAGS" && CFLAGS="-O" AC_SUBST(CFLAGS) test -z "$LDFLAGS" && LDFLAGS=-s AC_SUBST(LDFLAGS) AC_CANONICAL_HOST AC_PROG_CC AC_PROG_INSTALL AC_PROG_CPP dnl Later checks need this. AC_PROG_CC_C_O AC_AIX AC_ISC_POSIX AC_MINIX AC_HEADER_STDC AC_TYPE_SIZE_T AC_TYPE_PID_T AC_TYPE_SIGNAL 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) AC_C_CONST dnl getopt needs this. AC_PROG_LEX AC_PROG_YACC AC_SUBST(CPFLAGS) AC_SUBST(CEFLAGS) AC_SUBST(LDEFLAGS) AC_SUBST(LIBOBJS) AC_SUBST(POMAKE) PACKAGE=`sed -n '/PACKAGE *= *\(.*\)/s//\1/p' <$srcdir/Makefile.in` AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE") AC_SUBST(PACKAGE) VERSION=`sed -n '/VERSION *= *\(.*\)/s//\1/p' <$srcdir/Makefile.in` AC_DEFINE_UNQUOTED(VERSION, "$VERSION") AC_SUBST(VERSION) # Check for LynxOS special case: -lbsd needed (at least on 2.3.0) and -s # not working. if test `uname` = "LynxOS" then echo "Adding -lbsd to standard libraries" LIBS="$LIBS -lbsd" LDFLAGS="" echo "Prepending standard include path to gcc flags" CPFLAGS="-I/usr/include" fi # Check for FreeBSD special case: -lkvm needed if test `uname` = "FreeBSD" then echo "Adding -lkvm to standard libraries" LIBS="$LIBS -lkvm" fi # Check for Rhapsody special case: it doesn't like -s if test `uname` = "Rhapsody" then echo "Removing -s load flag" LDFLAGS=`echo $LDFLAGS | sed "s/-s //"` fi # i18n # Arnaldo Carvalho de Melo # Sat Nov 7 15:39:03 EDT 1998 ALL_LINGUAS="cs es fr pl pt_BR" AM_GNU_GETTEXT # end i18n # Under sysV68, socket and friends are provided by the C library. # -linet does not provide socket, but causes multiple definition # errors at link-time. It is thus better to only use the C library. # So don't add -linet to the link list unless it's necessary AC_CHECK_FUNC(socket, AC_MSG_RESULT(using libc's socket), AC_CHECK_LIB(socket,socket) AC_CHECK_LIB(inet,socket)) # If gettext isn't in the C library, maybe there's a -lintl. AC_CHECK_FUNC(gettext, AC_MSG_RESULT(using libc's gettext), AC_CHECK_LIB(intl,gettext)) # The condition in this test copes with the presence of inet_addr in libc6. AC_CHECK_FUNC(inet_addr, AC_MSG_RESULT(using libc's inet_addr), AC_CHECK_LIB(nsl,inet_addr)) dnl Port hack for Interactive UNIX System V/386 Release 3.2 AC_CHECK_LIB(cposix, strchr, [EXTRADEFS="$EXTRADEFS -D_SYSV3" LIBS="$LIBS -lcposix"]) AC_CHECK_FUNC(strstr, AC_DEFINE(HAVE_STRSTR), [EXTRASRC="$EXTRASRC \$(srcdir)/strstr.c" EXTRAOBJ="$EXTRAOBJ strstr.o"]) AC_CHECK_FUNC(strcasecmp, AC_DEFINE(HAVE_STRCASECMP), [EXTRASRC="$EXTRASRC \$(srcdir)/strcasecmp.c" EXTRAOBJ="$EXTRAOBJ strcasecmp.o"]) AC_CHECK_FUNC(memmove, AC_DEFINE(HAVE_MEMMOVE), [EXTRASRC="$EXTRASRC \$(srcdir)/memmove.c" EXTRAOBJ="$EXTRAOBJ memmove.o"]) AC_CHECK_FUNC(getopt_long, AC_DEFINE(HAVE_GETOPTLONG), [EXTRASRC="$EXTRASRC \$(srcdir)/getopt.c \$(srcdir)/getopt1.c" EXTRAOBJ="$EXTRAOBJ getopt.o getopt1.o"]) AC_CHECK_FUNC(MD5Init, AC_DEFINE(HAVE_MD5), [EXTRASRC="$EXTRASRC \$(srcdir)/md5c.c" EXTRAOBJ="$EXTRAOBJ md5c.o"]) AC_FUNC_VPRINTF AC_FUNC_ALLOCA if test -n "$ALLOCA" then EXTRASRC="$EXTRASRC \$(srcdir)/alloca.c" EXTRAOBJ="$EXTRAOBJ alloca.o" fi dnl AC_CHECK_FUNC calls that might hack the Makefile must precede dnl the following AC_SUBSTs AC_SUBST(EXTRADEFS) AC_SUBST(EXTRASRC) AC_SUBST(EXTRAOBJ) AC_CHECK_FUNCS(tcsetattr stty setsid geteuid seteuid gethostbyname \ res_search herror strrchr strerror setlinebuf syslog \ snprintf vprintf vsnprintf vsyslog \ atexit inet_aton strftime setrlimit socketpair sigprocmask) # Under Red Hat 4.0 (and many other Linuxes) -lresolv is seriously flaky # and breaks gethostbyname(2). It's better to use the bind stuff in the C # library. So don't add -lresolv to the link list unless it's necessary # (It will be necessary when using GNU libc6). AC_CHECK_FUNC(res_search, AC_MSG_RESULT(using libc's resolver functions), AC_CHECK_LIB(resolv,res_search, [AC_DEFINE(HAVE_RES_SEARCH) AC_MSG_RESULT(found resolver functions in libresolv); LIBS="$LIBS -lresolv"], AC_MSG_RESULT(no resolver calls found))) dnl Check for libcrypt AC_CHECK_LIB(crypt,crypt) dnl Check for RSA refersence library in case we're using SSL AC_CHECK_LIB(rsaref, _RSAPublicDecrypt) dnl AC_FUNC_SETVBUF_REVERSED dnl Check for usable void pointer type AC_MSG_CHECKING(use of void pointer type) AC_TRY_COMPILE([], [char *p; void *xmalloc(); p = (char *) xmalloc(1); ], [AC_DEFINE(HAVE_VOIDPOINTER) AC_MSG_RESULT(yes)], AC_MSG_RESULT(no)) dnl Check for ANSI volatile AC_MSG_CHECKING(for ANSI volatile) AC_TRY_COMPILE([], [volatile int n;], [AC_DEFINE(HAVE_VOLATILE) AC_MSG_RESULT(yes)], AC_MSG_RESULT(no)) dnl Check out the wait reality. We have to assume sys/wait.h is present. AC_CHECK_FUNCS(waitpid wait3) AC_MSG_CHECKING(for union wait); AC_TRY_LINK([#include #include ], [union wait status; int pid; pid = wait (&status); #ifdef WEXITSTATUS /* Some POSIXoid systems have both the new-style macros and the old union wait type, and they do not work together. If union wait conflicts with WEXITSTATUS et al, we don't want to use it at all. */ if (WEXITSTATUS (status) != 0) pid = -1; #endif #ifdef HAVE_WAITPID /* Make sure union wait works with waitpid. */ pid = waitpid (-1, &status, 0); #endif ], [AC_DEFINE(HAVE_UNION_WAIT) AC_MSG_RESULT(yes)], AC_MSG_RESULT(no)) AC_MSG_CHECKING(sys_siglist declaration in signal.h or unistd.h) AC_TRY_LINK([#include /* NetBSD declares sys_siglist in . */ #ifdef HAVE_UNISTD_H #include #endif], [char *msg = *(sys_siglist + 1);], [AC_DEFINE(SYS_SIGLIST_DECLARED) AC_MSG_RESULT(yes)], AC_MSG_RESULT(no)) # Find the right directory to put the root-mode PID file in for dir in "/var/run" "/etc" do if test -d $dir then break; fi done AC_MSG_RESULT(root-mode pid file will go in $dir) AC_DEFINE_UNQUOTED(PID_DIR, "$dir") AC_CHECK_SIZEOF(short) AC_CHECK_SIZEOF(int) AC_CHECK_SIZEOF(long) if test "$USE_NLS" = "yes" then echo 'Enabling internationalization support...' POMAKE='$(MAKE) -C po' if test "x$prefix" != xNONE; then EXTRADEFS="$EXTRADEFS -DLOCALEDIR='\"$prefix/share/locale\"'" else EXTRADEFS="$EXTRADEFS -DLOCALEDIR='\"$ac_default_prefix/share/locale\"'" fi else echo 'Disabling internationalization support...' POMAKE="@echo '(NLS support disabled)'; #" fi ### use option --enable-POP2 to compile in the POP2 support AC_ARG_ENABLE(POP2, [ --enable-POP2 compile in POP2 protocol support (obsolete)], [with_POP2=$enableval], [with_POP2=no]) test "$with_POP2" = "yes" && AC_DEFINE(POP2_ENABLE) ### use option --disable-POP3 to omit the POP3 support AC_ARG_ENABLE(POP3, [ --disable-POP3 don't compile in POP3 protocol support], [with_POP3=$enableval], [with_POP3=yes]) test "$with_POP3" = "yes" && AC_DEFINE(POP3_ENABLE) ### use option --disable-IMAP to omit the IMAP support AC_ARG_ENABLE(IMAP, [ --disable-IMAP don't compile in IMAP protocol support], [with_IMAP=$enableval], [with_IMAP=yes]) test "$with_IMAP" = "yes" && AC_DEFINE(IMAP_ENABLE) ### use option --disable-ETRN to omit the ETRN support AC_ARG_ENABLE(ETRN, [ --disable-ETRN don't compile in ETRN protocol support], [with_ETRN=$enableval], [with_ETRN=yes]) test "$with_ETRN" = "yes" && AC_DEFINE(ETRN_ENABLE) ### use option --enable-RPA to compile in the RPA support AC_ARG_ENABLE(RPA, [ --enable-RPA compile in RPA protocol support], [with_RPA=$enableval], [with_RPA=no]) test "$with_RPA" = "yes" && AC_DEFINE(RPA_ENABLE) ### use option --enable-NTLM to compile in the NTLM support AC_ARG_ENABLE(NTLM, [ --enable-NTLM compile in NTLM authentication support], [with_NTLM=$enableval], [with_NTLM=no]) test "$with_NTLM" = "yes" && AC_DEFINE(NTLM_ENABLE) ### use option --enable-SDPS to compile in the SDPS support AC_ARG_ENABLE(SDPS, [ --enable-SDPS compile in SDPS protocol support], [with_SDPS=$enableval], [with_SDPS=no]) test "$with_SDPS" = "yes" && AC_DEFINE(SDPS_ENABLE) ### use option --enable-opie to compile in the OPIE support AC_ARG_ENABLE(opie, [ --enable-opie support OTP through the OPIE library], [ AC_CHECK_HEADER(opie.h,, [echo 'configure: cannot find , which is required for OPIE support.'; exit 1]) AC_CHECK_LIB(opie,opiegenerator,, [echo 'configure: cannot find libopie, which is required for OPIE support.'; exit 1]) with_opie=$enableval], [with_opie=no]) test "$with_opie" = "yes" && AC_DEFINE(OPIE_ENABLE) AC_ARG_ENABLE(inet6, [ --enable-inet6 support IPv6 (requires the inet6-apps library)], [ AC_CHECK_FUNC(getaddrinfo, [with_inet6=yes], [ LDFLAGS="$LDFLAGS -L/usr/inet6/lib"; AC_CHECK_LIB(inet6, getaddrinfo, [with_inet6=yes LIBS="$LIBS -linet6"], [ echo 'configure: cannot find proper glibc version or libinet6,'; echo ' which is required for IPv6 support.'; exit 1]) ] )], [with_inet6=no]) test "$with_inet6" = "yes" && AC_DEFINE(INET6_ENABLE) AC_CHECK_FUNCS(inner_connect) AC_ARG_ENABLE(netsec, [ --enable-netsec support network security (requires inet6-apps library)], [ unset ac_cv_lib_inet6_net_security_strtorequest; AC_CHECK_LIB(inet6, net_security_strtorequest,, [ unset ac_cv_lib_inet6_net_security_strtorequest; LDFLAGS="$LDFLAGS -L/usr/inet6/lib"; AC_CHECK_LIB(inet6, net_security_strtorequest,, [ echo 'configure: cannot find net_security_strtorequest in libinet6, which is required'; echo ' for network security support. Either it does not exist, or it was'; echo ' not built with network security support enabled.'; exit 1]) ]) unset ac_cv_header_net_security_h; AC_CHECK_HEADER(net/security.h,, [ 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,, [ echo 'configure: cannot find , which is required'; echo ' for network security support.'; exit 1]) ]) ] [with_netsec=no]) test "$with_netsec" = "yes" && AC_DEFINE(NET_SECURITY) ### use option --with-kerberos5=DIR to point at a Kerberos 5 directory AC_ARG_WITH(kerberos5, [ --with-kerberos5=DIR point fetchmail compilation at a Kerberos 5 directory]) # The "then" arm (nonempty $with_kerberos5) is kind of a crock. It works for # configuring the BSD/OS Kerberos IV support, though. if test -n "$with_kerberos5" -a "$with_kerberos5" != "no" then # Path given CEFLAGS="$CEFLAGS -DKERBEROS_V5 -I$with_kerberos5/include" LDEFLAGS="$LDEFLAGS -L$with_kerberos5/lib" if test -f "$with_kerberos5/include/roken.h" then AC_DEFINE(HEIMDAL) LIBS="$LIBS -lkrb5 -lasn1 -ldes -lroken -lcom_err" else LIBS="$LIBS -lkrb5 -lcrypto -lcom_err" fi elif test "$with_kerberos" != "no"; then for dir in /usr/kerberos /usr/local/krb5 /usr/athena do if test -f "$dir/include/krb5.h" then CEFLAGS="$CEFLAGS -DKERBEROS_V5 -I$dir/include" LDEFLAGS="$LDEFLAGS -L$dir/lib" if test -f "$dir/include/roken.h" then AC_DEFINE(HEIMDAL) LIBS="$LIBS -lkrb5 -lasn1 -ldes -lcom_err" else LIBS="$LIBS -lkrb5 -lcrypto -lcom_err" fi with_kerberos5=$dir break fi done fi ### use option --with-ssl to compile in the SSL support AC_ARG_WITH(ssl, [ --with-ssl=[DIR] enable SSL support using libraries in DIR], [with_ssl=$withval], [with_ssl=no]) test "$with_ssl" = "yes" && AC_DEFINE(SSL_ENABLE) if test "$with_ssl" = "yes" then # He didn't specify an SSL location. Let's look at some common # directories where SSL has been found in the past and try and auto # configure for SSL. OpenSSL determination will be made later. # This will screw up if an OpenSSL install is located in a later # directory than an older SSLeay install, but the user should fix that # anyways and he can override on the configure line. for ac_dir in \ /usr/local/ssl \ /usr/ssl \ /local/ssl \ /opt/ssl \ ; \ do if test -d "$ac_dir" ; then with_ssl=$ac_dir break; fi done fi if test -n "$with_ssl" -a "$with_ssl" != "no" then # With the autoconfigure above, the only time this is going to be # true is going to be when we could not find the headers. If they # are not in system standard locations, we are going to be broken. if test "$with_ssl" = "yes" then # Let's just define the standard location for the SSLeay root with_ssl="/usr/local/ssl" fi if test -r $with_ssl/include/openssl/ssl.h then ### ssl.h found under openssl. Use openssl configuration preferentially echo "Enabling OpenSSL support in $with_ssl" CEFLAGS="$CEFLAGS -I$with_ssl/include -I$with_ssl/include/openssl" ### OpenBSD comes with ssl headers elif test -r /usr/include/ssl/ssl.h then echo "Enabling SSLeay support in $with_ssl" CEFLAGS="$CEFLAGS -I/usr/include/ssl" else echo "Enabling SSLeay support in $with_ssl" CEFLAGS="$CEFLAGS -I$with_ssl/include" fi LDEFLAGS="$LDEFLAGS -L$with_ssl/lib" LIBS="$LIBS -lssl -lcrypto" AC_DEFINE(SSL_ENABLE) else echo 'Disabling SSL support...' fi ### use option --with-kerberos=DIR to point at a Kerberos directory AC_ARG_WITH(kerberos, [ --with-kerberos=DIR point fetchmail compilation at a Kerberos directory]) # The "elif" arm (nonempty $with_kerberos) is kind of a crock. It works for # configuring the BSD/OS Kerberos IV support, though. # Check for a NetBSD/OpenBSD special case if test "$with_kerberos" = "yes" && test `uname` = "NetBSD" -o `uname` = "OpenBSD" then echo "Configuring kerberosIV for `uname`" CEFLAGS="$CEFLAGS -DKERBEROS_V4 -I/usr/include/kerberosIV" LIBS="$LIBS -lkrb -ldes" elif test -n "$with_kerberos" -a -n "$with_kerberos5" -a "$with_kerberos" != "no" then CEFLAGS="$CEFLAGS -DKERBEROS_V4 -I$with_kerberos/include" LDEFLAGS="$LDEFLAGS -L$with_kerberos/lib" if test -f "$with_kerberos5/roken.h" then AC_DEFINE(HEIMDAL) LIBS="-lkrb4 -l45 $LIBS" else LIBS="-lkrb4 -ldes425 $LIBS" fi elif test -n "$with_kerberos5" -a "$with_kerberos" != "no" then for dir in /usr/kerberos /usr/kerberosIV /usr/athena do if test -f "$dir/include/kerberosIV/krb.h" then CEFLAGS="$CEFLAGS -DKERBEROS_V4 -I$dir/include" LDEFLAGS="$LDEFLAGS -L$dir/lib" LIBS="-lkrb4 -ldes425 $LIBS" break fi done elif test -n "$with_kerberos" -a "$with_kerberos" != "no" then CEFLAGS="$CEFLAGS -DKERBEROS_V4 -I$with_kerberos/include" LDEFLAGS="$LDEFLAGS -L$with_kerberos/lib" LIBS="$LIBS -lkrb -ldes" else if test "$with_kerberos" != "no" then for dir in /usr/kerberos /usr/kerberosIV /usr/athena do if test -f "$dir/include/krb.h" then CEFLAGS="$CEFLAGS -DKERBEROS_V4 -I$dir/include" LDEFLAGS="$LDEFLAGS -L$dir/lib" LIBS="$LIBS -lkrb -ldes" break fi done fi ### use option --with-socks=DIR to point at SOCKS library AC_ARG_WITH(socks, [ --with-socks[=DIR] add built-in SOCKS firewall access], [ if test "$with_socks" != no then if test "$with_socks" != yes then LDEFLAGS="$LDEFLAGS -L$with_socks" else AC_CHECK_LIB(socks, Rconnect,, AC_MSG_ERROR([could not find libsocks which is needed for built-in SOCKS support])) fi AC_DEFINE(HAVE_SOCKS) CEFLAGS="$CEFLAGS -Dconnect=Rconnect -Dgetsockname=Rgetsockname -Dbind=Rbind -Daccept=Raccept -Dlisten=Rlisten -Dselect=Rselect" LIBS="-lsocks $LIBS" fi]) ### use option --with-hesiod=DIR to point at a HESIOD directory AC_ARG_WITH(hesiod, [ --with-hesiod=DIR point fetchmail compilation at a HESIOD directory]) case "x$with_hesiod" in xno) ;; x) for dir in /usr/athena /usr /usr/local do if test -f "$dir/include/hesiod.h" then CEFLAGS="$CEFLAGS -DHESIOD -I$dir/include" LDEFLAGS="$LDEFLAGS -L$dir/lib" LIBS="$LIBS -lhesiod" with_hesiod=$dir break fi done ;; *) # Path given CEFLAGS="$CEFLAGS -DHESIOD -I$with_hesiod/include" LDEFLAGS="$LDEFLAGS -L$with_hesiod/lib" LIBS="$LIBS -lhesiod" ;; esac fi ### use option --with-gssapi=DIR to compile in GSSAPI support AC_ARG_WITH(gssapi, [ --with-gssapi[=DIR] compile in GSSAPI support using libraries in DIR], [ if test "$with_gssapi" != "no" then if test "$with_gssapi" = "yes" -a -n "$with_kerberos5" then with_gssapi=$with_kerberos5 fi if test "$with_gssapi" != "yes" -a -n "$with_gssapi" then CFLAGS="$CFLAGS -I$with_gssapi/include" LDFLAGS="$LDFLAGS -L$with_gssapi/lib" fi if test -f "$with_gssapi/include/roken.h" then LIBS="$LIBS -lkrb5 -lasn1 -ldes -lroken -ldb -ldl" AC_CHECK_LIB(gssapi, gss_init_sec_context,LIBS="$LIBS -lgssapi", AC_MSG_ERROR([could not find libgssapi which is needed for GSSAPI support]), ) AC_DEFINE(HEIMDAL) else AC_CHECK_LIB(gssapi_krb5, gss_init_sec_context,LIBS="$LIBS -lgssapi_krb5", AC_MSG_ERROR([could not find libgssapi_krb5 which is needed for GSSAPI support]), -lkrb5) fi AC_DEFINE(GSSAPI) save_CPPFLAGS=$CPPFLAGS CPPFLAGS="-I$with_gssapi/include" AC_CHECK_HEADERS(gssapi.h gssapi/gssapi.h gssapi/gssapi_generic.h) if test "$ac_cv_header_gssapi_h" = "yes"; then AC_EGREP_HEADER(GSS_C_NT_HOSTBASED_SERVICE, gssapi.h, AC_DEFINE(HAVE_GSS_C_NT_HOSTBASED_SERVICE)) else AC_EGREP_HEADER(GSS_C_NT_HOSTBASED_SERVICE, gssapi/gssapi.h, AC_DEFINE(HAVE_GSS_C_NT_HOSTBASED_SERVICE)) fi fi]) AC_OUTPUT([Makefile intl/Makefile po/Makefile.in], [ # The reason for this odd makedepend line is that we want # to have all dependencies evaluated relative to the source directory # and let VPATH do all the dirty work when we build remotely echo "You can ignore any makedepend error messages:"; echo timestamp > stamp-h; (cd $srcdir; makedepend -f - *.c) >>Makefile]) dnl Local Variables: dnl comment-start: "dnl " dnl comment-end: "" dnl comment-start-skip: "\\bdnl\\b\\s *" dnl compile-command: "make configure config.h.in" dnl End: