diff options
| author | Sam Varshavchik | 2013-08-25 14:43:26 -0400 | 
|---|---|---|
| committer | Sam Varshavchik | 2013-08-25 14:43:52 -0400 | 
| commit | a00fd90cded04581b53d107f07ad2ff4e83384b3 (patch) | |
| tree | 6525d7dfa86d4a84bca3b3ed188b7e54636e68d9 /tcpd/configure.ac | |
| parent | 3587050bb0729dfc8759a84e7ffbc860662b1b25 (diff) | |
| download | courier-libs-a00fd90cded04581b53d107f07ad2ff4e83384b3.tar.bz2 | |
Renamed configure.in to configure.ac
Diffstat (limited to 'tcpd/configure.ac')
| -rw-r--r-- | tcpd/configure.ac | 546 | 
1 files changed, 546 insertions, 0 deletions
| diff --git a/tcpd/configure.ac b/tcpd/configure.ac new file mode 100644 index 0000000..3077c02 --- /dev/null +++ b/tcpd/configure.ac @@ -0,0 +1,546 @@ +dnl Process this file with autoconf to produce a configure script. +dnl +dnl Copyright 1998 - 2008 Double Precision, Inc.  See COPYING for +dnl distribution information. + +AC_INIT(couriertcpd, 0.11, [courier-users@lists.sourceforge.net]) + +>confdefs.h  # Kill PACKAGE_ macros + +AC_CONFIG_SRCDIR(tcpd.c) +AC_CONFIG_AUX_DIR(../..) +AM_INIT_AUTOMAKE([foreign no-define]) +LPATH="$PATH:/usr/local/bin" +AM_CONFIG_HEADER(config.h) + +dnl Checks for programs. +AC_PROG_CC +AC_PROG_INSTALL +AC_PROG_LN_S +AC_LIBTOOL_DLOPEN +AM_PROG_LIBTOOL + +SPATH="$LPATH:/usr/kerberos/bin" + +AC_PATH_PROG(SED, sed, sed, $SPATH) +if test "$SED" = "sed" +then +	AC_MSG_ERROR(sed not found.) +fi +AC_SUBST(SED) + +AC_PATH_PROG(SETENV, env, env, $SPATH) +if test "$SETENV" = "env" +then +	AC_MSG_ERROR(env not found.) +fi +AC_SUBST(SETENV) + +AC_PATH_PROG(PKGCONFIG, pkg-config, [], $SPATH) + +if test x$GCC = xyes +then +	CFLAGS="-Wall $CFLAGS" +fi +if test x$GXX = xyes +then +	CXXFLAGS="-Wall $CXXFLAGS" +fi + +CFLAGS="-I$srcdir/.. -I.. -I$srcdir/../.. -I../.. $CFLAGS" +CXXFLAGS="-I$srcdir/.. -I.. -I$srcdir/../.. -I../.. $CXXFLAGS" + +AC_PATH_PROG(KRB5CONFIG, krb5-config, krb5-config, $SPATH) + +# +# +# We may need libdl for later, not just shared check. +# + +saveLIBS="$LIBS" +AC_CHECK_LIB(dl, dlopen, [ LIBDL="-ldl" ]) +LIBS="$saveLIBS" + +dnl Determine whether transport libraries are created static or shared + +AC_SUBST(LIBDL) + +. ../../dbobj.config +if test "$dblibrary" != "" +then +	dblibrary="../../$dblibrary" +fi +AC_SUBST(dblibrary) + +COURIERTCPD="" +if test "$dblibrary" != "" +then +	COURIERTCPD=couriertcpd$EXEEXT +fi + +AC_SUBST(COURIERTCPD) + +LIBS="$saveLIBS" + +USENSL=no +saveLIBS="$LIBS" +AC_CHECK_LIB(socket,socket,result=yes,result=no) +if test $result = yes; then +        NETLIBS="-lsocket" +else +        AC_CHECK_LIB(socket,socket,result=yes,result=no,-lnsl) +        if test $result = yes; then +                NETLIBS = "-lsocket -lnsl" +                USENSL=yes +        else +                AC_CHECK_LIB(socket,connect,result=yes,result=no) +                if test $result = yes; then +                        NETLIBS="-lsocket" +                else +                        AC_CHECK_LIB(socket,connect,result=yes,result=no,-lnsl) +                        if test $result = yes; then +                                NETLIBS="-lsocket -lnsl" +                                USENSL=yes +                        fi +                fi +        fi +fi + +if test $USENSL != yes; then +	LIBS="$LIBS $NETLIBS" +	AC_TRY_LINK_FUNC(inet_addr, [ : ], +	[ +	        AC_CHECK_LIB(nsl,inet_addr,result=yes,result=no) +	        if test $result = yes; then +	                NETLIBS="$NETLIBS -lnsl" +	        fi +	]) +fi + +AC_SUBST(NETLIBS) + +dnl Checks for header files. +AC_HEADER_STDC +AC_HEADER_DIRENT +AC_CHECK_HEADERS(sys/types.h sys/time.h sys/stat.h sys/wait.h sys/select.h unistd.h fcntl.h sys/ioctl.h) +AC_HEADER_TIME + +dnl Checks for typedefs, structures, and compiler characteristics. + +AC_PID_T +AC_TYPE_UID_T +AC_TYPE_SIGNAL +AC_SYS_LARGEFILE + +AC_CACHE_CHECK([for socklen_t], +	tcpd_cv_hassocklen_t, +  +AC_COMPILE_IFELSE([ +AC_LANG_SOURCE( [ +#include <sys/types.h> +#include <sys/socket.h> +  +socklen_t sl_t; +],[ +	accept(0, 0, &sl_t); +])], +	tcpd_cv_hassocklen_t=yes, +	tcpd_cv_hassocklen_t=no) +) +  +socklen_t="int" +  +if test $tcpd_cv_hassocklen_t = yes +then +	: +else +	AC_DEFINE_UNQUOTED(socklen_t, int, [ Default definition for socklen_t ]) +fi + +dnl Checks for library functions. + +AC_CHECK_FUNCS(setpgrp setpgid) +AC_CHECK_FUNC(setpgrp, +	[ +	AC_FUNC_SETPGRP +	] +) + +AC_ARG_WITH(tcpddns, [  --without-tcpddns       Use resolver instead of DNS lookups in couriertcpd ], tcpddns="$withval", tcpddns="Y") + +case "$tcpddns" in +n*|N*|0*) +	;; +*) +	AC_DEFINE_UNQUOTED(TCPDUSERFC1035,1, +	[ Whether to use librfc1035.a to resolve via DNS ]) +	;; +esac + +saveLIBS="$LIBS" +LIBS="$LIBS $NETLIBS" +AC_CHECK_FUNC(socketpair, have_socketpair=yes, have_socketpair=no) + +AC_ARG_WITH(spipe, +[  --with-spipe=socketpair Create stream pipes as BSD socketpairs +  --with-spipe=streams    Create stream pipes as SVR3 streams +  --with-spipe=pipe       Create stream pipes as SVR4 streams], +spipe="$withval", spipe="") + +AC_CACHE_CHECK([for SVR3 stream pipes],tcpd_cv_svr3, +AC_TRY_COMPILE( [ +#include <sys/types.h> +#include <sys/stream.h> +#include <stropts.h> +#include <fcntl.h> +],[ { +        struct strfdinsert      ins; +        queue_t                 *pointer; +	int i=I_FDINSERT; +} +], tcpd_cv_svr3=yes, tcpd_cv_svr3=no)) + +AC_CACHE_CHECK( [for SVR4 stream pipes],tcpd_cv_svr4, + +AC_TRY_RUN( +[ + +changequote(<<,>>) + +#include	<stdio.h> +#include	<unistd.h> + +int main(int argc, char **argv) +{ +int	pipefd[2]; +char	c; + +	c=0; +	if (pipe(pipefd) == 0 && write(pipefd[0], &c, 1) == 1 && +		read(pipefd[1], &c, 1) == 1 && +		write(pipefd[1], &c, 1) == 1 && +		read(pipefd[0], &c, 1) == 1) +	{ +		exit (0); +	} +	exit (1); +	return (1); +} +changequote([,]) +] +, +tcpd_cv_svr4=yes, +tcpd_cv_svr4=no, +tcpd_cv_svr4="n/a") + +) + +LIBS="$saveLIBS" + +if test "$spipe" = "" +then +	if test "$have_socketpair" = "yes" +	then +		spipe="socketpair" +	fi +fi + +if test "$spipe" = "" +then +	if test "$tcpd_cv_svr3" = "yes" +	then +		spipe="streams" +	fi +fi + +if test "$spipe" = "" +then +	if test "$tcpd_cv_svr4" = "yes" +	then +		spipe="pipe" +	fi +fi + +case "$spipe" in +socketpair) +		AC_DEFINE_UNQUOTED(HAVE_SPIPE_SOCKETPAIR, 1, +		[ Whether to use socketpair() to create a bidirectional pipe ]) +		;; +streams) +		AC_DEFINE_UNQUOTED(HAVE_SPIPE_SVR3, 1, +		[ Whether to use streams to create a vidirectional pipe ]) +		;; +pipe) +		AC_DEFINE_UNQUOTED(HAVE_SPIPE_SVR4, 1, +		[ Whether pipe() is SvR4-style that's a bidirectional pipe ]) +		;; +*) +	AC_MSG_ERROR(Cannot determine stream pipe support.  If cross-compiling use --with-spipe=pipe to get SVR4 stream pipes.) +		;; +esac + + +AC_MSG_CHECKING([for stream pipes]) +AC_MSG_RESULT($spipe) + +AC_CHECK_HEADER(openssl/ssl.h,have_ssl_h=yes,have_ssl_h=no) +AC_CHECK_LIB(ssl, SSL_load_error_strings, have_ssl=yes, have_ssl=no, +	-lcrypto) + +if test "$have_ssl" = "yes" +then +	if test "$have_ssl_h" = "no" +	then +		AC_MSG_WARN(OpenSSL runtime libraries installed but the header files are missing) +		AC_MSG_WARN(disabling OpenSSL support.) +		have_ssl="no" +	fi +fi + +KRBFLAGS="" +if test "$have_ssl" = "yes" +then +	LIBCOURIERTLSOPENSSL=libcouriertlsopenssl.la + +	if test "$KRB5CONFIG" != "krb5-config" +	then +		AC_MSG_CHECKING(whether OpenSSL requires Kerberos) +		AC_TRY_COMPILE( [ +#include <openssl/ssl.h> +], [ int x=1; ], :, +		 [ +			KRBFLAGS=`$KRB5CONFIG --cflags` +			CFLAGS="$CFLAGS $KRBFLAGS" + + +			AC_TRY_COMPILE( [ +#include <openssl/ssl.h> +], [ int x=1; ], [ KRBLIBS="`$KRB5CONFIG --libs`" ], +   AC_MSG_ERROR(OpenSSL test build failed) ) +			] +) + +		if test "$KRBLIBS" = "" +		then +			AC_MSG_RESULT(no) +		else +			AC_MSG_RESULT(yes) +		fi +	fi +	openssldep="-lssl -lcrypto $KRBLIBS $NETLIBS ../random128/librandom128.la" +fi + +# GnuTLS + +have_gnutls=no + +AC_MSG_CHECKING([for GnuTLS]) + +if test "$PKGCONFIG" != "" +then +	if $PKGCONFIG --modversion gnutls >/dev/null 2>&1 +	then +		save_CPPFLAGS="$CPPFLAGS" +		CPPFLAGS="$CPPFLAGS `$PKGCONFIG --cflags gnutls`" + +		AC_TRY_COMPILE( [ +#include <gnutls/gnutls.h> +], +	[ +	], +		[ have_gnutls=yes +		], + +		[ +			have_gnutls="no: \#include <gnutls/gnutls.h> failed" +		]) + +		CPPFLAGS="$save_CPPFLAGS" +	else +		have_gnutls="no: pkgconfig --modversion gnutls failed" +	fi +else +	have_gnutls="no: pkg-config not found" +fi + +AC_MSG_RESULT($have_gnutls) + +if test "$have_gnutls" = "yes" +then +	LIBCOURIERTLSGNUTLS="libcouriertlsgnutls.la" +	CPPFLAGS="$CPPFLAGS `$PKGCONFIG --cflags gnutls`" +	have_gnutls3=no +	PKG_CHECK_EXISTS([gnutls >= 3.0], [have_gnutls3=yes]) +	if test "x$have_gnutls3" = "xno" +	then +		gnutlsdep="`$PKGCONFIG --libs gnutls` -lgnutls-extra" +	else +		gnutlsdep="`$PKGCONFIG --libs gnutls`" +		AC_DEFINE([HAVE_GNUTLS3], [1], [Use GnuTLS3]) +	fi +fi + +AC_CHECK_SIZEOF(gnutls_transport_ptr_t,0, [ +AC_INCLUDES_DEFAULT +#include <gnutls/gnutls.h> +]) + +AC_CHECK_SIZEOF(long,0) + +cast_to_ptr_t="" + +if test "$gnutls_transport_ptr_t_SIZEOF" = "$long_SIZEOF" +then +	if test "$gnutls_transport_ptr_t_SIZEOF" != 0 +	then +		cast_to_ptr_t="(long)" +	fi +fi + +AC_DEFINE_UNQUOTED(GNUTLS_CAST_PTR_T, $cast_to_ptr_t,[How to cast a file descriptor to gnutls_transport_ptr_t]) + +echo "cppflags='$KRBFLAGS'" >couriertls.config + +AC_SUBST(openssldep) +AC_SUBST(gnutlsdep) + +soxdep="`cat ../soxwrap/soxlibs.dep`" +AC_SUBST(soxdep) + + +# Choose GnuTLS or OpenSSL + +AC_ARG_WITH(gnutls, [ --with-gnutls     Use GnuTLS even if OpenSSL is available], +		    [ + +if test "$withval" = "yes" +then +	if test "$have_gnutls" = "yes" +	then +		have_ssl="no" +	else +		AC_MSG_ERROR(Cannot find GnuTLS) +	fi +else +	have_gnutls="no" +fi +], +	[ + +	if test "$have_ssl" = "yes" +	then +		have_gnutls="no" +	fi +]) + +if test "$have_gnutls" = "yes" +then +	TLSLIBRARY="$LIBCOURIERTLSGNUTLS" +	STARTTLS=couriertls$EXEEXT +	BUILDLIBCOURIERTLS=libcouriertls.la + +	CRYPTLIBS="" + +	AC_MSG_CHECKING([for libgcrypt]) + +	save_LIBS="$LIBS" +	LIBS="$LIBS -lgcrypt" +	AC_TRY_LINK( [ +#include <gcrypt.h> + +], [ +	gcry_cipher_open(NULL, 0, 0, 0); +], [ +	AC_MSG_RESULT(yes) +	AC_DEFINE_UNQUOTED(HAVE_GCRYPT, 1, +				[ Whether libgcrypt is installed ]) +	CRYPTLIBS="$CRYPTLIBS -lgcrypt" +], [ +AC_MSG_RESULT(no) +]) + +	AC_MSG_CHECKING([for libgpg-error]) +	LIBS="$LIBS -lgpg-error" +	AC_TRY_LINK( [ +#include <gcrypt.h> + +], [ +	gpg_err_code_from_errno(0); +], [ +	AC_MSG_RESULT(yes) +	CRYPTLIBS="$CRYPTLIBS -lgpg-error" +], [ +AC_MSG_RESULT(no) +]) + +	LIBS="$save_LIBS" + +	echo "ssllib=gnutls" >>couriertls.config +else +	if test "$have_ssl" = "yes" +	then + +		save_LIBS="$LIBS" +		LIBS="-lcrypto $KRBLIBS $LIBS" + +		AC_MSG_CHECKING(for OpenSSL 0.9.7) +		AC_TRY_LINK( [ +#include <openssl/evp.h> +#include <openssl/rand.h> +], +[ +EVP_CIPHER_CTX ctx; +char dummy[1]; +unsigned char a[1], b[1]; + +EVP_CIPHER_CTX_init(&ctx); +EVP_EncryptInit_ex(&ctx, EVP_des_cbc(), NULL, a, b); +RAND_pseudo_bytes(dummy, 1); + +], [ +   CRYPTLIBS="-lcrypto $KRBLIBS" +   AC_MSG_RESULT(yes) +   AC_DEFINE_UNQUOTED(HAVE_OPENSSL097, 1, +				       [ Whether OpenSSL 0.9.7 is installed ]) +], [ +   AC_MSG_RESULT(no) +] +) + +		LIBS="$save_LIBS" + + +		TLSLIBRARY="$LIBCOURIERTLSOPENSSL" +		STARTTLS=couriertls$EXEEXT +		BUILDLIBCOURIERTLS=libcouriertls.la +		echo "ssllib=openssl" >>couriertls.config +	fi +fi +echo "couriertls=$STARTTLS" >>couriertls.config +echo "cryptlibs=\"`echo $CRYPTLIBS`\"" >>couriertls.config + +# Do not built the other SSL library.  ... Except if I'm the maintainer + +if test ! -d "$srcdir/CVS" +then +	if test "$have_ssl" = "yes" +	then +		LIBCOURIERTLSGNUTLS="" +		fi + +	if test "$have_gnutls" = "yes" +	then +		LIBCOURIERTLSOPENSSL="" +	fi +fi + +AC_SUBST(LIBCOURIERTLSOPENSSL) +AC_SUBST(LIBCOURIERTLSGNUTLS) + +AC_SUBST(CRYPTLIBS) +AC_SUBST(STARTTLS) +AC_SUBST(BUILDLIBCOURIERTLS) +AC_SUBST(TLSLIBRARY) + +AM_CONDITIONAL(HAVE_SGML, test -d ${srcdir}/../docbook) +AC_OUTPUT(Makefile) | 
