configure.ac revision 612c4777cca7fa0d18a5cc23d2910f783fda936c
2454dfa32c93c20a8522c6ed42fe057baaac9f9aStephan BoschAC_PREREQ([2.59])
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen# Be sure to update ABI version also if anything changes that might require
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen# recompiling plugins. Most importantly that means if any structs are changed.
bdd36cfdba3ff66d25570a9ff568d69e1eb543cfTimo SirainenAC_INIT([Dovecot],[2.2.beta1],[dovecot@dovecot.org])
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo SirainenAC_DEFINE_UNQUOTED([DOVECOT_ABI_VERSION], "2.2.ABIv0($PACKAGE_VERSION)", [Dovecot ABI version])
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo SirainenAC_CONFIG_SRCDIR([src])
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen
09060303d565e15d54e42b4ef722f9d3c26f5336Timo SirainenAM_INIT_AUTOMAKE([foreign])
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen
9522aa5f33cc37fe8ccd0d647cc51dd3ba6a9b55Timo SirainenAM_MAINTAINER_MODE
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo SirainenPKG_PROG_PKG_CONFIG
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo SirainenACLOCAL_AMFLAGS='-I $(top_srcdir)'
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo SirainenAC_SUBST(ACLOCAL_AMFLAGS)
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen
4fda77c9e9fc68feb292c4dacae1fac49dd08165Timo Sirainendnl TEST_WITH(name, value, [plugin])
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo SirainenAC_DEFUN([TEST_WITH], [
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen want=want_`echo $1|sed s/-/_/g`
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen if test $2 = yes || test $2 = no || test $2 = auto; then
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen eval $want=$2
f158d9a303bb15a6848ca276c9391c7ca52e452bTimo Sirainen elif test $2 = plugin; then
f158d9a303bb15a6848ca276c9391c7ca52e452bTimo Sirainen if test "$3" = plugin; then
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen eval $want=plugin
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen else
11ee3b40320a31669bd717fecbe1e332dad4fd84Timo Sirainen AC_ERROR([--with-$1=plugin not supported])
11ee3b40320a31669bd717fecbe1e332dad4fd84Timo Sirainen fi
11ee3b40320a31669bd717fecbe1e332dad4fd84Timo Sirainen elif `echo $2|grep '^/' >/dev/null`; then
11ee3b40320a31669bd717fecbe1e332dad4fd84Timo Sirainen AC_ERROR([--with-$1=path not supported. You may want to use instead:
11ee3b40320a31669bd717fecbe1e332dad4fd84Timo SirainenCPPFLAGS=-I$2/include LDFLAGS=-L$2/lib ./configure --with-$1])
11ee3b40320a31669bd717fecbe1e332dad4fd84Timo Sirainen else
11ee3b40320a31669bd717fecbe1e332dad4fd84Timo Sirainen AC_ERROR([--with-$1: Unknown value: $2])
b44033e45e9f48f8a6e1ac5905234fec5de6d6ccAki Tuomi fi
11ee3b40320a31669bd717fecbe1e332dad4fd84Timo Sirainen])
11ee3b40320a31669bd717fecbe1e332dad4fd84Timo Sirainen
11ee3b40320a31669bd717fecbe1e332dad4fd84Timo SirainenAC_ARG_ENABLE(devel-checks,
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo SirainenAS_HELP_STRING([--enable-devel-checks], [Enable some extra expensive checks for developers]),
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen if test x$enableval = xyes; then
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen AC_DEFINE(DEBUG,, Build with extra debugging checks)
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen want_devel_checks=yes
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen fi)
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo SirainenAC_ARG_ENABLE(asserts,
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo SirainenAS_HELP_STRING([--enable-asserts], [Enable asserts (default)]),
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen if test x$enableval = xno; then
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen AC_DEFINE(DISABLE_ASSERTS,, Disable asserts)
11ee3b40320a31669bd717fecbe1e332dad4fd84Timo Sirainen fi)
11ee3b40320a31669bd717fecbe1e332dad4fd84Timo Sirainen
0dffa25d211be541ee3c953b23566a1a990789dfTimo SirainenAC_ARG_WITH(shared-libs,
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo SirainenAS_HELP_STRING([--with-shared-libs], [Link binaries using shared Dovecot libraries (default)]),
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen want_shared_libs=$withval,
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen want_shared_libs=yes)
11ee3b40320a31669bd717fecbe1e332dad4fd84Timo SirainenAM_CONDITIONAL(BUILD_SHARED_LIBS, test "$want_shared_libs" = "yes")
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen
11ee3b40320a31669bd717fecbe1e332dad4fd84Timo SirainenAC_ARG_WITH(mem-align,
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo SirainenAS_HELP_STRING([--with-mem-align=BYTES], [Set the memory alignment (default: 8)]),
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen mem_align=$withval,
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen mem_align=8)
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo SirainenAC_ARG_WITH(ioloop,
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo SirainenAS_HELP_STRING([--with-ioloop=IOLOOP], [Specify the I/O loop method to use (epoll, kqueue, poll; best for the fastest available; default is best)]),
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen ioloop=$withval,
cf9d67e4a9bfee31cf3be05244555d51a3d1b9feTimo Sirainen ioloop=best)
09060303d565e15d54e42b4ef722f9d3c26f5336Timo Sirainen
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo SirainenAC_ARG_WITH(notify,
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo SirainenAS_HELP_STRING([--with-notify=NOTIFY], [Specify the file system notification method to use (inotify, kqueue, dnotify, none; default is detected in the above order)]),
093b42b11c1236a687d3da564b26a324e2189ae6Timo Sirainen notify=$withval,
a5ddfd7a8b473f73135b93d5e081e470a87f0f7eTimo Sirainen notify=)
a5ddfd7a8b473f73135b93d5e081e470a87f0f7eTimo Sirainen
09060303d565e15d54e42b4ef722f9d3c26f5336Timo SirainenAC_ARG_WITH(nss,
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo SirainenAS_HELP_STRING([--with-nss], [Build with NSS module support (auto)]),
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen TEST_WITH(nss, $withval),
e2a88d59c0d47d63ce1ad5b1fd95e487124a3fd4Timo Sirainen want_nss=auto)
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo SirainenAC_ARG_WITH(shadow,
8b16d3b00f051401c97568697ccdbba48663759aTimo SirainenAS_HELP_STRING([--with-shadow], [Build with shadow password support (auto)]),
8b16d3b00f051401c97568697ccdbba48663759aTimo Sirainen TEST_WITH(shadow, $withval),
8b16d3b00f051401c97568697ccdbba48663759aTimo Sirainen want_shadow=auto)
8b16d3b00f051401c97568697ccdbba48663759aTimo Sirainen
8b16d3b00f051401c97568697ccdbba48663759aTimo SirainenAC_ARG_WITH(pam,
8b16d3b00f051401c97568697ccdbba48663759aTimo SirainenAS_HELP_STRING([--with-pam], [Build with PAM support (auto)]),
8b16d3b00f051401c97568697ccdbba48663759aTimo Sirainen TEST_WITH(pam, $withval),
8b16d3b00f051401c97568697ccdbba48663759aTimo Sirainen want_pam=auto)
b44033e45e9f48f8a6e1ac5905234fec5de6d6ccAki Tuomi
b44033e45e9f48f8a6e1ac5905234fec5de6d6ccAki TuomiAC_ARG_WITH(bsdauth,
b44033e45e9f48f8a6e1ac5905234fec5de6d6ccAki TuomiAS_HELP_STRING([--with-bsdauth], [Build with BSD authentication support (auto)]),
8b16d3b00f051401c97568697ccdbba48663759aTimo Sirainen TEST_WITH(bsdauth, $withval),
8b16d3b00f051401c97568697ccdbba48663759aTimo Sirainen want_bsdauth=auto)
8b16d3b00f051401c97568697ccdbba48663759aTimo Sirainen
8b16d3b00f051401c97568697ccdbba48663759aTimo SirainenAC_ARG_WITH(gssapi,
8b16d3b00f051401c97568697ccdbba48663759aTimo SirainenAS_HELP_STRING([--with-gssapi=yes|plugin Build with GSSAPI authentication support]),
8b16d3b00f051401c97568697ccdbba48663759aTimo Sirainen TEST_WITH(gssapi, $withval, plugin),
8b16d3b00f051401c97568697ccdbba48663759aTimo Sirainen want_gssapi=no)
8b16d3b00f051401c97568697ccdbba48663759aTimo Sirainen
8b16d3b00f051401c97568697ccdbba48663759aTimo SirainenAC_ARG_WITH(sia,
8b16d3b00f051401c97568697ccdbba48663759aTimo SirainenAS_HELP_STRING([--with-sia], [Build with Tru64 SIA support]),
8b16d3b00f051401c97568697ccdbba48663759aTimo Sirainen TEST_WITH(sia, $withval),
8b16d3b00f051401c97568697ccdbba48663759aTimo Sirainen want_sia=no)
8b16d3b00f051401c97568697ccdbba48663759aTimo Sirainen
8b16d3b00f051401c97568697ccdbba48663759aTimo SirainenAC_ARG_WITH(ldap,
8b16d3b00f051401c97568697ccdbba48663759aTimo SirainenAS_HELP_STRING([--with-ldap=yes|plugin], [Build with LDAP support]),
8b16d3b00f051401c97568697ccdbba48663759aTimo Sirainen TEST_WITH(ldap, $withval, plugin),
8b16d3b00f051401c97568697ccdbba48663759aTimo Sirainen want_ldap=no)
8b16d3b00f051401c97568697ccdbba48663759aTimo Sirainen
8b16d3b00f051401c97568697ccdbba48663759aTimo SirainenAC_ARG_WITH(vpopmail,
8b16d3b00f051401c97568697ccdbba48663759aTimo SirainenAS_HELP_STRING([--with-vpopmail], [Build with vpopmail support (auto)]),
8b16d3b00f051401c97568697ccdbba48663759aTimo Sirainen if test x$withval = xno; then
8b16d3b00f051401c97568697ccdbba48663759aTimo Sirainen want_vpopmail=no
8b16d3b00f051401c97568697ccdbba48663759aTimo Sirainen else
8b16d3b00f051401c97568697ccdbba48663759aTimo Sirainen if test x$withval = xyes || test x$withval = xauto; then
e2a88d59c0d47d63ce1ad5b1fd95e487124a3fd4Timo Sirainen vpopmail_home="`echo ~vpopmail`"
8b16d3b00f051401c97568697ccdbba48663759aTimo Sirainen want_vpopmail=$withval
8b16d3b00f051401c97568697ccdbba48663759aTimo Sirainen else
8b16d3b00f051401c97568697ccdbba48663759aTimo Sirainen vpopmail_home="$withval"
8b16d3b00f051401c97568697ccdbba48663759aTimo Sirainen want_vpopmail=yes
ad404d294fedf792619aed432ed8de5174e9ce7cTimo Sirainen fi
ad404d294fedf792619aed432ed8de5174e9ce7cTimo Sirainen fi, [
ad404d294fedf792619aed432ed8de5174e9ce7cTimo Sirainen want_vpopmail=no
ad404d294fedf792619aed432ed8de5174e9ce7cTimo Sirainen ])
ad404d294fedf792619aed432ed8de5174e9ce7cTimo Sirainen
ad404d294fedf792619aed432ed8de5174e9ce7cTimo Sirainen# Berkeley DB support is more or less broken. Disabled for now.
ad404d294fedf792619aed432ed8de5174e9ce7cTimo Sirainen#AC_ARG_WITH(db,
ad404d294fedf792619aed432ed8de5174e9ce7cTimo Sirainen#AS_HELP_STRING([--with-db], [Build with Berkeley DB support]),
ad404d294fedf792619aed432ed8de5174e9ce7cTimo Sirainen# TEST_WITH(db, $withval),
ad404d294fedf792619aed432ed8de5174e9ce7cTimo Sirainen# want_db=no)
ad404d294fedf792619aed432ed8de5174e9ce7cTimo Sirainenwant_db=no
ad404d294fedf792619aed432ed8de5174e9ce7cTimo Sirainen
ad404d294fedf792619aed432ed8de5174e9ce7cTimo Sirainendnl The --with-sql is useful only if Dovecot is being built with all the SQL
ad404d294fedf792619aed432ed8de5174e9ce7cTimo Sirainendnl drivers as modules. If any SQL driver is built-in, this option is ignored.
ad404d294fedf792619aed432ed8de5174e9ce7cTimo SirainenAC_ARG_WITH(sql,
ad404d294fedf792619aed432ed8de5174e9ce7cTimo SirainenAS_HELP_STRING([--with-sql=yes|plugin], [Build with generic SQL support]),
ad404d294fedf792619aed432ed8de5174e9ce7cTimo Sirainen TEST_WITH(sql, $withval, plugin),
ad404d294fedf792619aed432ed8de5174e9ce7cTimo Sirainen want_sql=no)
ad404d294fedf792619aed432ed8de5174e9ce7cTimo Sirainen
ad404d294fedf792619aed432ed8de5174e9ce7cTimo SirainenAC_ARG_WITH(pgsql,
ad404d294fedf792619aed432ed8de5174e9ce7cTimo SirainenAS_HELP_STRING([--with-pgsql], [Build with PostgreSQL driver support]),
ad404d294fedf792619aed432ed8de5174e9ce7cTimo Sirainen TEST_WITH(pgsql, $withval),
ad404d294fedf792619aed432ed8de5174e9ce7cTimo Sirainen want_pgsql=no)
ad404d294fedf792619aed432ed8de5174e9ce7cTimo Sirainen
ad404d294fedf792619aed432ed8de5174e9ce7cTimo SirainenAC_ARG_WITH(mysql,
ad404d294fedf792619aed432ed8de5174e9ce7cTimo SirainenAS_HELP_STRING([--with-mysql], [Build with MySQL driver support]),
ad404d294fedf792619aed432ed8de5174e9ce7cTimo Sirainen TEST_WITH(mysql, $withval),
ad404d294fedf792619aed432ed8de5174e9ce7cTimo Sirainen want_mysql=no)
ad404d294fedf792619aed432ed8de5174e9ce7cTimo Sirainen
ad404d294fedf792619aed432ed8de5174e9ce7cTimo SirainenAC_ARG_WITH(sqlite,
ad404d294fedf792619aed432ed8de5174e9ce7cTimo SirainenAS_HELP_STRING([--with-sqlite], [Build with SQLite3 driver support]),
ad404d294fedf792619aed432ed8de5174e9ce7cTimo Sirainen TEST_WITH(sqlite, $withval),
ad404d294fedf792619aed432ed8de5174e9ce7cTimo Sirainen want_sqlite=no)
ad404d294fedf792619aed432ed8de5174e9ce7cTimo Sirainen
ad404d294fedf792619aed432ed8de5174e9ce7cTimo SirainenAC_ARG_WITH(lucene,
ad404d294fedf792619aed432ed8de5174e9ce7cTimo SirainenAS_HELP_STRING([--with-lucene], [Build with CLucene full text search support]),
ad404d294fedf792619aed432ed8de5174e9ce7cTimo Sirainen TEST_WITH(lucene, $withval),
ad404d294fedf792619aed432ed8de5174e9ce7cTimo Sirainen want_lucene=no)
ad404d294fedf792619aed432ed8de5174e9ce7cTimo SirainenAM_CONDITIONAL(BUILD_LUCENE, test "$want_lucene" = "yes")
ad404d294fedf792619aed432ed8de5174e9ce7cTimo Sirainen
ad404d294fedf792619aed432ed8de5174e9ce7cTimo SirainenAC_ARG_WITH(stemmer,
ad404d294fedf792619aed432ed8de5174e9ce7cTimo SirainenAS_HELP_STRING([--with-stemmer], [Build with libstemmer support (for CLucene)]),
ad404d294fedf792619aed432ed8de5174e9ce7cTimo Sirainen TEST_WITH(stemmer, $withval),
ad404d294fedf792619aed432ed8de5174e9ce7cTimo Sirainen want_stemmer=auto)
ad404d294fedf792619aed432ed8de5174e9ce7cTimo Sirainen
ad404d294fedf792619aed432ed8de5174e9ce7cTimo SirainenAC_ARG_WITH(solr,
ad404d294fedf792619aed432ed8de5174e9ce7cTimo SirainenAS_HELP_STRING([--with-solr], [Build with Solr full text search support]),
ad404d294fedf792619aed432ed8de5174e9ce7cTimo Sirainen TEST_WITH(solr, $withval),
ad404d294fedf792619aed432ed8de5174e9ce7cTimo Sirainen want_solr=no)
ad404d294fedf792619aed432ed8de5174e9ce7cTimo Sirainen
ad404d294fedf792619aed432ed8de5174e9ce7cTimo SirainenAC_ARG_WITH(zlib,
ad404d294fedf792619aed432ed8de5174e9ce7cTimo SirainenAS_HELP_STRING([--with-zlib], [Build with zlib compression support]),
ad404d294fedf792619aed432ed8de5174e9ce7cTimo Sirainen TEST_WITH(zlib, $withval),
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen want_zlib=auto)
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen
4fda77c9e9fc68feb292c4dacae1fac49dd08165Timo SirainenAC_ARG_WITH(bzlib,
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo SirainenAS_HELP_STRING([--with-bzlib], [Build with bzlib compression support]),
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen TEST_WITH(bzlib, $withval),
4fda77c9e9fc68feb292c4dacae1fac49dd08165Timo Sirainen want_bzlib=auto)
4fda77c9e9fc68feb292c4dacae1fac49dd08165Timo Sirainen
8c2b4a45f17a5cb13bb01058ca37798cf48d91baTimo SirainenAC_ARG_WITH(libcap,
4fda77c9e9fc68feb292c4dacae1fac49dd08165Timo SirainenAS_HELP_STRING([--with-libcap], [Build with libcap support (Dropping capabilities).]),
4fda77c9e9fc68feb292c4dacae1fac49dd08165Timo Sirainen TEST_WITH(libcap, $withval),
4fda77c9e9fc68feb292c4dacae1fac49dd08165Timo Sirainen want_libcap=auto)
4fda77c9e9fc68feb292c4dacae1fac49dd08165Timo Sirainen
4fda77c9e9fc68feb292c4dacae1fac49dd08165Timo SirainenAC_ARG_WITH(libwrap,
4fda77c9e9fc68feb292c4dacae1fac49dd08165Timo SirainenAS_HELP_STRING([--with-libwrap], [Build with libwrap, ie. TCP-wrappers]),
4fda77c9e9fc68feb292c4dacae1fac49dd08165Timo Sirainen TEST_WITH(libwrap, $withval),
4fda77c9e9fc68feb292c4dacae1fac49dd08165Timo Sirainen want_libwrap=no)
4fda77c9e9fc68feb292c4dacae1fac49dd08165Timo Sirainen
e4194f4703eeec32b432371ae30fc8f25ab720d8Timo SirainenAC_ARG_WITH(ssl,
e4194f4703eeec32b432371ae30fc8f25ab720d8Timo SirainenAS_HELP_STRING([--with-ssl=gnutls|openssl], [Build with GNUTLS or OpenSSL (default)]),
e4194f4703eeec32b432371ae30fc8f25ab720d8Timo Sirainen if test x$withval = xno; then
4fda77c9e9fc68feb292c4dacae1fac49dd08165Timo Sirainen want_gnutls=no
4fda77c9e9fc68feb292c4dacae1fac49dd08165Timo Sirainen want_openssl=no
4fda77c9e9fc68feb292c4dacae1fac49dd08165Timo Sirainen elif test x$withval = xgnutls; then
4fda77c9e9fc68feb292c4dacae1fac49dd08165Timo Sirainen AC_ERROR([GNUTLS support is broken currently])
4fda77c9e9fc68feb292c4dacae1fac49dd08165Timo Sirainen want_gnutls=yes
4fda77c9e9fc68feb292c4dacae1fac49dd08165Timo Sirainen want_openssl=no
4fda77c9e9fc68feb292c4dacae1fac49dd08165Timo Sirainen elif test x$withval = xopenssl; then
8c2b4a45f17a5cb13bb01058ca37798cf48d91baTimo Sirainen want_gnutls=no
8c2b4a45f17a5cb13bb01058ca37798cf48d91baTimo Sirainen want_openssl=yes
8c2b4a45f17a5cb13bb01058ca37798cf48d91baTimo Sirainen elif test x$withval = xyes; then
ad404d294fedf792619aed432ed8de5174e9ce7cTimo Sirainen want_gnutls=no
4fda77c9e9fc68feb292c4dacae1fac49dd08165Timo Sirainen want_openssl=yes
8c2b4a45f17a5cb13bb01058ca37798cf48d91baTimo Sirainen else
ad404d294fedf792619aed432ed8de5174e9ce7cTimo Sirainen AC_ERROR([--with-ssl: Invalid value: $withval])
ad404d294fedf792619aed432ed8de5174e9ce7cTimo Sirainen fi, [
ad404d294fedf792619aed432ed8de5174e9ce7cTimo Sirainen want_gnutls=no
ad404d294fedf792619aed432ed8de5174e9ce7cTimo Sirainen want_openssl=auto
ad404d294fedf792619aed432ed8de5174e9ce7cTimo Sirainen ])
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo SirainenAC_ARG_WITH(ssldir,
e2a88d59c0d47d63ce1ad5b1fd95e487124a3fd4Timo SirainenAS_HELP_STRING([--with-ssldir=DIR], [SSL base directory for certificates (/etc/ssl)]),
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen ssldir="$withval",
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen ssldir=/etc/ssl
3c3001681da75afc68578a180ec8f8b2d6dfacfaTimo Sirainen)
892e25e1c0caad62ced087d9eba2741a59e3d9ceTimo SirainenAC_SUBST(ssldir)
892e25e1c0caad62ced087d9eba2741a59e3d9ceTimo Sirainen
e4194f4703eeec32b432371ae30fc8f25ab720d8Timo SirainenAC_ARG_WITH(rundir,
e4194f4703eeec32b432371ae30fc8f25ab720d8Timo SirainenAS_HELP_STRING([--with-rundir=DIR], [Runtime data directory (LOCALSTATEDIR/run/dovecot)]),
e4194f4703eeec32b432371ae30fc8f25ab720d8Timo Sirainen rundir="$withval",
009217abb57a24a4076092e8e4e165545747839eStephan Bosch rundir=$localstatedir/run/$PACKAGE
e4194f4703eeec32b432371ae30fc8f25ab720d8Timo Sirainen)
e4194f4703eeec32b432371ae30fc8f25ab720d8Timo SirainenAC_SUBST(rundir)
49ec317299dedfbc27be79ab97d5b7a8ba7a4eacTimo Sirainen
009217abb57a24a4076092e8e4e165545747839eStephan BoschAC_ARG_WITH(statedir,
e4194f4703eeec32b432371ae30fc8f25ab720d8Timo SirainenAS_HELP_STRING([--with-statedir=DIR], [Permanent data directory (LOCALSTATEDIR/lib/dovecot)]),
3c3001681da75afc68578a180ec8f8b2d6dfacfaTimo Sirainen statedir="$withval",
e4194f4703eeec32b432371ae30fc8f25ab720d8Timo Sirainen statedir=$localstatedir/lib/$PACKAGE
e4194f4703eeec32b432371ae30fc8f25ab720d8Timo Sirainen)
e4194f4703eeec32b432371ae30fc8f25ab720d8Timo SirainenAC_SUBST(statedir)
e4194f4703eeec32b432371ae30fc8f25ab720d8Timo Sirainen
e4194f4703eeec32b432371ae30fc8f25ab720d8Timo SirainenAC_ARG_WITH([systemdsystemunitdir],
e4194f4703eeec32b432371ae30fc8f25ab720d8Timo SirainenAS_HELP_STRING([--with-systemdsystemunitdir=DIR], [Directory for systemd service files (auto=detect)]), [
e2a88d59c0d47d63ce1ad5b1fd95e487124a3fd4Timo Sirainen if test "$withval" = "auto"; then
3c3001681da75afc68578a180ec8f8b2d6dfacfaTimo Sirainen systemdsystemunitdir=`$PKG_CONFIG --variable=systemdsystemunitdir systemd`
e4194f4703eeec32b432371ae30fc8f25ab720d8Timo Sirainen elif test "$withval" != "no"; then
e4194f4703eeec32b432371ae30fc8f25ab720d8Timo Sirainen systemdsystemunitdir=$withval
3c3001681da75afc68578a180ec8f8b2d6dfacfaTimo Sirainen fi
892e25e1c0caad62ced087d9eba2741a59e3d9ceTimo Sirainen], [])
892e25e1c0caad62ced087d9eba2741a59e3d9ceTimo Sirainenif test "$systemdsystemunitdir" != ""; then
e4194f4703eeec32b432371ae30fc8f25ab720d8Timo Sirainen AC_SUBST(systemdsystemunitdir)
e4194f4703eeec32b432371ae30fc8f25ab720d8Timo Sirainen AC_DEFINE(HAVE_SYSTEMD,, Define if you want to use systemd socket activation)
e4194f4703eeec32b432371ae30fc8f25ab720d8Timo Sirainenfi
009217abb57a24a4076092e8e4e165545747839eStephan BoschAM_CONDITIONAL(HAVE_SYSTEMD, test "$systemdsystemunitdir" != "")
e4194f4703eeec32b432371ae30fc8f25ab720d8Timo Sirainen
e4194f4703eeec32b432371ae30fc8f25ab720d8Timo SirainenAC_ARG_WITH(gc,
49ec317299dedfbc27be79ab97d5b7a8ba7a4eacTimo SirainenAS_HELP_STRING([--with-gc], [Use Boehm garbage collector]),
009217abb57a24a4076092e8e4e165545747839eStephan Bosch TEST_WITH(gc, $withval),
e4194f4703eeec32b432371ae30fc8f25ab720d8Timo Sirainen want_gc=no)
3c3001681da75afc68578a180ec8f8b2d6dfacfaTimo Sirainen
e4194f4703eeec32b432371ae30fc8f25ab720d8Timo SirainenAC_ARG_WITH(storages,
e4194f4703eeec32b432371ae30fc8f25ab720d8Timo SirainenAS_HELP_STRING([--with-storages], [Build with specified mail storage formats (mdbox sdbox maildir mbox cydir imapc pop3c)]), [
e4194f4703eeec32b432371ae30fc8f25ab720d8Timo Sirainen if test "$withval" = "yes" || test "$withval" = "no"; then
e4194f4703eeec32b432371ae30fc8f25ab720d8Timo Sirainen AC_MSG_ERROR([--with-storages needs storage list as parameter])
e4194f4703eeec32b432371ae30fc8f25ab720d8Timo Sirainen fi
e4194f4703eeec32b432371ae30fc8f25ab720d8Timo Sirainen mail_storages="shared `echo "$withval"|sed 's/,/ /g'`" ],
e2a88d59c0d47d63ce1ad5b1fd95e487124a3fd4Timo Sirainen mail_storages="shared mdbox sdbox maildir mbox cydir imapc pop3c")
e4194f4703eeec32b432371ae30fc8f25ab720d8Timo SirainenAC_SUBST(mail_storages)
e4194f4703eeec32b432371ae30fc8f25ab720d8Timo Sirainenmail_storages="$mail_storages raw fail"
e2a88d59c0d47d63ce1ad5b1fd95e487124a3fd4Timo Sirainen# drop duplicates
e4194f4703eeec32b432371ae30fc8f25ab720d8Timo Sirainenduplicates=`(for i in $mail_storages; do echo $i; done)|sort|uniq -d|xargs echo`
3c3001681da75afc68578a180ec8f8b2d6dfacfaTimo Sirainenif test "$duplicates" != ""; then
e4194f4703eeec32b432371ae30fc8f25ab720d8Timo Sirainen AC_ERROR([Duplicate --with-storages: $duplicates])
e4194f4703eeec32b432371ae30fc8f25ab720d8Timo Sirainenfi
3c3001681da75afc68578a180ec8f8b2d6dfacfaTimo Sirainen
892e25e1c0caad62ced087d9eba2741a59e3d9ceTimo SirainenDC_DOVECOT_MODULEDIR
892e25e1c0caad62ced087d9eba2741a59e3d9ceTimo Sirainen
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo SirainenAC_ARG_WITH(docs,
cf9d67e4a9bfee31cf3be05244555d51a3d1b9feTimo SirainenAS_HELP_STRING([--with-docs], [Install documentation (default)]),
892e25e1c0caad62ced087d9eba2741a59e3d9ceTimo Sirainen if test x$withval = xno; then
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen want_docs=no
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen else
8ae72ad7d0c69e972cfa65d1e2ce4e3e9a8b765cTimo Sirainen want_docs=yes
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen fi,
09060303d565e15d54e42b4ef722f9d3c26f5336Timo Sirainen want_docs=yes)
09060303d565e15d54e42b4ef722f9d3c26f5336Timo SirainenAM_CONDITIONAL(BUILD_DOCS, test "$want_docs" = "yes")
09060303d565e15d54e42b4ef722f9d3c26f5336Timo Sirainen
09060303d565e15d54e42b4ef722f9d3c26f5336Timo Sirainendnl always enable all of the passbs and userdbs that don't require extra libs
09060303d565e15d54e42b4ef722f9d3c26f5336Timo Sirainenwant_passwd=yes
09060303d565e15d54e42b4ef722f9d3c26f5336Timo Sirainenwant_passwd_file=yes
09060303d565e15d54e42b4ef722f9d3c26f5336Timo Sirainenwant_checkpassword=yes
09060303d565e15d54e42b4ef722f9d3c26f5336Timo Sirainenwant_prefetch_userdb=yes
09060303d565e15d54e42b4ef722f9d3c26f5336Timo Sirainen
a4502a71879d6018bd2c64f13614bb619911dd9fTimo SirainenAC_ISC_POSIX
a4502a71879d6018bd2c64f13614bb619911dd9fTimo SirainenAC_PROG_CC
892e25e1c0caad62ced087d9eba2741a59e3d9ceTimo SirainenAC_PROG_CPP
892e25e1c0caad62ced087d9eba2741a59e3d9ceTimo SirainenAC_PROG_CXX # lucene plugin needs this
3c3001681da75afc68578a180ec8f8b2d6dfacfaTimo SirainenAC_HEADER_STDC
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo SirainenAC_C_INLINE
8ae72ad7d0c69e972cfa65d1e2ce4e3e9a8b765cTimo SirainenAC_PROG_LIBTOOL
e2a88d59c0d47d63ce1ad5b1fd95e487124a3fd4Timo SirainenAM_ICONV
3c3001681da75afc68578a180ec8f8b2d6dfacfaTimo Sirainen
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo SirainenAC_DEFINE_UNQUOTED(DOVECOT_NAME, "$PACKAGE_NAME", Dovecot name)
cf9d67e4a9bfee31cf3be05244555d51a3d1b9feTimo SirainenAC_DEFINE_UNQUOTED(DOVECOT_STRING, "$PACKAGE_STRING", Dovecot string)
a4502a71879d6018bd2c64f13614bb619911dd9fTimo SirainenAC_DEFINE_UNQUOTED(DOVECOT_VERSION, "$PACKAGE_VERSION", Dovecot version)
a4502a71879d6018bd2c64f13614bb619911dd9fTimo Sirainen
a4502a71879d6018bd2c64f13614bb619911dd9fTimo SirainenAC_CHECK_HEADERS(strings.h stdint.h unistd.h dirent.h malloc.h inttypes.h \
3c3001681da75afc68578a180ec8f8b2d6dfacfaTimo Sirainen sys/uio.h sys/sysmacros.h sys/resource.h sys/select.h libgen.h \
a4502a71879d6018bd2c64f13614bb619911dd9fTimo Sirainen sys/quota.h sys/fs/ufs_quota.h ufs/ufs/quota.h jfs/quota.h sys/fs/quota_common.h \
09060303d565e15d54e42b4ef722f9d3c26f5336Timo Sirainen mntent.h sys/mnttab.h sys/event.h sys/time.h sys/mkdev.h linux/dqblk_xfs.h \
9058f3006fffd25835ad701e1b2c3c8faafd3c80Timo Sirainen xfs/xqm.h execinfo.h ucontext.h malloc_np.h sys/utsname.h sys/vmount.h \
9058f3006fffd25835ad701e1b2c3c8faafd3c80Timo Sirainen sys/utsname.h glob.h linux/falloc.h ucred.h sys/ucred.h)
3c3001681da75afc68578a180ec8f8b2d6dfacfaTimo Sirainen
28789c7ce1aa66ab21798bfb73ec64308b9a4de8Timo Sirainendnl * clang check
28789c7ce1aa66ab21798bfb73ec64308b9a4de8Timo Sirainenhave_clang=no
28789c7ce1aa66ab21798bfb73ec64308b9a4de8Timo Sirainenif $CC -dM -E -x c /dev/null | grep __clang__ > /dev/null 2>&1; then
3c3001681da75afc68578a180ec8f8b2d6dfacfaTimo Sirainen have_clang=yes
a4502a71879d6018bd2c64f13614bb619911dd9fTimo Sirainenfi
8ae72ad7d0c69e972cfa65d1e2ce4e3e9a8b765cTimo Sirainen
87842f621233257b7a7945d994ba931508b34877Timo Sirainendnl * gcc specific options
a4502a71879d6018bd2c64f13614bb619911dd9fTimo Sirainenif test "x$ac_cv_c_compiler_gnu" = "xyes"; then
09060303d565e15d54e42b4ef722f9d3c26f5336Timo Sirainen # -Wcast-qual -Wcast-align -Wconversion -Wunreachable-code # too many warnings
09060303d565e15d54e42b4ef722f9d3c26f5336Timo Sirainen # -Wstrict-prototypes -Wredundant-decls # may give warnings in some systems
0a53eb0283d7ec28c6105f61e118b96fce8ecb95Timo Sirainen # -Wmissing-format-attribute -Wmissing-noreturn -Wwrite-strings # a couple of warnings
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen CFLAGS="$CFLAGS -Wall -W -Wmissing-prototypes -Wmissing-declarations -Wpointer-arith -Wchar-subscripts -Wformat=2 -Wbad-function-cast"
e2a88d59c0d47d63ce1ad5b1fd95e487124a3fd4Timo Sirainen
3c3001681da75afc68578a180ec8f8b2d6dfacfaTimo Sirainen if test "$have_clang" != "yes"; then
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen # This is simply to avoid warning when building strftime() wrappers..
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen CFLAGS="$CFLAGS -fno-builtin-strftime"
3c3001681da75afc68578a180ec8f8b2d6dfacfaTimo Sirainen fi
892e25e1c0caad62ced087d9eba2741a59e3d9ceTimo Sirainen
a4502a71879d6018bd2c64f13614bb619911dd9fTimo Sirainen AC_TRY_COMPILE([
892e25e1c0caad62ced087d9eba2741a59e3d9ceTimo Sirainen #if __GNUC__ < 4
a4502a71879d6018bd2c64f13614bb619911dd9fTimo Sirainen # error old gcc
a4502a71879d6018bd2c64f13614bb619911dd9fTimo Sirainen #endif
3c3001681da75afc68578a180ec8f8b2d6dfacfaTimo Sirainen ],,[
892e25e1c0caad62ced087d9eba2741a59e3d9ceTimo Sirainen # gcc4
a4502a71879d6018bd2c64f13614bb619911dd9fTimo Sirainen CFLAGS="$CFLAGS -Wstrict-aliasing=2"
892e25e1c0caad62ced087d9eba2741a59e3d9ceTimo Sirainen ])
a4502a71879d6018bd2c64f13614bb619911dd9fTimo Sirainen
a4502a71879d6018bd2c64f13614bb619911dd9fTimo Sirainen # Use std=gnu99 if we have new enough gcc
3c3001681da75afc68578a180ec8f8b2d6dfacfaTimo Sirainen old_cflags=$CFLAGS
a5ddfd7a8b473f73135b93d5e081e470a87f0f7eTimo Sirainen CFLAGS="-std=gnu99"
892e25e1c0caad62ced087d9eba2741a59e3d9ceTimo Sirainen AC_TRY_COMPILE([
a5ddfd7a8b473f73135b93d5e081e470a87f0f7eTimo Sirainen ],, [
a5ddfd7a8b473f73135b93d5e081e470a87f0f7eTimo Sirainen CFLAGS="$CFLAGS $old_cflags"
a5ddfd7a8b473f73135b93d5e081e470a87f0f7eTimo Sirainen ], [
a5ddfd7a8b473f73135b93d5e081e470a87f0f7eTimo Sirainen CFLAGS="$old_cflags"
892e25e1c0caad62ced087d9eba2741a59e3d9ceTimo Sirainen ])
a5ddfd7a8b473f73135b93d5e081e470a87f0f7eTimo Sirainenfi
892e25e1c0caad62ced087d9eba2741a59e3d9ceTimo Sirainenif test "$have_clang" = "yes"; then
892e25e1c0caad62ced087d9eba2741a59e3d9ceTimo Sirainen # clang specific options
3c3001681da75afc68578a180ec8f8b2d6dfacfaTimo Sirainen if test "$want_devel_checks" = "yes"; then
a5ddfd7a8b473f73135b93d5e081e470a87f0f7eTimo Sirainen CFLAGS="$CFLAGS -fcatch-undefined-behavior -ftrapv"
a5ddfd7a8b473f73135b93d5e081e470a87f0f7eTimo Sirainen fi
a5ddfd7a8b473f73135b93d5e081e470a87f0f7eTimo Sirainenfi
a5ddfd7a8b473f73135b93d5e081e470a87f0f7eTimo Sirainen
3c3001681da75afc68578a180ec8f8b2d6dfacfaTimo Sirainendnl **
a5ddfd7a8b473f73135b93d5e081e470a87f0f7eTimo Sirainendnl ** just some generic stuff...
28789c7ce1aa66ab21798bfb73ec64308b9a4de8Timo Sirainendnl **
28789c7ce1aa66ab21798bfb73ec64308b9a4de8Timo Sirainen
28789c7ce1aa66ab21798bfb73ec64308b9a4de8Timo SirainenAC_SEARCH_LIBS(socket, socket)
28789c7ce1aa66ab21798bfb73ec64308b9a4de8Timo SirainenAC_SEARCH_LIBS(inet_addr, nsl)
28789c7ce1aa66ab21798bfb73ec64308b9a4de8Timo SirainenAC_SEARCH_LIBS(fdatasync, rt, [
3c3001681da75afc68578a180ec8f8b2d6dfacfaTimo Sirainen AC_DEFINE(HAVE_FDATASYNC,, Define if you have fdatasync())
28789c7ce1aa66ab21798bfb73ec64308b9a4de8Timo Sirainen])
87842f621233257b7a7945d994ba931508b34877Timo Sirainen
a5ddfd7a8b473f73135b93d5e081e470a87f0f7eTimo Sirainenif test $want_libcap != no; then
a5ddfd7a8b473f73135b93d5e081e470a87f0f7eTimo Sirainen AC_CHECK_LIB(cap, cap_init, [
a5ddfd7a8b473f73135b93d5e081e470a87f0f7eTimo Sirainen AC_DEFINE(HAVE_LIBCAP,, libcap is installed for cap_init())
a5ddfd7a8b473f73135b93d5e081e470a87f0f7eTimo Sirainen LIBCAP="-lcap"
3c3001681da75afc68578a180ec8f8b2d6dfacfaTimo Sirainen AC_SUBST(LIBCAP)
a5ddfd7a8b473f73135b93d5e081e470a87f0f7eTimo Sirainen ], [
a5ddfd7a8b473f73135b93d5e081e470a87f0f7eTimo Sirainen if test "$want_libcap" = "yes"; then
3c3001681da75afc68578a180ec8f8b2d6dfacfaTimo Sirainen AC_ERROR([Can't build with libcap support: libcap not found])
892e25e1c0caad62ced087d9eba2741a59e3d9ceTimo Sirainen fi
892e25e1c0caad62ced087d9eba2741a59e3d9ceTimo Sirainen ])
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainenfi
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainenhave_libwrap=no
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainenif test $want_libwrap != no; then
892e25e1c0caad62ced087d9eba2741a59e3d9ceTimo Sirainen AC_CHECK_HEADER(tcpd.h, [
5e9bb72de1209cd39fdf3e95bdb26e047cc5594eTimo Sirainen old_LIBS=$LIBS
3c3001681da75afc68578a180ec8f8b2d6dfacfaTimo Sirainen
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen AC_CACHE_CHECK([whether we have libwrap],i_cv_have_libwrap,[
cf9d67e4a9bfee31cf3be05244555d51a3d1b9feTimo Sirainen AC_TRY_COMPILE([
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen #include <tcpd.h>
e2a88d59c0d47d63ce1ad5b1fd95e487124a3fd4Timo Sirainen int allow_severity = 0;
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen int deny_severity = 0;
0a53eb0283d7ec28c6105f61e118b96fce8ecb95Timo Sirainen ], [
0a53eb0283d7ec28c6105f61e118b96fce8ecb95Timo Sirainen request_init((void *)0);
e2a88d59c0d47d63ce1ad5b1fd95e487124a3fd4Timo Sirainen ], [
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen i_cv_have_libwrap=yes
3c3001681da75afc68578a180ec8f8b2d6dfacfaTimo Sirainen ], [
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen i_cv_have_libwrap=no
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen ])
5e9bb72de1209cd39fdf3e95bdb26e047cc5594eTimo Sirainen ])
5e9bb72de1209cd39fdf3e95bdb26e047cc5594eTimo Sirainen if test $i_cv_have_libwrap = yes; then
5e9bb72de1209cd39fdf3e95bdb26e047cc5594eTimo Sirainen AC_DEFINE(HAVE_LIBWRAP,, Define if you have libwrap)
5e9bb72de1209cd39fdf3e95bdb26e047cc5594eTimo Sirainen LIBWRAP_LIBS=-lwrap
9ffd3c8ca82bd2af8ca4f7e167339820ddcf1fe3Timo Sirainen AC_SUBST(LIBWRAP_LIBS)
5e9bb72de1209cd39fdf3e95bdb26e047cc5594eTimo Sirainen have_libwrap=yes
0a53eb0283d7ec28c6105f61e118b96fce8ecb95Timo Sirainen else
9ffd3c8ca82bd2af8ca4f7e167339820ddcf1fe3Timo Sirainen if test "$want_libwrap" = "yes"; then
0a53eb0283d7ec28c6105f61e118b96fce8ecb95Timo Sirainen AC_ERROR([Can't build with libwrap support: libwrap not found])
0a53eb0283d7ec28c6105f61e118b96fce8ecb95Timo Sirainen fi
0a53eb0283d7ec28c6105f61e118b96fce8ecb95Timo Sirainen fi
9ffd3c8ca82bd2af8ca4f7e167339820ddcf1fe3Timo Sirainen LIBS=$old_LIBS
9ffd3c8ca82bd2af8ca4f7e167339820ddcf1fe3Timo Sirainen ], [
9ffd3c8ca82bd2af8ca4f7e167339820ddcf1fe3Timo Sirainen if test "$want_libwrap" = "yes"; then
e2a88d59c0d47d63ce1ad5b1fd95e487124a3fd4Timo Sirainen AC_ERROR([Can't build with libwrap support: tcpd.h not found])
5e9bb72de1209cd39fdf3e95bdb26e047cc5594eTimo Sirainen fi
5e9bb72de1209cd39fdf3e95bdb26e047cc5594eTimo Sirainen ])
3c3001681da75afc68578a180ec8f8b2d6dfacfaTimo Sirainenfi
892e25e1c0caad62ced087d9eba2741a59e3d9ceTimo SirainenAM_CONDITIONAL(TCPWRAPPERS, test "$have_libwrap" = "yes")
5e9bb72de1209cd39fdf3e95bdb26e047cc5594eTimo Sirainen
5e9bb72de1209cd39fdf3e95bdb26e047cc5594eTimo SirainenAC_DEFINE(PACKAGE_WEBPAGE, "http://www.dovecot.org/", Support URL)
5e9bb72de1209cd39fdf3e95bdb26e047cc5594eTimo Sirainen
5e9bb72de1209cd39fdf3e95bdb26e047cc5594eTimo Sirainendnl * after -lsocket and -lnsl tests, inet_aton() may be in them
892e25e1c0caad62ced087d9eba2741a59e3d9ceTimo SirainenAC_CHECK_FUNCS(fcntl flock lockf inet_aton sigaction getpagesize madvise \
5e9bb72de1209cd39fdf3e95bdb26e047cc5594eTimo Sirainen strcasecmp stricmp vsyslog writev pread uname unsetenv \
3c3001681da75afc68578a180ec8f8b2d6dfacfaTimo Sirainen setrlimit setproctitle seteuid setreuid setegid setresgid \
5e9bb72de1209cd39fdf3e95bdb26e047cc5594eTimo Sirainen strtoull strtoll strtouq strtoq getmntinfo \
5e9bb72de1209cd39fdf3e95bdb26e047cc5594eTimo Sirainen setpriority quotactl getmntent kqueue kevent backtrace_symbols \
892e25e1c0caad62ced087d9eba2741a59e3d9ceTimo Sirainen walkcontext dirfd clearenv malloc_usable_size glob fallocate \
5e9bb72de1209cd39fdf3e95bdb26e047cc5594eTimo Sirainen posix_fadvise getpeereid getpeerucred)
3c3001681da75afc68578a180ec8f8b2d6dfacfaTimo Sirainen
5e9bb72de1209cd39fdf3e95bdb26e047cc5594eTimo SirainenAC_CHECK_TYPES([struct sockpeercred])
5e9bb72de1209cd39fdf3e95bdb26e047cc5594eTimo Sirainen
5e9bb72de1209cd39fdf3e95bdb26e047cc5594eTimo SirainenAC_SEARCH_LIBS(clock_gettime, rt, [
e2a88d59c0d47d63ce1ad5b1fd95e487124a3fd4Timo Sirainen AC_DEFINE(HAVE_CLOCK_GETTIME,, Define if you have the clock_gettime function)
5e9bb72de1209cd39fdf3e95bdb26e047cc5594eTimo Sirainen])
0a53eb0283d7ec28c6105f61e118b96fce8ecb95Timo Sirainen
0a53eb0283d7ec28c6105f61e118b96fce8ecb95Timo Sirainendnl strtoimax and strtoumax are macros in HP-UX, so inttypes.h must be included
e2a88d59c0d47d63ce1ad5b1fd95e487124a3fd4Timo Sirainendnl Link instead of just compiling since there's something wrong with Tru64
5e9bb72de1209cd39fdf3e95bdb26e047cc5594eTimo SirainenAC_CACHE_CHECK([for strtoimax],i_cv_have_strtoimax,[
3c3001681da75afc68578a180ec8f8b2d6dfacfaTimo Sirainen AC_TRY_LINK([
5e9bb72de1209cd39fdf3e95bdb26e047cc5594eTimo Sirainen #include <inttypes.h>
5e9bb72de1209cd39fdf3e95bdb26e047cc5594eTimo Sirainen ], [
11ee3b40320a31669bd717fecbe1e332dad4fd84Timo Sirainen strtoimax(0, 0, 0);
11ee3b40320a31669bd717fecbe1e332dad4fd84Timo Sirainen ], [
11ee3b40320a31669bd717fecbe1e332dad4fd84Timo Sirainen i_cv_have_strtoimax=yes
11ee3b40320a31669bd717fecbe1e332dad4fd84Timo Sirainen ], [
11ee3b40320a31669bd717fecbe1e332dad4fd84Timo Sirainen i_cv_have_strtoimax=no
b44033e45e9f48f8a6e1ac5905234fec5de6d6ccAki Tuomi ])
11ee3b40320a31669bd717fecbe1e332dad4fd84Timo Sirainen])
11ee3b40320a31669bd717fecbe1e332dad4fd84Timo Sirainenif test $i_cv_have_strtoimax = yes; then
11ee3b40320a31669bd717fecbe1e332dad4fd84Timo Sirainen AC_DEFINE(HAVE_STRTOIMAX,, Define if you have strtoimax function)
11ee3b40320a31669bd717fecbe1e332dad4fd84Timo Sirainenfi
11ee3b40320a31669bd717fecbe1e332dad4fd84Timo Sirainen
11ee3b40320a31669bd717fecbe1e332dad4fd84Timo SirainenAC_CACHE_CHECK([for strtoumax],i_cv_have_strtoumax,[
11ee3b40320a31669bd717fecbe1e332dad4fd84Timo Sirainen AC_TRY_LINK([
7bccaece91a0b1bc61111c30443d6bad6b22c6d0Timo Sirainen #include <inttypes.h>
7bccaece91a0b1bc61111c30443d6bad6b22c6d0Timo Sirainen ], [
11ee3b40320a31669bd717fecbe1e332dad4fd84Timo Sirainen strtoumax(0, 0, 0);
7bccaece91a0b1bc61111c30443d6bad6b22c6d0Timo Sirainen ], [
7bccaece91a0b1bc61111c30443d6bad6b22c6d0Timo Sirainen i_cv_have_strtoumax=yes
7bccaece91a0b1bc61111c30443d6bad6b22c6d0Timo Sirainen ], [
11ee3b40320a31669bd717fecbe1e332dad4fd84Timo Sirainen i_cv_have_strtoumax=no
11ee3b40320a31669bd717fecbe1e332dad4fd84Timo Sirainen ])
11ee3b40320a31669bd717fecbe1e332dad4fd84Timo Sirainen])
7bccaece91a0b1bc61111c30443d6bad6b22c6d0Timo Sirainenif test $i_cv_have_strtoumax = yes; then
7bccaece91a0b1bc61111c30443d6bad6b22c6d0Timo Sirainen AC_DEFINE(HAVE_STRTOUMAX,, Define if you have strtoumax function)
7bccaece91a0b1bc61111c30443d6bad6b22c6d0Timo Sirainenfi
11ee3b40320a31669bd717fecbe1e332dad4fd84Timo Sirainen
1f7f4294207557edf83171642ef62ce4922ffc9dTimo Sirainendnl * I/O loop function
b44033e45e9f48f8a6e1ac5905234fec5de6d6ccAki Tuomihave_ioloop=no
b44033e45e9f48f8a6e1ac5905234fec5de6d6ccAki Tuomi
7bccaece91a0b1bc61111c30443d6bad6b22c6d0Timo Sirainenif test "$ioloop" = "best" || test "$ioloop" = "epoll"; then
7bccaece91a0b1bc61111c30443d6bad6b22c6d0Timo Sirainen AC_CACHE_CHECK([whether we can use epoll],i_cv_epoll_works,[
7bccaece91a0b1bc61111c30443d6bad6b22c6d0Timo Sirainen AC_TRY_RUN([
093b42b11c1236a687d3da564b26a324e2189ae6Timo Sirainen #include <sys/epoll.h>
093b42b11c1236a687d3da564b26a324e2189ae6Timo Sirainen
7bccaece91a0b1bc61111c30443d6bad6b22c6d0Timo Sirainen int main()
11ee3b40320a31669bd717fecbe1e332dad4fd84Timo Sirainen {
7bccaece91a0b1bc61111c30443d6bad6b22c6d0Timo Sirainen return epoll_create(5) < 1;
7bccaece91a0b1bc61111c30443d6bad6b22c6d0Timo Sirainen }
11ee3b40320a31669bd717fecbe1e332dad4fd84Timo Sirainen ], [
11ee3b40320a31669bd717fecbe1e332dad4fd84Timo Sirainen i_cv_epoll_works=yes
7bccaece91a0b1bc61111c30443d6bad6b22c6d0Timo Sirainen ], [
11ee3b40320a31669bd717fecbe1e332dad4fd84Timo Sirainen i_cv_epoll_works=no
1f7f4294207557edf83171642ef62ce4922ffc9dTimo Sirainen ])
7bccaece91a0b1bc61111c30443d6bad6b22c6d0Timo Sirainen ])
7bccaece91a0b1bc61111c30443d6bad6b22c6d0Timo Sirainen if test $i_cv_epoll_works = yes; then
11ee3b40320a31669bd717fecbe1e332dad4fd84Timo Sirainen AC_DEFINE(IOLOOP_EPOLL,, Implement I/O loop with Linux 2.6 epoll())
7bccaece91a0b1bc61111c30443d6bad6b22c6d0Timo Sirainen have_ioloop=yes
7bccaece91a0b1bc61111c30443d6bad6b22c6d0Timo Sirainen ioloop=epoll
11ee3b40320a31669bd717fecbe1e332dad4fd84Timo Sirainen else
11ee3b40320a31669bd717fecbe1e332dad4fd84Timo Sirainen if test "$ioloop" = "epoll" ; then
7bccaece91a0b1bc61111c30443d6bad6b22c6d0Timo Sirainen AC_MSG_ERROR([epoll ioloop requested but epoll_create() is not available])
11ee3b40320a31669bd717fecbe1e332dad4fd84Timo Sirainen fi
11ee3b40320a31669bd717fecbe1e332dad4fd84Timo Sirainen fi
7bccaece91a0b1bc61111c30443d6bad6b22c6d0Timo Sirainenfi
11ee3b40320a31669bd717fecbe1e332dad4fd84Timo Sirainen
11ee3b40320a31669bd717fecbe1e332dad4fd84Timo Sirainenif test "$ioloop" = "best" || test "$ioloop" = "kqueue"; then
11ee3b40320a31669bd717fecbe1e332dad4fd84Timo Sirainen if test "$ac_cv_func_kqueue" = yes && test "$ac_cv_func_kevent" = yes; then
11ee3b40320a31669bd717fecbe1e332dad4fd84Timo Sirainen AC_DEFINE(IOLOOP_KQUEUE,, [Implement I/O loop with BSD kqueue()])
11ee3b40320a31669bd717fecbe1e332dad4fd84Timo Sirainen ioloop=kqueue
11ee3b40320a31669bd717fecbe1e332dad4fd84Timo Sirainen have_ioloop=yes
11ee3b40320a31669bd717fecbe1e332dad4fd84Timo Sirainen elif test "$ioloop" = "kqueue"; then
11ee3b40320a31669bd717fecbe1e332dad4fd84Timo Sirainen AC_MSG_ERROR([kqueue ioloop requested but kqueue() is not available])
11ee3b40320a31669bd717fecbe1e332dad4fd84Timo Sirainen fi
11ee3b40320a31669bd717fecbe1e332dad4fd84Timo Sirainenfi
11ee3b40320a31669bd717fecbe1e332dad4fd84Timo Sirainen
11ee3b40320a31669bd717fecbe1e332dad4fd84Timo Sirainenif test "$ioloop" = "best" || test "$ioloop" = "poll"; then
11ee3b40320a31669bd717fecbe1e332dad4fd84Timo Sirainen AC_CHECK_FUNC(poll, [
11ee3b40320a31669bd717fecbe1e332dad4fd84Timo Sirainen AC_DEFINE(IOLOOP_POLL,, Implement I/O loop with poll())
11ee3b40320a31669bd717fecbe1e332dad4fd84Timo Sirainen ioloop=poll
11ee3b40320a31669bd717fecbe1e332dad4fd84Timo Sirainen have_ioloop=yes
11ee3b40320a31669bd717fecbe1e332dad4fd84Timo Sirainen ])
7bccaece91a0b1bc61111c30443d6bad6b22c6d0Timo Sirainenfi
7bccaece91a0b1bc61111c30443d6bad6b22c6d0Timo Sirainen
3c3001681da75afc68578a180ec8f8b2d6dfacfaTimo Sirainenif test "$have_ioloop" = "no"; then
892e25e1c0caad62ced087d9eba2741a59e3d9ceTimo Sirainen AC_DEFINE(IOLOOP_SELECT,, Implement I/O loop with select())
892e25e1c0caad62ced087d9eba2741a59e3d9ceTimo Sirainen ioloop="select"
7bccaece91a0b1bc61111c30443d6bad6b22c6d0Timo Sirainenfi
11ee3b40320a31669bd717fecbe1e332dad4fd84Timo Sirainen
7bccaece91a0b1bc61111c30443d6bad6b22c6d0Timo Sirainenhave_notify=none
11ee3b40320a31669bd717fecbe1e332dad4fd84Timo Sirainen
11ee3b40320a31669bd717fecbe1e332dad4fd84Timo Sirainenif test "$notify" = "" || test "$notify" = "inotify" ; then
11ee3b40320a31669bd717fecbe1e332dad4fd84Timo Sirainen dnl * inotify?
7bccaece91a0b1bc61111c30443d6bad6b22c6d0Timo Sirainen AC_CACHE_CHECK([whether we can use inotify],i_cv_inotify_works,[
11ee3b40320a31669bd717fecbe1e332dad4fd84Timo Sirainen AC_TRY_RUN([
11ee3b40320a31669bd717fecbe1e332dad4fd84Timo Sirainen #define _GNU_SOURCE
7bccaece91a0b1bc61111c30443d6bad6b22c6d0Timo Sirainen #include <sys/ioctl.h>
3c3001681da75afc68578a180ec8f8b2d6dfacfaTimo Sirainen #include <fcntl.h>
7bccaece91a0b1bc61111c30443d6bad6b22c6d0Timo Sirainen #include <sys/inotify.h>
11ee3b40320a31669bd717fecbe1e332dad4fd84Timo Sirainen #include <stdio.h>
11ee3b40320a31669bd717fecbe1e332dad4fd84Timo Sirainen
11ee3b40320a31669bd717fecbe1e332dad4fd84Timo Sirainen int main()
11ee3b40320a31669bd717fecbe1e332dad4fd84Timo Sirainen {
11ee3b40320a31669bd717fecbe1e332dad4fd84Timo Sirainen int wd, fd;
11ee3b40320a31669bd717fecbe1e332dad4fd84Timo Sirainen char * fn = "/tmp";
11ee3b40320a31669bd717fecbe1e332dad4fd84Timo Sirainen
11ee3b40320a31669bd717fecbe1e332dad4fd84Timo Sirainen fd = inotify_init ();
11ee3b40320a31669bd717fecbe1e332dad4fd84Timo Sirainen if (fd < 0)
11ee3b40320a31669bd717fecbe1e332dad4fd84Timo Sirainen {
9954af4b72850a7c3158c99b444d49a529109c4dTimo Sirainen perror ("inotify_init");
11ee3b40320a31669bd717fecbe1e332dad4fd84Timo Sirainen return 1;
11ee3b40320a31669bd717fecbe1e332dad4fd84Timo Sirainen }
11ee3b40320a31669bd717fecbe1e332dad4fd84Timo Sirainen
11ee3b40320a31669bd717fecbe1e332dad4fd84Timo Sirainen wd = inotify_add_watch (fd, fn, IN_ALL_EVENTS);
11ee3b40320a31669bd717fecbe1e332dad4fd84Timo Sirainen
11ee3b40320a31669bd717fecbe1e332dad4fd84Timo Sirainen if (wd < 0)
11ee3b40320a31669bd717fecbe1e332dad4fd84Timo Sirainen {
11ee3b40320a31669bd717fecbe1e332dad4fd84Timo Sirainen perror ("inotify_add_watch");
11ee3b40320a31669bd717fecbe1e332dad4fd84Timo Sirainen return 2;
11ee3b40320a31669bd717fecbe1e332dad4fd84Timo Sirainen }
11ee3b40320a31669bd717fecbe1e332dad4fd84Timo Sirainen
11ee3b40320a31669bd717fecbe1e332dad4fd84Timo Sirainen inotify_rm_watch (fd, wd);
11ee3b40320a31669bd717fecbe1e332dad4fd84Timo Sirainen
11ee3b40320a31669bd717fecbe1e332dad4fd84Timo Sirainen close (fd);
11ee3b40320a31669bd717fecbe1e332dad4fd84Timo Sirainen return 0;
11ee3b40320a31669bd717fecbe1e332dad4fd84Timo Sirainen }
11ee3b40320a31669bd717fecbe1e332dad4fd84Timo Sirainen ], [
11ee3b40320a31669bd717fecbe1e332dad4fd84Timo Sirainen i_cv_inotify_works=yes
11ee3b40320a31669bd717fecbe1e332dad4fd84Timo Sirainen ], [
11ee3b40320a31669bd717fecbe1e332dad4fd84Timo Sirainen i_cv_inotify_works=no
11ee3b40320a31669bd717fecbe1e332dad4fd84Timo Sirainen ])
11ee3b40320a31669bd717fecbe1e332dad4fd84Timo Sirainen ])
7bccaece91a0b1bc61111c30443d6bad6b22c6d0Timo Sirainen if test $i_cv_inotify_works = yes; then
3c3001681da75afc68578a180ec8f8b2d6dfacfaTimo Sirainen have_notify=inotify
7bccaece91a0b1bc61111c30443d6bad6b22c6d0Timo Sirainen notify=inotify
7bccaece91a0b1bc61111c30443d6bad6b22c6d0Timo Sirainen AC_DEFINE(IOLOOP_NOTIFY_INOTIFY,, Use Linux inotify)
3c3001681da75afc68578a180ec8f8b2d6dfacfaTimo Sirainen else
892e25e1c0caad62ced087d9eba2741a59e3d9ceTimo Sirainen if test "$notify" = "inotify"; then
892e25e1c0caad62ced087d9eba2741a59e3d9ceTimo Sirainen AC_MSG_ERROR([inotify requested but not available])
b2024fa4e6ed39f9b5b6bb6c051f6d535fc0e011Timo Sirainen notify=""
b2024fa4e6ed39f9b5b6bb6c051f6d535fc0e011Timo Sirainen fi
edd318d5866ac3fbc6e8df28fb24a4dfef93c884Timo Sirainen fi
892e25e1c0caad62ced087d9eba2741a59e3d9ceTimo Sirainenfi
edd318d5866ac3fbc6e8df28fb24a4dfef93c884Timo Sirainen
b44033e45e9f48f8a6e1ac5905234fec5de6d6ccAki Tuomiif (test "$notify" = "" && test "$ioloop" = kqueue) || test "$notify" = "kqueue"; then
edd318d5866ac3fbc6e8df28fb24a4dfef93c884Timo Sirainen dnl * BSD kqueue() notify
edd318d5866ac3fbc6e8df28fb24a4dfef93c884Timo Sirainen AC_MSG_CHECKING([whether we can use BSD kqueue() notify])
09060303d565e15d54e42b4ef722f9d3c26f5336Timo Sirainen if test "$ac_cv_func_kqueue" = yes && test "$ac_cv_func_kevent" = yes ; then
09060303d565e15d54e42b4ef722f9d3c26f5336Timo Sirainen have_notify=kqueue
09060303d565e15d54e42b4ef722f9d3c26f5336Timo Sirainen notify=kqueue
09060303d565e15d54e42b4ef722f9d3c26f5336Timo Sirainen AC_MSG_RESULT("yes")
09060303d565e15d54e42b4ef722f9d3c26f5336Timo Sirainen AC_DEFINE(IOLOOP_NOTIFY_KQUEUE,,
09060303d565e15d54e42b4ef722f9d3c26f5336Timo Sirainen Use BSD kqueue directory changes notificaton)
09060303d565e15d54e42b4ef722f9d3c26f5336Timo Sirainen else
0f5dc4da3982053036be65190e44bf28a67b1ca2Timo Sirainen AC_MSG_RESULT("no")
de92873c366becfaea1554642f89b9169d7955e2Timo Sirainen if test "$notify" = "kqueue" ; then
de92873c366becfaea1554642f89b9169d7955e2Timo Sirainen AC_MSG_ERROR([kqueue notify requested but kqueue() is not available])
0f5dc4da3982053036be65190e44bf28a67b1ca2Timo Sirainen notify=""
0f5dc4da3982053036be65190e44bf28a67b1ca2Timo Sirainen fi
0f5dc4da3982053036be65190e44bf28a67b1ca2Timo Sirainen fi
0f5dc4da3982053036be65190e44bf28a67b1ca2Timo Sirainenfi
b2024fa4e6ed39f9b5b6bb6c051f6d535fc0e011Timo Sirainen
edd318d5866ac3fbc6e8df28fb24a4dfef93c884Timo Sirainenif test "$notify" = "" || test "$notify" = "dnotify"; then
b44033e45e9f48f8a6e1ac5905234fec5de6d6ccAki Tuomi dnl * dnotify?
b44033e45e9f48f8a6e1ac5905234fec5de6d6ccAki Tuomi AC_CACHE_CHECK([whether we can use dnotify],i_cv_have_dnotify,[
b44033e45e9f48f8a6e1ac5905234fec5de6d6ccAki Tuomi AC_TRY_COMPILE([
b2024fa4e6ed39f9b5b6bb6c051f6d535fc0e011Timo Sirainen #define _GNU_SOURCE
edd318d5866ac3fbc6e8df28fb24a4dfef93c884Timo Sirainen #include <fcntl.h>
b2024fa4e6ed39f9b5b6bb6c051f6d535fc0e011Timo Sirainen #include <signal.h>
edd318d5866ac3fbc6e8df28fb24a4dfef93c884Timo Sirainen #include <unistd.h>
edd318d5866ac3fbc6e8df28fb24a4dfef93c884Timo Sirainen ], [
edd318d5866ac3fbc6e8df28fb24a4dfef93c884Timo Sirainen fcntl(0, F_SETSIG, SIGRTMIN);
b2024fa4e6ed39f9b5b6bb6c051f6d535fc0e011Timo Sirainen fcntl(0, F_NOTIFY, DN_CREATE | DN_DELETE | DN_RENAME | DN_MULTISHOT);
edd318d5866ac3fbc6e8df28fb24a4dfef93c884Timo Sirainen ], [
edd318d5866ac3fbc6e8df28fb24a4dfef93c884Timo Sirainen i_cv_have_dnotify=yes
09060303d565e15d54e42b4ef722f9d3c26f5336Timo Sirainen ], [
edd318d5866ac3fbc6e8df28fb24a4dfef93c884Timo Sirainen i_cv_have_dnotify=no
edd318d5866ac3fbc6e8df28fb24a4dfef93c884Timo Sirainen ])
edd318d5866ac3fbc6e8df28fb24a4dfef93c884Timo Sirainen ])
edd318d5866ac3fbc6e8df28fb24a4dfef93c884Timo Sirainen if test $i_cv_have_dnotify = yes; then
edd318d5866ac3fbc6e8df28fb24a4dfef93c884Timo Sirainen AC_DEFINE(IOLOOP_NOTIFY_DNOTIFY,, Use Linux dnotify)
edd318d5866ac3fbc6e8df28fb24a4dfef93c884Timo Sirainen have_notify=dnotify
edd318d5866ac3fbc6e8df28fb24a4dfef93c884Timo Sirainen notify=dnotify
09060303d565e15d54e42b4ef722f9d3c26f5336Timo Sirainen else
edd318d5866ac3fbc6e8df28fb24a4dfef93c884Timo Sirainen if test "$notify" = "dnotify"; then
a99dcacb7cb6e0288f8642483f395f8e4a7aa79cTimo Sirainen AC_MSG_ERROR([dnotify requested but not available])
edd318d5866ac3fbc6e8df28fb24a4dfef93c884Timo Sirainen fi
edd318d5866ac3fbc6e8df28fb24a4dfef93c884Timo Sirainen fi
e2a88d59c0d47d63ce1ad5b1fd95e487124a3fd4Timo Sirainenfi
3c3001681da75afc68578a180ec8f8b2d6dfacfaTimo Sirainen
b2024fa4e6ed39f9b5b6bb6c051f6d535fc0e011Timo Sirainenif test "$have_notify" = "none"; then
b2024fa4e6ed39f9b5b6bb6c051f6d535fc0e011Timo Sirainen AC_DEFINE(IOLOOP_NOTIFY_NONE,, No special notify support)
3c3001681da75afc68578a180ec8f8b2d6dfacfaTimo Sirainenfi
892e25e1c0caad62ced087d9eba2741a59e3d9ceTimo Sirainen
caa1fa99c79c568ce2e42477bc169e7024fb220bTimo SirainenAC_CACHE_CHECK([whether we have glibc],i_cv_have_glibc,[
1f7f4294207557edf83171642ef62ce4922ffc9dTimo Sirainen AC_TRY_COMPILE([
caa1fa99c79c568ce2e42477bc169e7024fb220bTimo Sirainen #include <stdlib.h>
caa1fa99c79c568ce2e42477bc169e7024fb220bTimo Sirainen #ifdef __GLIBC__
caa1fa99c79c568ce2e42477bc169e7024fb220bTimo Sirainen we have glibc
892e25e1c0caad62ced087d9eba2741a59e3d9ceTimo Sirainen #endif
892e25e1c0caad62ced087d9eba2741a59e3d9ceTimo Sirainen ],, [
caa1fa99c79c568ce2e42477bc169e7024fb220bTimo Sirainen i_cv_have_glibc=no
3c3001681da75afc68578a180ec8f8b2d6dfacfaTimo Sirainen ], [
caa1fa99c79c568ce2e42477bc169e7024fb220bTimo Sirainen i_cv_have_glibc=yes
caa1fa99c79c568ce2e42477bc169e7024fb220bTimo Sirainen ])
caa1fa99c79c568ce2e42477bc169e7024fb220bTimo Sirainen])
caa1fa99c79c568ce2e42477bc169e7024fb220bTimo Sirainenif test "$i_cv_have_glibc" = "yes"; then
caa1fa99c79c568ce2e42477bc169e7024fb220bTimo Sirainen AC_DEFINE(PREAD_WRAPPERS,, Define if pread/pwrite needs _XOPEN_SOURCE 500)
1f7f4294207557edf83171642ef62ce4922ffc9dTimo Sirainenfi
1f7f4294207557edf83171642ef62ce4922ffc9dTimo Sirainen
caa1fa99c79c568ce2e42477bc169e7024fb220bTimo Sirainendnl * Old glibcs have broken posix_fallocate(). Make sure not to use it.
caa1fa99c79c568ce2e42477bc169e7024fb220bTimo Sirainendnl * It may also be broken in AIX.
caa1fa99c79c568ce2e42477bc169e7024fb220bTimo SirainenAC_CACHE_CHECK([whether posix_fallocate() works],i_cv_posix_fallocate_works,[
caa1fa99c79c568ce2e42477bc169e7024fb220bTimo Sirainen AC_TRY_RUN([
caa1fa99c79c568ce2e42477bc169e7024fb220bTimo Sirainen #define _XOPEN_SOURCE 600
e2a88d59c0d47d63ce1ad5b1fd95e487124a3fd4Timo Sirainen #include <stdio.h>
caa1fa99c79c568ce2e42477bc169e7024fb220bTimo Sirainen #include <stdlib.h>
caa1fa99c79c568ce2e42477bc169e7024fb220bTimo Sirainen #include <fcntl.h>
caa1fa99c79c568ce2e42477bc169e7024fb220bTimo Sirainen #include <unistd.h>
caa1fa99c79c568ce2e42477bc169e7024fb220bTimo Sirainen #if defined(__GLIBC__) && (__GLIBC__ < 2 || __GLIBC_MINOR__ < 7)
caa1fa99c79c568ce2e42477bc169e7024fb220bTimo Sirainen possibly broken posix_fallocate
1f7f4294207557edf83171642ef62ce4922ffc9dTimo Sirainen #endif
e2a88d59c0d47d63ce1ad5b1fd95e487124a3fd4Timo Sirainen int main() {
3c3001681da75afc68578a180ec8f8b2d6dfacfaTimo Sirainen int fd = creat("conftest.temp", 0600);
caa1fa99c79c568ce2e42477bc169e7024fb220bTimo Sirainen int ret;
caa1fa99c79c568ce2e42477bc169e7024fb220bTimo Sirainen if (fd == -1) {
3c3001681da75afc68578a180ec8f8b2d6dfacfaTimo Sirainen perror("creat()");
892e25e1c0caad62ced087d9eba2741a59e3d9ceTimo Sirainen return 2;
15ab2452b0220a115f4351ad9d7fd5ec70ae7966Timo Sirainen }
15ab2452b0220a115f4351ad9d7fd5ec70ae7966Timo Sirainen ret = posix_fallocate(fd, 1024, 1024) < 0 ? 1 : 0;
15ab2452b0220a115f4351ad9d7fd5ec70ae7966Timo Sirainen unlink("conftest.temp");
15ab2452b0220a115f4351ad9d7fd5ec70ae7966Timo Sirainen return ret;
15ab2452b0220a115f4351ad9d7fd5ec70ae7966Timo Sirainen }
15ab2452b0220a115f4351ad9d7fd5ec70ae7966Timo Sirainen ], [
15ab2452b0220a115f4351ad9d7fd5ec70ae7966Timo Sirainen i_cv_posix_fallocate_works=yes
15ab2452b0220a115f4351ad9d7fd5ec70ae7966Timo Sirainen ], [
892e25e1c0caad62ced087d9eba2741a59e3d9ceTimo Sirainen i_cv_posix_fallocate_works=no
3c3001681da75afc68578a180ec8f8b2d6dfacfaTimo Sirainen ])
15ab2452b0220a115f4351ad9d7fd5ec70ae7966Timo Sirainen])
15ab2452b0220a115f4351ad9d7fd5ec70ae7966Timo Sirainenif test $i_cv_posix_fallocate_works = yes; then
15ab2452b0220a115f4351ad9d7fd5ec70ae7966Timo Sirainen AC_DEFINE(HAVE_POSIX_FALLOCATE,, Define if you have a working posix_fallocate())
e2a88d59c0d47d63ce1ad5b1fd95e487124a3fd4Timo Sirainenfi
3c3001681da75afc68578a180ec8f8b2d6dfacfaTimo Sirainen
15ab2452b0220a115f4351ad9d7fd5ec70ae7966Timo Sirainendnl * OS specific options
15ab2452b0220a115f4351ad9d7fd5ec70ae7966Timo SirainenDC_PLUGIN_DEPS
0f5dc4da3982053036be65190e44bf28a67b1ca2Timo Sirainencase "$host_os" in
de92873c366becfaea1554642f89b9169d7955e2Timo Sirainen hpux*)
de92873c366becfaea1554642f89b9169d7955e2Timo Sirainen CFLAGS="$CFLAGS -D_XOPEN_SOURCE -D_XOPEN_SOURCE_EXTENDED"
0f5dc4da3982053036be65190e44bf28a67b1ca2Timo Sirainen # for getting fd_send/fd_recv working:
0f5dc4da3982053036be65190e44bf28a67b1ca2Timo Sirainen LDFLAGS="$LDFLAGS -Wl,+b,:"
0f5dc4da3982053036be65190e44bf28a67b1ca2Timo Sirainen LIBS="-lxnet $LIBS"
0f5dc4da3982053036be65190e44bf28a67b1ca2Timo Sirainen AC_DEFINE(PREAD_BROKEN,, Defint if pread/pwrite implementation is broken)
b44033e45e9f48f8a6e1ac5905234fec5de6d6ccAki Tuomi ;;
b44033e45e9f48f8a6e1ac5905234fec5de6d6ccAki Tuomi linux*|darwin*)
79ee504bdf920f01e12e28f238799bf2616489dfTimo Sirainen AC_DEFINE(PROCTITLE_HACK,, Define if process title can be changed by modifying argv)
e2a88d59c0d47d63ce1ad5b1fd95e487124a3fd4Timo Sirainen ;;
3c3001681da75afc68578a180ec8f8b2d6dfacfaTimo Sirainen *)
15ab2452b0220a115f4351ad9d7fd5ec70ae7966Timo Sirainen ;;
15ab2452b0220a115f4351ad9d7fd5ec70ae7966Timo Sirainenesac
82641f7aa58d560cc89ec5eb16f03571d6dedcffTimo Sirainen
82641f7aa58d560cc89ec5eb16f03571d6dedcffTimo SirainenAC_CHECK_SIZEOF(int)
82641f7aa58d560cc89ec5eb16f03571d6dedcffTimo SirainenAC_CHECK_SIZEOF(long)
a35f0649343f41bad5852d3fdca7deb69adb5f15Timo SirainenAC_CHECK_SIZEOF(void *)
a35f0649343f41bad5852d3fdca7deb69adb5f15Timo SirainenAC_CHECK_SIZEOF(long long)
a35f0649343f41bad5852d3fdca7deb69adb5f15Timo Sirainen
a35f0649343f41bad5852d3fdca7deb69adb5f15Timo SirainenAC_DEFUN([AC_TYPEOF], [
82641f7aa58d560cc89ec5eb16f03571d6dedcffTimo Sirainen dnl * first check if we can get the size with redefining typedefs
e2a88d59c0d47d63ce1ad5b1fd95e487124a3fd4Timo Sirainen
3c3001681da75afc68578a180ec8f8b2d6dfacfaTimo Sirainen order="$2"
15ab2452b0220a115f4351ad9d7fd5ec70ae7966Timo Sirainen if test "$2" = ""; then
15ab2452b0220a115f4351ad9d7fd5ec70ae7966Timo Sirainen order="int long long-long"
3c3001681da75afc68578a180ec8f8b2d6dfacfaTimo Sirainen fi
892e25e1c0caad62ced087d9eba2741a59e3d9ceTimo Sirainen
550d2fe097e95f12e8fa60ef52753ea7fe53d4eaTimo Sirainen result=""
550d2fe097e95f12e8fa60ef52753ea7fe53d4eaTimo Sirainen visible="unknown"
892e25e1c0caad62ced087d9eba2741a59e3d9ceTimo Sirainen AC_MSG_CHECKING([type of $1])
3c3001681da75afc68578a180ec8f8b2d6dfacfaTimo Sirainen AC_CACHE_VAL(i_cv_typeof_$1,[
550d2fe097e95f12e8fa60ef52753ea7fe53d4eaTimo Sirainen if test "x$ac_cv_c_compiler_gnu" = "xyes"; then
550d2fe097e95f12e8fa60ef52753ea7fe53d4eaTimo Sirainen dnl * try with printf() + -Werror
550d2fe097e95f12e8fa60ef52753ea7fe53d4eaTimo Sirainen old_CFLAGS="$CFLAGS"
550d2fe097e95f12e8fa60ef52753ea7fe53d4eaTimo Sirainen CFLAGS="$CFLAGS -Werror"
3c3001681da75afc68578a180ec8f8b2d6dfacfaTimo Sirainen
550d2fe097e95f12e8fa60ef52753ea7fe53d4eaTimo Sirainen for type in $order; do
550d2fe097e95f12e8fa60ef52753ea7fe53d4eaTimo Sirainen case "$type" in
365b5a495ae7f6fd20f6a0b0517f6aa3ad4fe1a7Timo Sirainen int)
365b5a495ae7f6fd20f6a0b0517f6aa3ad4fe1a7Timo Sirainen fmt="%d"
365b5a495ae7f6fd20f6a0b0517f6aa3ad4fe1a7Timo Sirainen ;;
365b5a495ae7f6fd20f6a0b0517f6aa3ad4fe1a7Timo Sirainen unsigned-int)
365b5a495ae7f6fd20f6a0b0517f6aa3ad4fe1a7Timo Sirainen fmt="%u"
365b5a495ae7f6fd20f6a0b0517f6aa3ad4fe1a7Timo Sirainen ;;
365b5a495ae7f6fd20f6a0b0517f6aa3ad4fe1a7Timo Sirainen long)
365b5a495ae7f6fd20f6a0b0517f6aa3ad4fe1a7Timo Sirainen fmt="%ld"
365b5a495ae7f6fd20f6a0b0517f6aa3ad4fe1a7Timo Sirainen ;;
365b5a495ae7f6fd20f6a0b0517f6aa3ad4fe1a7Timo Sirainen unsigned-long)
365b5a495ae7f6fd20f6a0b0517f6aa3ad4fe1a7Timo Sirainen fmt="%lu"
365b5a495ae7f6fd20f6a0b0517f6aa3ad4fe1a7Timo Sirainen ;;
365b5a495ae7f6fd20f6a0b0517f6aa3ad4fe1a7Timo Sirainen long-long)
365b5a495ae7f6fd20f6a0b0517f6aa3ad4fe1a7Timo Sirainen fmt="%lld"
9ba1a38e2fa5ffe9d0db83c4a14a6552bcff3181Timo Sirainen ;;
9ba1a38e2fa5ffe9d0db83c4a14a6552bcff3181Timo Sirainen unsigned-long-long)
9ba1a38e2fa5ffe9d0db83c4a14a6552bcff3181Timo Sirainen fmt="%llu"
892e25e1c0caad62ced087d9eba2741a59e3d9ceTimo Sirainen ;;
9ba1a38e2fa5ffe9d0db83c4a14a6552bcff3181Timo Sirainen *)
9ba1a38e2fa5ffe9d0db83c4a14a6552bcff3181Timo Sirainen fmt=""
892e25e1c0caad62ced087d9eba2741a59e3d9ceTimo Sirainen ;;
892e25e1c0caad62ced087d9eba2741a59e3d9ceTimo Sirainen esac
892e25e1c0caad62ced087d9eba2741a59e3d9ceTimo Sirainen
892e25e1c0caad62ced087d9eba2741a59e3d9ceTimo Sirainen if test "$fmt" != ""; then
9ba1a38e2fa5ffe9d0db83c4a14a6552bcff3181Timo Sirainen AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
892e25e1c0caad62ced087d9eba2741a59e3d9ceTimo Sirainen #include <sys/types.h>
892e25e1c0caad62ced087d9eba2741a59e3d9ceTimo Sirainen #include <stdio.h>
9ba1a38e2fa5ffe9d0db83c4a14a6552bcff3181Timo Sirainen ]], [[
9ba1a38e2fa5ffe9d0db83c4a14a6552bcff3181Timo Sirainen printf("$fmt", ($1)0);
9ba1a38e2fa5ffe9d0db83c4a14a6552bcff3181Timo Sirainen ]])],[
9ba1a38e2fa5ffe9d0db83c4a14a6552bcff3181Timo Sirainen if test "$result" != ""; then
9ba1a38e2fa5ffe9d0db83c4a14a6552bcff3181Timo Sirainen dnl * warning check isn't working
9ba1a38e2fa5ffe9d0db83c4a14a6552bcff3181Timo Sirainen result=""
9ba1a38e2fa5ffe9d0db83c4a14a6552bcff3181Timo Sirainen visible="unknown"
9ba1a38e2fa5ffe9d0db83c4a14a6552bcff3181Timo Sirainen break
9ba1a38e2fa5ffe9d0db83c4a14a6552bcff3181Timo Sirainen fi
9ba1a38e2fa5ffe9d0db83c4a14a6552bcff3181Timo Sirainen result="`echo $type|sed 's/-/ /g'`"
9ba1a38e2fa5ffe9d0db83c4a14a6552bcff3181Timo Sirainen visible="$result"
9ba1a38e2fa5ffe9d0db83c4a14a6552bcff3181Timo Sirainen ],[])
9ba1a38e2fa5ffe9d0db83c4a14a6552bcff3181Timo Sirainen fi
9ba1a38e2fa5ffe9d0db83c4a14a6552bcff3181Timo Sirainen done
9ba1a38e2fa5ffe9d0db83c4a14a6552bcff3181Timo Sirainen CFLAGS="$old_CFLAGS"
9ba1a38e2fa5ffe9d0db83c4a14a6552bcff3181Timo Sirainen fi
9ba1a38e2fa5ffe9d0db83c4a14a6552bcff3181Timo Sirainen
9ba1a38e2fa5ffe9d0db83c4a14a6552bcff3181Timo Sirainen if test "$result" = ""; then
9ba1a38e2fa5ffe9d0db83c4a14a6552bcff3181Timo Sirainen for type in $order; do
9ba1a38e2fa5ffe9d0db83c4a14a6552bcff3181Timo Sirainen type="`echo $type|sed 's/-/ /g'`"
9ba1a38e2fa5ffe9d0db83c4a14a6552bcff3181Timo Sirainen AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
9ba1a38e2fa5ffe9d0db83c4a14a6552bcff3181Timo Sirainen #include <sys/types.h>
9ba1a38e2fa5ffe9d0db83c4a14a6552bcff3181Timo Sirainen typedef $type $1;
9ba1a38e2fa5ffe9d0db83c4a14a6552bcff3181Timo Sirainen ]], [[]])],[
9ba1a38e2fa5ffe9d0db83c4a14a6552bcff3181Timo Sirainen if test "$result" != ""; then
9ba1a38e2fa5ffe9d0db83c4a14a6552bcff3181Timo Sirainen dnl * compiler allows redefining to anything
9ba1a38e2fa5ffe9d0db83c4a14a6552bcff3181Timo Sirainen result=""
9ba1a38e2fa5ffe9d0db83c4a14a6552bcff3181Timo Sirainen visible="unknown"
9ba1a38e2fa5ffe9d0db83c4a14a6552bcff3181Timo Sirainen break
9ba1a38e2fa5ffe9d0db83c4a14a6552bcff3181Timo Sirainen fi
9ba1a38e2fa5ffe9d0db83c4a14a6552bcff3181Timo Sirainen result="$type"
9ba1a38e2fa5ffe9d0db83c4a14a6552bcff3181Timo Sirainen visible="$type"
9ba1a38e2fa5ffe9d0db83c4a14a6552bcff3181Timo Sirainen ],[])
365b5a495ae7f6fd20f6a0b0517f6aa3ad4fe1a7Timo Sirainen done
365b5a495ae7f6fd20f6a0b0517f6aa3ad4fe1a7Timo Sirainen fi
9ba1a38e2fa5ffe9d0db83c4a14a6552bcff3181Timo Sirainen
9ba1a38e2fa5ffe9d0db83c4a14a6552bcff3181Timo Sirainen if test "$result" = ""; then
9ba1a38e2fa5ffe9d0db83c4a14a6552bcff3181Timo Sirainen dnl * check with sizes
9ba1a38e2fa5ffe9d0db83c4a14a6552bcff3181Timo Sirainen
9ba1a38e2fa5ffe9d0db83c4a14a6552bcff3181Timo Sirainen dnl * older autoconfs don't include sys/types.h, so do it manually
9ba1a38e2fa5ffe9d0db83c4a14a6552bcff3181Timo Sirainen AC_RUN_IFELSE([AC_LANG_SOURCE([[
9ba1a38e2fa5ffe9d0db83c4a14a6552bcff3181Timo Sirainen #include <stdio.h>
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen #include <sys/types.h>
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen int main() {
9ba1a38e2fa5ffe9d0db83c4a14a6552bcff3181Timo Sirainen FILE *f=fopen("conftestval", "w");
3c3001681da75afc68578a180ec8f8b2d6dfacfaTimo Sirainen if (!f) exit(1);
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen fprintf(f, "%d\n", sizeof($1));
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen exit(0);
d2cadbf5445156fc12988506279d51d0e53b0449Timo Sirainen }
d2cadbf5445156fc12988506279d51d0e53b0449Timo Sirainen ]])],[
d2cadbf5445156fc12988506279d51d0e53b0449Timo Sirainen size=`cat conftestval`
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen rm -f conftestval
d2cadbf5445156fc12988506279d51d0e53b0449Timo Sirainen
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen for type in $order; do
f158d9a303bb15a6848ca276c9391c7ca52e452bTimo Sirainen actype="ac_cv_sizeof_`echo $type|sed 's/-/_/g'`"
f158d9a303bb15a6848ca276c9391c7ca52e452bTimo Sirainen if test "$size" = "`eval echo \\$$actype`"; then
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen result="`echo $type|sed 's/-/ /g'`"
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen visible="`expr $size \* 8`bit (using $result)"
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen break
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen fi
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen done
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen if test "$result" = ""; then
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen result=unknown
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen visible="`expr $size \* 8`bit (unknown type)"
3c3001681da75afc68578a180ec8f8b2d6dfacfaTimo Sirainen fi
892e25e1c0caad62ced087d9eba2741a59e3d9ceTimo Sirainen ],[],[])
892e25e1c0caad62ced087d9eba2741a59e3d9ceTimo Sirainen fi
892e25e1c0caad62ced087d9eba2741a59e3d9ceTimo Sirainen i_cv_typeof_$1=$result/$visible
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen ])
3c3001681da75afc68578a180ec8f8b2d6dfacfaTimo Sirainen
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen typeof_$1=`echo $i_cv_typeof_$1 | sed s,/.*$,,`
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen visible=`echo $i_cv_typeof_$1 | sed s,^.*/,,`
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen AC_MSG_RESULT($visible)
11ee3b40320a31669bd717fecbe1e332dad4fd84Timo Sirainen])
11ee3b40320a31669bd717fecbe1e332dad4fd84Timo Sirainen
11ee3b40320a31669bd717fecbe1e332dad4fd84Timo SirainenAC_SYS_LARGEFILE
11ee3b40320a31669bd717fecbe1e332dad4fd84Timo SirainenAC_CHECK_TYPES(_Bool)
11ee3b40320a31669bd717fecbe1e332dad4fd84Timo Sirainen
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo SirainenAC_CHECK_TYPE(uoff_t, [
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen have_uoff_t=yes
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen AC_DEFINE(HAVE_UOFF_T,, Define if you have a native uoff_t type)
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen], [
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen have_uoff_t=no
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen])
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo SirainenAC_TYPEOF(off_t, long int long-long)
e93184a9055c2530366dfe617e07199603c399ddMartti Rannanjärvicase "$typeof_off_t" in
e93184a9055c2530366dfe617e07199603c399ddMartti Rannanjärvi int)
e2a88d59c0d47d63ce1ad5b1fd95e487124a3fd4Timo Sirainen offt_max=INT_MAX
11ee3b40320a31669bd717fecbe1e332dad4fd84Timo Sirainen uofft_fmt="u"
e2a88d59c0d47d63ce1ad5b1fd95e487124a3fd4Timo Sirainen if test "$have_uoff_t" != "yes"; then
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen AC_DEFINE(UOFF_T_INT,, Define if off_t is int)
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen fi
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen offt_bits=`expr 8 \* $ac_cv_sizeof_int`
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen ;;
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen long)
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen offt_max=LONG_MAX
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen uofft_fmt="lu"
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen if test "$have_uoff_t" != "yes"; then
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen AC_DEFINE(UOFF_T_LONG,, Define if off_t is long)
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen fi
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen offt_bits=`expr 8 \* $ac_cv_sizeof_long`
11ee3b40320a31669bd717fecbe1e332dad4fd84Timo Sirainen ;;
11ee3b40320a31669bd717fecbe1e332dad4fd84Timo Sirainen "long long")
11ee3b40320a31669bd717fecbe1e332dad4fd84Timo Sirainen offt_max=LLONG_MAX
11ee3b40320a31669bd717fecbe1e332dad4fd84Timo Sirainen uofft_fmt="llu"
11ee3b40320a31669bd717fecbe1e332dad4fd84Timo Sirainen if test "$have_uoff_t" != "yes"; then
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen AC_DEFINE(UOFF_T_LONG_LONG,, Define if off_t is long long)
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen fi
bcbca4b66800f0fbfe2643a86d5a6b63d752454dTimo Sirainen offt_bits=`expr 8 \* $ac_cv_sizeof_long_long`
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen ;;
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen *)
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen AC_MSG_ERROR([Unsupported off_t type])
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen ;;
9522aa5f33cc37fe8ccd0d647cc51dd3ba6a9b55Timo Sirainenesac
9522aa5f33cc37fe8ccd0d647cc51dd3ba6a9b55Timo Sirainen
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainendnl * Do we have struct dirent->d_type
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo SirainenAC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen #include <dirent.h>
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen]], [[
11ee3b40320a31669bd717fecbe1e332dad4fd84Timo Sirainen struct dirent d;
11ee3b40320a31669bd717fecbe1e332dad4fd84Timo Sirainen d.d_type = DT_DIR;
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen]])],[
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen AC_DEFINE(HAVE_DIRENT_D_TYPE,, Define if you have struct dirent->d_type)
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen],[])
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainendnl * Do we have OFF_T_MAX?
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo SirainenAC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
11ee3b40320a31669bd717fecbe1e332dad4fd84Timo Sirainen #include <limits.h>
11ee3b40320a31669bd717fecbe1e332dad4fd84Timo Sirainen #include <sys/types.h>
11ee3b40320a31669bd717fecbe1e332dad4fd84Timo Sirainen]], [[
11ee3b40320a31669bd717fecbe1e332dad4fd84Timo Sirainen off_t i = OFF_T_MAX;
11ee3b40320a31669bd717fecbe1e332dad4fd84Timo Sirainen]])],[
11ee3b40320a31669bd717fecbe1e332dad4fd84Timo Sirainen :
11ee3b40320a31669bd717fecbe1e332dad4fd84Timo Sirainen],[
11ee3b40320a31669bd717fecbe1e332dad4fd84Timo Sirainen AC_DEFINE_UNQUOTED(OFF_T_MAX, $offt_max, Maximum value of off_t)
])
AC_DEFINE_UNQUOTED(PRIuUOFF_T, "$uofft_fmt", printf() format for uoff_t)
dnl * make sure size_t isn't signed. we'd probably work fine with it, but
dnl * it's more likely vulnerable to buffer overflows. Anyway, C99 specifies
dnl * that it's unsigned and only some old systems define it as signed.
AC_CACHE_CHECK([whether size_t is signed],i_cv_signed_size_t,[
AC_RUN_IFELSE([AC_LANG_SOURCE([[
#include <sys/types.h>
int main() {
/* return 0 if we're signed */
exit((size_t)(int)-1 <= 0 ? 0 : 1);
}
]])],[
i_cv_signed_size_t=yes
echo
echo "Your system's size_t is a signed integer, Dovecot isn't designed to"
echo "support it. It probably works just fine, but it's less resistant to"
echo "buffer overflows. If you're not worried about this and still want to"
echo "compile Dovecot, set ignore_signed_size=1 environment."
if test "$ignore_signed_size" = ""; then
AC_MSG_ERROR([aborting])
fi
echo "..ignoring as requested.."
],[
i_cv_signed_size_t=no
],[])
])
dnl Note: we check size_t rather than ssize_t here, because on OSX 10.2
dnl ssize_t = int and size_t = unsigned long. We're mostly concerned about
dnl printf format here, so check the size_t one.
AC_TYPEOF(size_t, unsigned-int unsigned-long unsigned-long-long)
case "$typeof_size_t" in
"unsigned long")
ssizet_max=LONG_MAX
sizet_fmt="lu"
;;
"unsigned long long")
ssizet_max=LLONG_MAX
sizet_fmt="llu"
;;
*)
dnl older systems didn't have ssize_t, default to int
ssizet_max=INT_MAX
sizet_fmt="u"
if test "$typeof_size_t" = ""; then
AC_DEFINE(size_t, unsigned int, Define to 'unsigned int' if you don't have it)
AC_DEFINE(ssize_t, int, Define to 'int' if you don't have it)
fi
;;
esac
AC_DEFINE_UNQUOTED(SSIZE_T_MAX, $ssizet_max, Maximum value of ssize_t)
AC_DEFINE_UNQUOTED(PRIuSIZE_T, "$sizet_fmt", printf() format for size_t)
AC_DEFUN([AC_CHECKTYPE2], [
AC_MSG_CHECKING([for $1])
AC_CACHE_VAL(i_cv_type_$1,
[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
#include <sys/types.h>
$2]], [[$1 t;]])],[i_cv_type_$1=yes],[i_cv_type_$1=no])])
AC_MSG_RESULT($i_cv_type_$1)
])
dnl some systems don't have stdint.h, but still have some of the types
dnl defined elsewhere
AC_CHECK_HEADER(stdint.h, [
stdint_include="#include <stdint.h>"
])
AC_CHECKTYPE2(uintmax_t, [$stdint_include])
if test $i_cv_type_uintmax_t = yes; then
AC_DEFINE(HAVE_UINTMAX_T,, Define if you have uintmax_t (C99 type))
fi
dnl use separate check, eg. Solaris 8 has uintmax_t but not uint_fast32_t
AC_CHECKTYPE2(uint_fast32_t, [$stdint_include])
if test $i_cv_type_uint_fast32_t = yes; then
AC_DEFINE(HAVE_UINT_FAST32_T,, Define if you have uint_fast32_t (C99 type))
fi
AC_CHECKTYPE2(socklen_t, [#include <sys/socket.h>])
if test $i_cv_type_socklen_t = yes; then
AC_DEFINE(HAVE_SOCKLEN_T,, Define to 'int' if you don't have socklen_t)
fi
AC_DEFINE_UNQUOTED(MEM_ALIGN_SIZE, $mem_align, Required memory alignment)
dnl * find random source
AC_MSG_CHECKING([for /dev/urandom])
if test -c /dev/urandom || test -s /dev/urandom; then
AC_MSG_RESULT(yes)
AC_DEFINE(DEV_URANDOM_PATH, "/dev/urandom", Path to /dev/urandom)
have_random_source=yes
else
AC_MSG_RESULT(no)
fi
if test "$have_random_source" != "yes"; then
AC_CHECK_HEADER(openssl/rand.h, [
AC_DEFINE(HAVE_OPENSSL_RAND_H,, Define if you have openssl/rand.h)
LIBS="$LIBS -lcrypto"
])
fi
dnl * do we have tm_gmtoff
AC_MSG_CHECKING([for tm_gmtoff])
AC_CACHE_VAL(i_cv_field_tm_gmtoff,
[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
#include <time.h>]],
[[struct tm *tm; return tm->tm_gmtoff;]])],
[i_cv_field_tm_gmtoff=yes],
[i_cv_field_tm_gmtoff=no])])
if test $i_cv_field_tm_gmtoff = yes; then
AC_DEFINE(HAVE_TM_GMTOFF,, Define if you have struct tm->tm_gmtoff)
fi
AC_MSG_RESULT($i_cv_field_tm_gmtoff)
dnl * how large time_t values does gmtime() accept?
AC_CACHE_CHECK([how large time_t values gmtime() accepts],i_cv_gmtime_max_time_t,[
AC_RUN_IFELSE([AC_LANG_SOURCE([[
#include <stdio.h>
#include <time.h>
int main() {
FILE *f;
int bits;
for (bits = 1; bits < sizeof(time_t)*8; bits++) {
time_t t = ((time_t)1 << bits) - 1;
if (gmtime(&t) == NULL) {
bits--;
break;
}
}
if (bits > 40) {
/* Solaris 9 breaks after 55 bits. Perhaps other systems break earlier.
Let's just do the same as Cyrus folks and limit it to 40 bits. */
bits = 40;
}
f = fopen("conftest.temp", "w");
if (f == NULL) {
perror("fopen()");
return 1;
}
fprintf(f, "%d", bits);
fclose(f);
return 0;
}
]])],[
i_cv_gmtime_max_time_t=`cat conftest.temp`
rm -f conftest.temp
], [
printf "check failed, assuming "
i_cv_gmtime_max_time_t=31
],[])
])
AC_DEFINE_UNQUOTED(TIME_T_MAX_BITS, $i_cv_gmtime_max_time_t, max. time_t bits gmtime() can handle)
AC_CACHE_CHECK([whether time_t is signed],i_cv_signed_time_t,[
AC_RUN_IFELSE([AC_LANG_SOURCE([[
#include <sys/types.h>
int main() {
/* return 0 if we're signed */
exit((time_t)(int)-1 <= 0 ? 0 : 1);
}
]])],[
i_cv_signed_time_t=yes
], [
i_cv_signed_time_t=no
])
])
if test $i_cv_signed_time_t = yes; then
AC_DEFINE(TIME_T_SIGNED,, Define if your time_t is signed)
fi
dnl Our implementation of AC_C_FLEXIBLE_ARRAY_MEMBER.
dnl Use it until autoconf 2.61+ becomes more widely used
AC_CACHE_CHECK([if we can use C99-like flexible array members],i_cv_c99_flex_arrays,[
AC_TRY_COMPILE([
struct foo {
int x;
char y[];
};
], [
struct foo foo;
], [
i_cv_c99_flex_arrays=yes
], [
i_cv_c99_flex_arrays=no
])
])
if test $i_cv_c99_flex_arrays = yes; then
flexible_value=
else
flexible_value=1
fi
AC_DEFINE_UNQUOTED(FLEXIBLE_ARRAY_MEMBER, $flexible_value, How to define flexible array members in structs)
dnl * do we have struct iovec
AC_MSG_CHECKING([for struct iovec])
AC_CACHE_VAL(i_cv_struct_iovec,
[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
#include <sys/types.h>
#include <sys/uio.h>
#include <unistd.h>]],
[[struct iovec *iovec;]])],
[i_cv_struct_iovec=yes],
[i_cv_struct_iovec=no])])
if test $i_cv_struct_iovec = yes; then
AC_DEFINE(HAVE_STRUCT_IOVEC,, Define if you have struct iovec)
fi
AC_MSG_RESULT($i_cv_struct_iovec)
dnl * is dev_t an integer or something else?
AC_CACHE_CHECK([whether dev_t is struct],i_cv_dev_t_struct,[
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
#include <sys/types.h>
struct test { dev_t a; };
static struct test t = { 0 };
]],
[[ ]])], [
i_cv_dev_t_struct=no
],[
i_cv_dev_t_struct=yes
])
])
if test $i_cv_dev_t_struct = yes; then
AC_DEFINE(DEV_T_STRUCT,, Define if your dev_t is a structure instead of integer type)
fi
dnl * Do we have RLIMIT_AS?
AC_CACHE_CHECK([whether RLIMIT_AS exists],i_cv_have_rlimit_as,[
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
#include <sys/types.h>
#include <sys/time.h>
#include <sys/resource.h>
]], [[
struct rlimit r;
getrlimit(RLIMIT_AS, &r);
]])],[
i_cv_have_rlimit_as=yes
], [
i_cv_have_rlimit_as=no
])
])
if test $i_cv_have_rlimit_as = yes; then
AC_DEFINE(HAVE_RLIMIT_AS,, Define if you have RLIMIT_AS for setrlimit())
fi
dnl * Do we have RLIMIT_NPROC?
AC_CACHE_CHECK([whether RLIMIT_NPROC exists],i_cv_have_rlimit_nproc,[
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
#include <sys/types.h>
#include <sys/time.h>
#include <sys/resource.h>
]], [[
struct rlimit r;
getrlimit(RLIMIT_NPROC, &r);
]])],[
i_cv_have_rlimit_nproc=yes
],[
i_cv_have_rlimit_nproc=no
])
])
if test $i_cv_have_rlimit_nproc = yes; then
AC_DEFINE(HAVE_RLIMIT_NPROC,, Define if you have RLIMIT_NPROC for setrlimit())
fi
dnl * Do we have RLIMIT_CORE?
AC_CACHE_CHECK([whether RLIMIT_CORE exists],i_cv_have_rlimit_core,[
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
#include <sys/types.h>
#include <sys/time.h>
#include <sys/resource.h>
]], [[
struct rlimit r;
getrlimit(RLIMIT_CORE, &r);
]])],[
i_cv_have_rlimit_core=yes
],[
i_cv_have_rlimit_core=no
])
])
if test $i_cv_have_rlimit_core = yes; then
AC_DEFINE(HAVE_RLIMIT_CORE,, Define if you have RLIMIT_CORE for getrlimit())
fi
AC_CACHE_CHECK([whether PR_SET_DUMPABLE exists],i_cv_have_pr_set_dumpable,[
AC_TRY_LINK([
#include <sys/prctl.h>
], [
prctl(PR_SET_DUMPABLE, 1, 0, 0, 0);
], [
i_cv_have_pr_set_dumpable=yes
], [
i_cv_have_pr_set_dumpable=no
])
])
if test $i_cv_have_pr_set_dumpable = yes; then
AC_DEFINE(HAVE_PR_SET_DUMPABLE,, Define if you have prctl(PR_SET_DUMPABLE))
fi
dnl * Linux compatible mremap()
AC_CACHE_CHECK([Linux compatible mremap()],i_cv_have_linux_mremap,[
AC_TRY_LINK([
#include <unistd.h>
#define __USE_GNU
#include <sys/mman.h>
], [
mremap(0, 0, 0, MREMAP_MAYMOVE);
], [
i_cv_have_linux_mremap=yes
], [
i_cv_have_linux_mremap=no
])
])
if test $i_cv_have_linux_mremap = yes; then
AC_DEFINE(HAVE_LINUX_MREMAP,, Define if you have Linux-compatible mremap())
fi
dnl * If mmap() plays nicely with write()
AC_CACHE_CHECK([whether shared mmaps get updated by write()s],i_cv_mmap_plays_with_write,[
AC_TRY_RUN([
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <fcntl.h>
#include <sys/mman.h>
int main() {
/* return 0 if we're signed */
int f = open("conftest.mmap", O_RDWR|O_CREAT|O_TRUNC, 0600);
void *mem;
if (f == -1) {
perror("open()");
return 1;
}
unlink("conftest.mmap");
write(f, "1", 2);
mem = mmap(NULL, 2, PROT_READ|PROT_WRITE, MAP_SHARED, f, 0);
if (mem == MAP_FAILED) {
perror("mmap()");
return 1;
}
strcpy(mem, "2");
msync(mem, 2, MS_SYNC);
lseek(f, 0, SEEK_SET);
write(f, "3", 2);
return strcmp(mem, "3") == 0 ? 0 : 1;
}
], [
i_cv_mmap_plays_with_write=yes
], [
i_cv_mmap_plays_with_write=no
])
])
if test $i_cv_mmap_plays_with_write = no; then
AC_DEFINE(MMAP_CONFLICTS_WRITE,, [Define if shared mmaps don't get updated by write()s])
fi
dnl * see if fd passing works
AC_CACHE_CHECK([whether fd passing works],i_cv_fd_passing,[
for i in 1 2; do
old_cflags="$CFLAGS"
CFLAGS="$CFLAGS -I$srcdir/src/lib $srcdir/src/lib/fdpass.c"
if test $i = 2; then
CFLAGS="$CFLAGS -DBUGGY_CMSG_MACROS"
fi
AC_TRY_RUN([
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/wait.h>
#include <sys/stat.h>
#include <unistd.h>
#include <fcntl.h>
#include "fdpass.h"
int nopen(void)
{
int i, n;
struct stat sb;
for (i = n = 0; i < 256; i++)
if (fstat(i, &sb) == 0) n++;
return n;
}
int main(void)
{
int fd[2], send_fd, recv_fd, status, n1, n2;
struct stat st, st2;
char data;
send_fd = creat("conftest.fdpass", 0600);
if (send_fd == -1) return 2;
unlink("conftest.fdpass");
if (fstat(send_fd, &st) < 0) return 2;
if (socketpair(AF_UNIX, SOCK_STREAM, 0, fd) < 0) return 2;
n1 = nopen();
switch (fork()) {
case -1:
return 2;
case 0:
alarm(1);
if (fd_send(fd[0], send_fd, &data, 1) != 1) return 2;
return 0;
default:
alarm(2);
if (wait(&status) == -1)
return 2;
if (status != 0)
return status;
if (fd_read(fd[1], &data, 1, &recv_fd) != 1) return 1;
if (fstat(recv_fd, &st2) < 0) return 2;
/* nopen check is for making sure that only a single fd
was received */
n2 = nopen();
return st.st_ino == st2.st_ino && n2 == n1 + 1 ? 0 : 1;
}
}
], [
CFLAGS=$old_cflags
if test $i = 2; then
i_cv_fd_passing=buggy_cmsg_macros
else
i_cv_fd_passing=yes
fi
break
], [
dnl no, try with BUGGY_CMSG_MACROS
CFLAGS=$old_cflags
i_cv_fd_passing=no
])
done
]);
case "$host_os" in
darwin[[1-9]].*)
if test "$i_cv_fd_passing" = "yes"; then
i_cv_fd_passing=buggy_cmsg_macros
fi
;;
esac
if test $i_cv_fd_passing = buggy_cmsg_macros; then
AC_DEFINE(BUGGY_CMSG_MACROS,, Define if you have buggy CMSG macros)
fi
if test $i_cv_fd_passing = no; then
AC_ERROR([fd passing is required for Dovecot to work])
fi
dnl * Solaris compatible sendfile()
AC_CHECK_LIB(sendfile, sendfile, [
LIBS="$LIBS -lsendfile"
AC_DEFINE(HAVE_SOLARIS_SENDFILE,, Define if you have Solaris-compatible sendfile())
], [
dnl * Linux compatible sendfile() - don't check if Solaris one was found.
dnl * This seems to pass with Solaris for some reason..
AC_CACHE_CHECK([Linux compatible sendfile()],i_cv_have_linux_sendfile,[
AC_TRY_LINK([
#undef _FILE_OFFSET_BITS
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/sendfile.h>
], [
sendfile(0, 0, (void *) 0, 0);
], [
i_cv_have_linux_sendfile=yes
], [
i_cv_have_linux_sendfile=no
])
])
if test $i_cv_have_linux_sendfile = yes; then
AC_DEFINE(HAVE_LINUX_SENDFILE,, Define if you have Linux-compatible sendfile())
fi
dnl * FreeBSD compatible sendfile()
AC_CACHE_CHECK([FreeBSD compatible sendfile()],i_cv_have_freebsd_sendfile,[
AC_TRY_LINK([
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/uio.h>
], [
struct sf_hdtr hdtr;
sendfile(0, 0, 0, 0, &hdtr, (void *) 0, 0);
], [
i_cv_have_freebsd_sendfile=yes
], [
i_cv_have_freebsd_sendfile=no
])
])
if test $i_cv_have_freebsd_sendfile = yes; then
AC_DEFINE(HAVE_FREEBSD_SENDFILE,, Define if you have FreeBSD-compatible sendfile())
fi
])
AC_CACHE_CHECK([if unsetenv returns int],i_cv_unsetenv_ret_int,[
AC_TRY_COMPILE([
#include <stdlib.h>
], [
if (unsetenv("env") < 0) ;
], [
i_cv_unsetenv_ret_int=yes
], [
i_cv_unsetenv_ret_int=no
])
])
if test $i_cv_unsetenv_ret_int = yes; then
AC_DEFINE(UNSETENV_RET_INT,, Define if unsetenv() returns int)
fi
dnl * Check for crypt() if unistd.h compiles with _XOPEN_SOURCE + _XPG6
dnl * Add other macros there too "just in case".
AC_CACHE_CHECK([if we should use _XPG6 macro for crypt()],i_cv_use_xpg6_crypt,[
AC_TRY_COMPILE([
#define _XOPEN_SOURCE 4
#define _XOPEN_SOURCE_EXTENDED 1
#define _XOPEN_VERSION 4
#define _XPG4_2
#define _XPG6
#include <unistd.h>
], [
crypt("a", "b");
], [
i_cv_use_xpg6_crypt=yes
], [
i_cv_use_xpg6_crypt=no
])
])
if test $i_cv_use_xpg6_crypt = yes; then
AC_DEFINE(CRYPT_USE_XPG6,, Define if _XPG6 macro is needed for crypt())
fi
AC_CACHE_CHECK([if struct stat has st_?tim timespec fields],i_cv_have_st_tim_timespec,[
AC_TRY_COMPILE([
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
], [
struct stat st;
unsigned long x = st.st_mtim.tv_nsec;
return 0;
], [
i_cv_have_st_tim_timespec=yes
], [
i_cv_have_st_tim_timespec=no
])
])
if test $i_cv_have_st_tim_timespec = yes; then
AC_DEFINE(HAVE_STAT_XTIM,, Define if you have st_?tim timespec fields in struct stat)
fi
AC_CACHE_CHECK([if struct stat has st_?timespec fields],i_cv_have_st_timespec,[
AC_TRY_COMPILE([
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
], [
struct stat st;
unsigned long x = st.st_mtimespec.tv_nsec;
return 0;
], [
i_cv_have_st_timespec=yes
], [
i_cv_have_st_timespec=no
])
])
if test $i_cv_have_st_timespec = yes; then
AC_DEFINE(HAVE_STAT_XTIMESPEC,, Define if you have st_?timespec fields in struct stat)
fi
dnl * Check if statvfs() can be used to find out block device for files
AC_CACHE_CHECK([if statvfs.f_mntfromname exists],i_cv_have_statvfs_f_mntfromname,[
AC_TRY_COMPILE([
#include <sys/types.h>
#include <sys/statvfs.h>
], [
struct statvfs buf;
char *p = buf.f_mntfromname;
statvfs(".", &buf);
], [
i_cv_have_statvfs_f_mntfromname=yes
], [
i_cv_have_statvfs_f_mntfromname=no
])
])
if test $i_cv_have_statvfs_f_mntfromname = yes; then
AC_DEFINE(HAVE_STATVFS_MNTFROMNAME,, Define if you have statvfs.f_mntfromname)
fi
dnl * Check if statfs() can be used to find out block device for files
AC_CACHE_CHECK([if statfs.f_mntfromname exists],i_cv_have_statfs_f_mntfromname,[
AC_TRY_COMPILE([
#include <sys/param.h>
#include <sys/mount.h>
], [
struct statfs buf;
char *p = buf.f_mntfromname;
statfs(".", &buf);
], [
i_cv_have_statfs_f_mntfromname=yes
], [
i_cv_have_statfs_f_mntfromname=no
])
])
if test $i_cv_have_statfs_f_mntfromname = yes; then
AC_DEFINE(HAVE_STATFS_MNTFROMNAME,, Define if you have statfs.f_mntfromname)
fi
dnl * Check if we have struct dqblk.dqb_curblocks
AC_CACHE_CHECK([if struct dqblk.dqb_curblocks exists],i_cv_have_dqblk_dqb_curblocks,[
AC_TRY_COMPILE([
#include <sys/types.h>
#include "$srcdir/src/plugins/quota/quota-fs.h"
], [
struct dqblk dqblk;
unsigned int x = dqblk.dqb_curblocks;
], [
i_cv_have_dqblk_dqb_curblocks=yes
], [
i_cv_have_dqblk_dqb_curblocks=no
])
])
if test $i_cv_have_dqblk_dqb_curblocks = yes; then
AC_DEFINE(HAVE_STRUCT_DQBLK_CURBLOCKS,, Define if struct sqblk.dqb_curblocks exists)
fi
dnl * Check if we have struct dqblk.dqb_curspace
AC_CACHE_CHECK([if struct dqblk.dqb_curspace exists],i_cv_have_dqblk_dqb_curspace,[
AC_TRY_COMPILE([
#include <sys/types.h>
#include "$srcdir/src/plugins/quota/quota-fs.h"
], [
struct dqblk dqblk;
unsigned int x = dqblk.dqb_curspace;
], [
i_cv_have_dqblk_dqb_curspace=yes
], [
i_cv_have_dqblk_dqb_curspace=no
])
])
if test $i_cv_have_dqblk_dqb_curspace = yes; then
AC_DEFINE(HAVE_STRUCT_DQBLK_CURSPACE,, Define if struct sqblk.dqb_curspace exists)
fi
dnl * Check if we have Q_QUOTACTL ioctl (Solaris)
AC_CACHE_CHECK([if Q_QUOTACTL ioctl exists],i_cv_have_ioctl_q_quotactl,[
AC_TRY_COMPILE([
#include <sys/types.h>
#include <sys/fs/ufs_quota.h>
], [
struct quotctl ctl;
ioctl(0, Q_QUOTACTL, &ctl);
], [
i_cv_have_ioctl_q_quotactl=yes
], [
i_cv_have_ioctl_q_quotactl=no
])
])
if test $i_cv_have_ioctl_q_quotactl = yes; then
AC_DEFINE(HAVE_Q_QUOTACTL,, Define if Q_QUOTACTL exists)
fi
dnl ***
dnl *** C99 vsnprintf()?
dnl ***
AC_CACHE_CHECK([for C99 vsnprintf()],i_cv_c99_vsnprintf,[
AC_RUN_IFELSE([AC_LANG_SOURCE([[
#include <stdio.h>
#include <stdarg.h>
static int f(const char *fmt, ...) {
va_list args;
char buf[13];
int ret;
va_start(args, fmt);
ret = vsnprintf(buf, 11, fmt, args) != 12 || buf[11-1] != '\0';
va_end(args);
return ret;
}
int main() {
return f("hello %s%d", "world", 1);
}]])],
[i_cv_c99_vsnprintf=yes],
[i_cv_c99_vsnprintf=no])
])
if test $i_cv_c99_vsnprintf = no; then
AC_DEFINE(HAVE_OLD_VSNPRINTF,, Define if you don't have C99 compatible vsnprintf() call)
fi
dnl ***
dnl *** va_copy checks (from GLIB)
dnl ***
AC_CACHE_CHECK([for an implementation of va_copy()],lib_cv_va_copy,[
AC_RUN_IFELSE([AC_LANG_SOURCE([[
#include <stdarg.h>
void f (int i, ...) {
va_list args1, args2;
va_start (args1, i);
va_copy (args2, args1);
if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
exit (1);
va_end (args1); va_end (args2);
}
int main() {
f (0, 42);
return 0;
}]])],
[lib_cv_va_copy=yes],
[lib_cv_va_copy=no],[])
])
AC_CACHE_CHECK([for an implementation of __va_copy()],lib_cv___va_copy,[
AC_RUN_IFELSE([AC_LANG_SOURCE([[
#include <stdarg.h>
void f (int i, ...) {
va_list args1, args2;
va_start (args1, i);
__va_copy (args2, args1);
if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
exit (1);
va_end (args1); va_end (args2);
}
int main() {
f (0, 42);
return 0;
}]])],
[lib_cv___va_copy=yes],
[lib_cv___va_copy=no],[])
])
if test "x$lib_cv_va_copy" = "xyes"; then
va_copy_func=va_copy
else if test "x$lib_cv___va_copy" = "xyes"; then
va_copy_func=__va_copy
fi
fi
if test -n "$va_copy_func"; then
AC_DEFINE_UNQUOTED(VA_COPY,$va_copy_func,[A 'va_copy' style function])
fi
AC_CACHE_CHECK([whether va_lists can be copied by value],lib_cv_va_val_copy,[
AC_RUN_IFELSE([AC_LANG_SOURCE([[
#include <stdarg.h>
void f (int i, ...) {
va_list args1, args2;
va_start (args1, i);
args2 = args1;
if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
exit (1);
va_end (args1); va_end (args2);
}
int main() {
f (0, 42);
return 0;
}]])],
[lib_cv_va_val_copy=yes],
[lib_cv_va_val_copy=no],[])
])
if test "x$lib_cv_va_val_copy" = "xno"; then
AC_DEFINE(VA_COPY_AS_ARRAY,1, ['va_lists' cannot be copies as values])
fi
dnl * dynamic modules?
have_modules=no
AC_CHECK_FUNC(dlopen, [
have_modules=yes
MODULE_LIBS="-export-dynamic"
], [
AC_CHECK_LIB(dl, dlopen, [
have_modules=yes
MODULE_LIBS="-export-dynamic -ldl"
DLLIB=-ldl
])
])
dnl **
dnl ** AIX mntctl
dnl **
if test $ac_cv_header_sys_vmount_h = yes; then
AC_MSG_CHECKING([for reasonable mntctl buffer size])
AC_RUN_IFELSE([AC_LANG_SOURCE([[
#include <stdio.h>
#include <stdlib.h>
#include <sys/vmount.h>
int main() {
int size,count; char *m;
FILE *f=fopen("conftestval", "w");
if (!f) exit(1);
if ((count=mntctl(MCTL_QUERY,sizeof(size),&size))!=0 || !(m=malloc(size)) ||
(count=mntctl(MCTL_QUERY,size,m))<=0) exit(1);
fprintf(f, "%d\n",(size * (count + 5))/count & ~1); /* 5 mounts more */
exit(0);
}
]])],[
size=`cat conftestval`
rm -f conftestval
AC_DEFINE_UNQUOTED(STATIC_MTAB_SIZE,$size, reasonable mntctl buffer size)
AC_MSG_RESULT($size)
],[
AC_MSG_RESULT(default)
])
fi
dnl **
dnl ** SSL
dnl **
have_ssl=no
if test $want_openssl != no && test $have_ssl = no; then
if test "$PKG_CONFIG" != "" && $PKG_CONFIG --exists openssl 2>/dev/null; then
PKG_CHECK_MODULES(SSL, openssl)
CFLAGS="$CFLAGS $SSL_CFLAGS"
have_openssl=yes
else
# openssl 0.9.8 wants -ldl and it's required if there's only .a lib
AC_CHECK_LIB(ssl, SSL_read, [
AC_CHECK_HEADERS(openssl/ssl.h openssl/err.h, [
SSL_LIBS="-lssl -lcrypto $DLLIB"
AC_SUBST(SSL_LIBS)
have_openssl=yes
], [
if test $want_openssl = yes; then
AC_ERROR([Can't build with OpenSSL: openssl/ssl.h or openssl/err.h not found])
fi
])
], [
if test $want_openssl = yes; then
AC_ERROR([Can't build with OpenSSL: libssl not found])
fi
], -lcrypto $DLLIB)
fi
if test "$have_openssl" = "yes"; then
AC_DEFINE(HAVE_OPENSSL,, Build with OpenSSL support)
have_ssl="yes (OpenSSL)"
AC_CHECK_LIB(ssl, SSL_get_current_compression, [
AC_DEFINE(HAVE_SSL_COMPRESSION,, Build with OpenSSL compression)
],, $SSL_LIBS)
AC_CHECK_LIB(ssl, SSL_get_servername, [
AC_DEFINE(HAVE_SSL_GET_SERVERNAME,, Build with TLS hostname support)
],, $SSL_LIBS)
fi
fi
AM_CONDITIONAL(BUILD_OPENSSL, test "$have_openssl" = "yes")
if test $want_gnutls != no && test $have_ssl = no; then
AC_CHECK_LIB(gnutls, gnutls_global_init, [
AC_CHECK_HEADER(gnutls/gnutls.h, [
AC_DEFINE(HAVE_GNUTLS,, Build with GNUTLS support)
SSL_LIBS="-lgnutls -lgcrypt"
AC_SUBST(SSL_LIBS)
have_ssl="yes (GNUTLS)"
have_gnutls=yes
], [
if test $want_gnutls = yes; then
AC_ERROR([Can't build with GNUTLS: gnutls/gnutls.h not found])
fi
])
], [
if test $want_gnutls = yes; then
AC_ERROR([Can't build with GNUTLS: libgnutls not found])
fi
], -lgcrypt)
fi
if test "$have_ssl" != "no"; then
AC_DEFINE(HAVE_SSL,, Build with SSL/TLS support)
fi
dnl **
dnl ** Garbage Collector
dnl **
if test $want_gc != no; then
AC_CHECK_LIB(gc, GC_malloc, [
AC_CHECK_HEADERS(gc/gc.h gc.h)
AC_DEFINE(USE_GC,, Define if you want to use Boehm GC)
LIBS="$LIBS -lgc"
], [
if test $want_gc = yes; then
AC_ERROR([Can't build with GC: libgc not found])
fi
])
fi
dnl **
dnl ** userdb and passdb checks
dnl **
userdb=""
passdb=""
not_userdb=""
not_passdb=""
passdb="$passdb static"
userdb="$userdb static"
if test $want_prefetch_userdb != no; then
AC_DEFINE(USERDB_PREFETCH,, Build with prefetch userdb support)
userdb="$userdb prefetch"
else
not_userdb="$not_userdb prefetch"
fi
if test $want_passwd != no; then
AC_DEFINE(USERDB_PASSWD,, Build with passwd support)
AC_DEFINE(PASSDB_PASSWD,, Build with passwd support)
userdb="$userdb passwd"
passdb="$passdb passwd"
else
not_passdb="$not_passdb passwd"
not_userdb="$not_userdb passwd"
fi
if test $want_passwd_file != no; then
AC_DEFINE(USERDB_PASSWD_FILE,, Build with passwd-file support)
AC_DEFINE(PASSDB_PASSWD_FILE,, Build with passwd-file support)
userdb="$userdb passwd-file"
passdb="$passdb passwd-file"
else
not_passdb="$not_passdb passwd-file"
not_userdb="$not_userdb passwd-file"
fi
have_shadow=no
if test $want_shadow != no; then
AC_CHECK_FUNC(getspnam, [
AC_CHECK_HEADER(shadow.h, [
AC_DEFINE(PASSDB_SHADOW,, Build with shadow support)
have_shadow=yes
], [
if test $want_shadow = yes; then
AC_ERROR([Can't build with shadow support: shadow.h not found])
fi
])
], [
if test $want_shadow = yes; then
AC_ERROR([Can't build with shadow support: getspnam() not found])
fi
])
fi
if test $have_shadow = no; then
not_passdb="$not_passdb shadow"
else
passdb="$passdb shadow"
fi
if test $want_pam != no; then
AC_CHECK_LIB(pam, pam_start, [
have_pam=no
AC_CHECK_HEADER(security/pam_appl.h, [
AC_DEFINE(HAVE_SECURITY_PAM_APPL_H,,
Define if you have security/pam_appl.h)
have_pam=yes
])
AC_CHECK_HEADER(pam/pam_appl.h, [
AC_DEFINE(HAVE_PAM_PAM_APPL_H,,
Define if you have pam/pam_appl.h)
have_pam=yes
])
], [
if test $want_pam = yes; then
AC_ERROR([Can't build with PAM support: libpam not found])
fi
])
fi
if test "$have_pam" = "yes"; then
AUTH_LIBS="$AUTH_LIBS -lpam"
AC_DEFINE(PASSDB_PAM,, Build with PAM support)
passdb="$passdb pam"
AC_CHECK_LIB(pam, pam_setcred, [
AC_DEFINE(HAVE_PAM_SETCRED,, Define if you have pam_setcred())
])
elif test $want_pam = yes; then
AC_ERROR([Can't build with PAM support: pam_appl.h not found])
else
not_passdb="$not_passdb pam"
fi
if test $want_checkpassword != no; then
AC_DEFINE(PASSDB_CHECKPASSWORD,, Build with checkpassword passdb support)
AC_DEFINE(USERDB_CHECKPASSWORD,, Build with checkpassword userdb support)
passdb="$passdb checkpassword"
userdb="$userdb checkpassword"
else
not_passdb="$not_passdb checkpassword"
not_userdb="$not_userdb checkpassword"
fi
have_bsdauth=no
if test $want_bsdauth != no; then
AC_CHECK_FUNC(auth_userokay, [
AC_DEFINE(PASSDB_BSDAUTH,, Build with BSD authentication support)
have_bsdauth=yes
], [
if test $want_bsdauth = yes; then
AC_ERROR([Can't build with BSD authentication support: auth_userokay() not found])
fi
])
fi
if test $have_bsdauth = no; then
not_passdb="$not_passdb bsdauth"
else
passdb="$passdb bsdauth"
fi
have_gssapi=no
if test $want_gssapi != no; then
AC_CHECK_PROG(KRB5CONFIG, krb5-config, krb5-config, NO)
if test $KRB5CONFIG != NO; then
if ! $KRB5CONFIG --version gssapi 2>/dev/null > /dev/null; then
# krb5-config doesn't support gssapi.
KRB5_LIBS="`$KRB5CONFIG --libs`"
KRB5_CFLAGS=`$KRB5CONFIG --cflags`
AC_CHECK_LIB(gss, gss_acquire_cred, [
# Solaris
KRB5_LIBS="$KRB5_LIBS -lgss"
], [
# failed
KRB5_LIBS=
], $KRB5_LIBS)
else
KRB5_LIBS=`$KRB5CONFIG --libs gssapi`
KRB5_CFLAGS=`$KRB5CONFIG --cflags gssapi`
fi
if test "$KRB5_LIBS" != ""; then
AC_SUBST(KRB5_LIBS)
AC_SUBST(KRB5_CFLAGS)
# Although krb5-config exists, all systems still don't
# have gssapi.h
old_CFLAGS=$CFLAGS
CFLAGS="$CFLAGS $KRB5_CFLAGS"
AC_CHECK_HEADER([gssapi/gssapi.h], [
AC_DEFINE(HAVE_GSSAPI_GSSAPI_H,, GSSAPI headers in gssapi/gssapi.h)
have_gssapi=yes
])
AC_CHECK_HEADER([gssapi.h], [
AC_DEFINE(HAVE_GSSAPI_H,, GSSAPI headers in gssapi.h)
have_gssapi=yes
])
if test $have_gssapi != no; then
if test $want_gssapi = plugin; then
have_gssapi=plugin
fi
AC_DEFINE(HAVE_GSSAPI,, Build with GSSAPI support)
AC_CHECK_HEADERS(gssapi/gssapi_ext.h gssapi_krb5.h gssapi/gssapi_krb5.h)
AC_CHECK_LIB(gss, __gss_userok, [
AC_DEFINE(HAVE___GSS_USEROK,,
Define if you have __gss_userok())
KRB5_LIBS="$KRB5_LIBS -lgss"
],, $KRB5_LIBS)
# MIT has a #define for Heimdal acceptor_identity, but it's way too
# difficult to test for it..
old_LIBS=$LIBS
LIBS="$LIBS $KRB5_LIBS"
AC_CHECK_FUNCS(gsskrb5_register_acceptor_identity krb5_gss_register_acceptor_identity)
# does the kerberos library support SPNEGO?
AC_CACHE_CHECK([whether GSSAPI supports SPNEGO],i_cv_gssapi_spnego,[
AC_TRY_RUN([
#ifdef HAVE_GSSAPI_H
# include <gssapi.h>
#else
# include <gssapi/gssapi.h>
#endif
#include <krb5.h>
#include <string.h>
int main(void) {
OM_uint32 minor_status;
gss_OID_set mech_set;
unsigned char spnego_oid[] = { 0x2b, 0x06, 0x01, 0x05, 0x05, 0x02 };
unsigned int i;
gss_indicate_mechs(&minor_status, &mech_set);
for (i = 0; i < mech_set->count; i++) {
if (mech_set->elements[i].length == 6 &&
memcmp(mech_set->elements[i].elements,
spnego_oid, 6) == 0)
return 0;
}
return 1;
}
], [
i_cv_gssapi_spnego=yes
], [
i_cv_gssapi_spnego=no
])
])
if test "$i_cv_gssapi_spnego" = "yes"; then
AC_DEFINE(HAVE_GSSAPI_SPNEGO,, GSSAPI supports SPNEGO)
fi
LIBS=$old_LIBS
if test $want_gssapi != plugin; then
AUTH_LIBS="$AUTH_LIBS $KRB5_LIBS"
AUTH_CFLAGS="$AUTH_CFLAGS $KRB5_CFLAGS"
AC_DEFINE(BUILTIN_GSSAPI,, GSSAPI support is built in)
else
have_gssapi_plugin=yes
fi
else
if test $want_gssapi != auto; then
AC_ERROR([Can't build with GSSAPI support: gssapi.h not found])
fi
fi
CFLAGS=$old_CFLAGS
fi
else
if test $want_gssapi != auto; then
AC_ERROR([Can't build with GSSAPI support: krb5-config not found])
fi
fi
fi
AM_CONDITIONAL(GSSAPI_PLUGIN, test "$have_gssapi_plugin" = "yes")
have_sia=no
if test $want_sia != no; then
AC_CHECK_FUNC(sia_validate_user, [
AC_DEFINE(PASSDB_SIA,, Build with Tru64 SIA support)
AUTH_LIBS="$AUTH_LIBS -depth_ring_search"
have_sia=yes
], [
if test $want_sia = yes; then
AC_ERROR([Can't build with SIA support: sia_validate_user() not found])
fi
])
fi
if test $have_sia = no; then
not_passdb="$not_passdb sia"
else
passdb="$passdb sia"
fi
have_ldap=no
if test $want_ldap != no; then
AC_CHECK_LIB(ldap, ldap_init, [
AC_CHECK_HEADER(ldap.h, [
AC_CHECK_LIB(ldap, ldap_initialize, [
AC_DEFINE(LDAP_HAVE_INITIALIZE,, Define if you have ldap_initialize)
])
AC_CHECK_LIB(ldap, ldap_start_tls_s, [
AC_DEFINE(LDAP_HAVE_START_TLS_S,, Define if you have ldap_start_tls_s)
])
LDAP_LIBS="-lldap"
AC_CHECK_LIB(ldap, ber_free, [
# do nothing, default is to add -lldap to LIBS
:
], [
AC_CHECK_LIB(lber, ber_free, [
LDAP_LIBS="$LDAP_LIBS -llber"
])
])
AC_SUBST(LDAP_LIBS)
if test $want_ldap != plugin; then
AUTH_LIBS="$AUTH_LIBS $LDAP_LIBS"
AC_DEFINE(BUILTIN_LDAP,, LDAP support is built in)
fi
AC_DEFINE(USERDB_LDAP,, Build with LDAP support)
AC_DEFINE(PASSDB_LDAP,, Build with LDAP support)
AC_CHECK_HEADERS(sasl.h sasl/sasl.h)
have_ldap=yes
], [
if test $want_ldap != auto; then
AC_ERROR([Can't build with LDAP support: ldap.h not found])
fi
])
], [
if test $want_ldap != auto; then
AC_ERROR([Can't build with LDAP support: libldap not found])
fi
])
fi
if test $have_ldap = no; then
not_passdb="$not_passdb ldap"
not_userdb="$not_userdb ldap"
else
userdb="$userdb ldap"
passdb="$passdb ldap"
if test $want_ldap = plugin; then
have_ldap_plugin=yes
userdb="$userdb (plugin)"
passdb="$passdb (plugin)"
fi
fi
AM_CONDITIONAL(LDAP_PLUGIN, test "$have_ldap_plugin" = "yes")
dict_drivers=
if test $want_db != no; then
AC_CACHE_CHECK([db_env_create in -ldb],i_cv_have_db_env_create,[
old_LIBS=$LIBS
LIBS="$LIBS -ldb"
AC_TRY_LINK([
#include <db.h>
], [
db_env_create(0, 0);
], [
i_cv_have_db_env_create=yes
], [
i_cv_have_db_env_create=no
])
LIBS=$old_LIBS
])
if test $i_cv_have_db_env_create = yes; then
AC_CHECK_HEADER(db.h, [
DICT_LIBS="$DICT_LIBS -ldb"
dict_drivers="$dict_drivers db"
AC_DEFINE(BUILD_DB,, Build with Berkeley DB support)
], [
if test $want_db = yes; then
AC_ERROR([Can't build with db support: db.h not found])
fi
])
else
if test $want_db = yes; then
AC_ERROR([Can't build with db support: libdb not found])
fi
fi
fi
if test $want_pgsql != no; then
AC_CHECK_PROG(PG_CONFIG, pg_config, pg_config, NO)
if test $PG_CONFIG = NO; then
# based on code from PHP
for i in /usr /usr/local /usr/local/pgsql; do
for j in include include/pgsql include/postgres include/postgresql ""; do
if test -r "$i/$j/libpq-fe.h"; then
PGSQL_INCLUDE=$i/$j
fi
done
for lib in lib lib64; do
for j in $lib $lib/pgsql $lib/postgres $lib/postgresql ""; do
if test -f "$i/$j/libpq.so" || test -f "$i/$j/libpq.a"; then
PGSQL_LIBDIR=$i/$j
fi
done
done
done
else
PGSQL_INCLUDE="`$PG_CONFIG --includedir`"
PGSQL_LIBDIR="`$PG_CONFIG --libdir`"
fi
old_LIBS=$LIBS
if test "$PGSQL_LIBDIR" != ""; then
LIBS="$LIBS -L$PGSQL_LIBDIR"
fi
AC_CHECK_LIB(pq, PQconnectdb, [
AC_CHECK_LIB(pq, PQescapeStringConn, [
AC_DEFINE(HAVE_PQESCAPE_STRING_CONN,, Define if libpq has PQescapeStringConn function)
])
old_CPPFLAGS=$CPPFLAGS
if test "$PGSQL_INCLUDE" != ""; then
CPPFLAGS="$CPPFLAGS -I$PGSQL_INCLUDE"
fi
AC_CHECK_HEADER(libpq-fe.h, [
if test "$PGSQL_INCLUDE" != ""; then
PGSQL_CFLAGS="$PGSQL_CFLAGS -I$PGSQL_INCLUDE"
fi
if test "$PGSQL_LIBDIR" != ""; then
PGSQL_LIBS="$PGSQL_LIBS -L$PGSQL_LIBDIR"
fi
PGSQL_LIBS="$PGSQL_LIBS -lpq"
AC_DEFINE(HAVE_PGSQL,, Build with PostgreSQL support)
found_sql_drivers="$found_sql_drivers pgsql"
], [
if test $want_pgsql = yes; then
AC_ERROR([Can't build with PostgreSQL support: libpq-fe.h not found])
fi
])
CPPFLAGS=$old_CPPFLAGS
], [
if test $want_pgsql = yes; then
AC_ERROR([Can't build with PostgreSQL support: libpq not found])
fi
])
LIBS=$old_LIBS
fi
have_mysql=no
if test $want_mysql != no; then
AC_CHECK_PROG(MYSQL_CONFIG, mysql_config, mysql_config, NO)
if test $MYSQL_CONFIG = NO; then
# based on code from PHP
MYSQL_LIBS="-lmysqlclient -lz -lm"
for i in /usr /usr/local /usr/local/mysql; do
for j in include include/mysql ""; do
if test -r "$i/$j/mysql.h"; then
MYSQL_INCLUDE="-I$i/$j"
fi
done
for j in lib lib/mysql lib64 lib64/mysql ""; do
if test -f "$i/$j/libmysqlclient.so" || test -f "$i/$j/libmysqlclient.a"; then
MYSQL_LIBS="-L$i/$j -lmysqlclient -lz -lm"
fi
done
done
else
MYSQL_INCLUDE="`$MYSQL_CONFIG --include`"
MYSQL_LIBS="`$MYSQL_CONFIG --libs`"
fi
old_LIBS=$LIBS
if test "$MYSQL_LIBS" != ""; then
LIBS="$LIBS $MYSQL_LIBS"
fi
mysql_lib=""
LIBS="$LIBS -lz -lm"
AC_CHECK_LIB(mysqlclient, mysql_init, [
old_CPPFLAGS=$CPPFLAGS
if test "$MYSQL_INCLUDE" != ""; then
CPPFLAGS="$CPPFLAGS $MYSQL_INCLUDE"
fi
AC_CHECK_HEADER(mysql.h, [
if test "$MYSQL_INCLUDE" != ""; then
MYSQL_CFLAGS="$MYSQL_CFLAGS $MYSQL_INCLUDE"
fi
AC_CHECK_LIB(mysqlclient, mysql_ssl_set, [
AC_DEFINE(HAVE_MYSQL_SSL,, Define if your MySQL library has SSL functions)
if test "x$have_openssl" = "yes"; then
ssl_define="#define HAVE_OPENSSL"
else
ssl_define=""
fi
AC_TRY_COMPILE([
$ssl_define
#include <mysql.h>
], [
mysql_set_ssl(0, 0, 0, 0, 0, 0);
], [
AC_DEFINE(HAVE_MYSQL_SSL_CIPHER,, Define if your MySQL library supports setting cipher)
])
])
have_mysql=yes
AC_DEFINE(HAVE_MYSQL,, Build with MySQL support)
found_sql_drivers="$found_sql_drivers mysql"
], [
if test $want_mysql = yes; then
AC_ERROR([Can't build with MySQL support: mysql.h not found])
fi
])
CPPFLAGS=$old_CPPFLAGS
], [
if test $want_mysql = yes; then
AC_ERROR([Can't build with MySQL support: libmysqlclient not found])
fi
])
if test $have_mysql != yes; then
MYSQL_LIBS=
MYSQL_CFLAGS=
fi
LIBS=$old_LIBS
fi
if test $want_sqlite != no; then
AC_CHECK_LIB(sqlite3, sqlite3_open, [
AC_CHECK_HEADER(sqlite3.h, [
SQLITE_LIBS="$SQLITE_LIBS -lsqlite3 -lz"
AC_DEFINE(HAVE_SQLITE,, Build with SQLite3 support)
found_sql_drivers="$found_sql_drivers sqlite"
], [
if test $want_sqlite = yes; then
AC_ERROR([Can't build with SQLite support: sqlite3.h not found])
fi
])
], [
if test $want_sqlite = yes; then
AC_ERROR([Can't build with SQLite support: libsqlite3 not found])
fi
])
fi
SQL_CFLAGS="$MYSQL_CFLAGS $PGSQL_CFLAGS $SQLITE_CFLAGS"
if test "$want_sql" != "plugin"; then
SQL_LIBS="$MYSQL_LIBS $PGSQL_LIBS $SQLITE_LIBS"
else
AC_DEFINE(SQL_DRIVER_PLUGINS,, Build SQL drivers as plugins)
fi
sql_drivers=
not_sql_drivers=
if test "$found_sql_drivers" != "" || test "$want_sql" != "no"; then
sql_drivers="$found_sql_drivers"
AC_DEFINE(PASSDB_SQL,, Build with SQL support)
AC_DEFINE(USERDB_SQL,, Build with SQL support)
AUTH_LIBS="$AUTH_LIBS $SQL_LIBS"
passdb="$passdb sql"
userdb="$userdb sql"
else
not_passdb="$not_passdb sql"
not_userdb="$not_userdb sql"
fi
have_vpopmail=no
if test $want_vpopmail != no; then
vpop_etc="$vpopmail_home/etc"
AC_MSG_CHECKING([for vpopmail configuration at $vpop_etc/lib_deps])
if ! test -f $vpop_etc/lib_deps; then
AC_MSG_RESULT(not found)
vpop_etc="$vpopmail_home"
AC_MSG_CHECKING([for vpopmail configuration at $vpop_etc/lib_deps])
fi
if test -f $vpop_etc/lib_deps; then
AUTH_CFLAGS="$AUTH_CFLAGS `cat $vpop_etc/inc_deps` $CFLAGS"
AUTH_LIBS="$AUTH_LIBS `cat $vpop_etc/lib_deps`"
AC_DEFINE(USERDB_VPOPMAIL,, Build with vpopmail support)
AC_DEFINE(PASSDB_VPOPMAIL,, Build with vpopmail support)
AC_MSG_RESULT(found)
have_vpopmail=yes
else
AC_MSG_RESULT(not found)
if test $want_vpopmail = yes; then
AC_ERROR([Can't build with vpopmail support: $vpop_etc/lib_deps not found])
fi
fi
fi
if test $have_vpopmail = no; then
not_passdb="$not_passdb vpopmail"
not_userdb="$not_userdb vpopmail"
else
userdb="$userdb vpopmail"
passdb="$passdb vpopmail"
fi
AC_CHECK_FUNC(crypt,, [
AC_CHECK_LIB(crypt, crypt, [
AUTH_LIBS="-lcrypt $AUTH_LIBS"
CRYPT_LIBS="-lcrypt"
], [
AC_MSG_ERROR([crypt() wasn't found])
])
])
AC_SUBST(CRYPT_LIBS)
if test $have_modules = yes; then
AC_DEFINE(HAVE_MODULES,, Define if you have dynamic module support)
AC_SUBST(MODULE_LIBS)
# shrext_cmds comes from libtool.m4
module=yes eval MODULE_SUFFIX=$shrext_cmds
if test "$MODULE_SUFFIX" = ""; then
# too old libtool?
MODULE_SUFFIX=.so
fi
AC_DEFINE_UNQUOTED(MODULE_SUFFIX,"$MODULE_SUFFIX",Dynamic module suffix)
AC_SUBST(MODULE_SUFFIX)
fi
have_nss=no
if test $want_nss != no; then
if test $have_modules != yes; then
if test $want_nss = yes; then
AC_ERROR([Can't build with NSS support: Dynamic modules not supported])
fi
else
AC_CACHE_CHECK([for NSS support],i_cv_have_nss,[
AC_TRY_COMPILE([
#include <nss.h>
], [
enum nss_status status = NSS_STATUS_TRYAGAIN;
], [
i_cv_have_nss=yes
], [
i_cv_have_nss=no
])
])
if test $i_cv_have_nss = yes; then
AC_DEFINE(USERDB_NSS,, Build with NSS module support)
have_nss=yes
else
if test $want_nss = yes; then
AC_ERROR([Can't build with NSS support: nss.h not found or not usable])
fi
fi
fi
fi
if test $have_nss = no; then
not_userdb="$not_userdb nss"
else
userdb="$userdb nss"
fi
AC_SUBST(AUTH_CFLAGS)
AC_SUBST(AUTH_LIBS)
AC_SUBST(SQL_CFLAGS)
AC_SUBST(SQL_LIBS)
AC_SUBST(MYSQL_CFLAGS)
AC_SUBST(MYSQL_LIBS)
AC_SUBST(PGSQL_CFLAGS)
AC_SUBST(PGSQL_LIBS)
AC_SUBST(SQLITE_CFLAGS)
AC_SUBST(SQLITE_LIBS)
AC_SUBST(DICT_LIBS)
AC_SUBST(dict_drivers)
dnl **
dnl ** Endianess
dnl **
dnl At least Apple's gcc supports __BIG_ENDIAN__ and __LITTLE_ENDIAN__
dnl defines. Use them if possible to allow cross-compiling.
AC_CACHE_CHECK([if __BIG_ENDIAN__ or __LITTLE_ENDIAN__ is defined],i_cv_have___big_endian__,[
AC_TRY_COMPILE([
#if !(__BIG_ENDIAN__ || __LITTLE_ENDIAN__)
#error nope
#endif
], [
], [
i_cv_have___big_endian__=yes
], [
i_cv_have___big_endian__=no
])
])
if test $i_cv_have___big_endian__ = yes; then
AC_DEFINE(WORDS_BIGENDIAN, __BIG_ENDIAN__, Define if your CPU is big endian)
else
AC_C_BIGENDIAN
fi
dnl **
dnl ** IPv6 support
dnl **
have_ipv6=no
AC_MSG_CHECKING([for IPv6])
AC_CACHE_VAL(i_cv_type_in6_addr,
[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>
#include <arpa/inet.h>]],
[[struct in6_addr i;]])],
[i_cv_type_in6_addr=yes],
[i_cv_type_in6_addr=no])])
if test $i_cv_type_in6_addr = yes; then
AC_DEFINE(HAVE_IPV6,, Build with IPv6 support)
have_ipv6=yes
fi
AC_MSG_RESULT($i_cv_type_in6_addr)
dnl **
dnl ** storage classes
dnl **
maildir_libs='$(top_builddir)/src/lib-storage/index/maildir/libstorage_maildir.la'
mbox_libs='$(top_builddir)/src/lib-storage/index/mbox/libstorage_mbox.la'
dbox_common_libs='$(top_builddir)/src/lib-storage/index/dbox-common/libstorage_dbox_common.la'
sdbox_libs='$(top_builddir)/src/lib-storage/index/dbox-single/libstorage_dbox_single.la'
mdbox_libs='$(top_builddir)/src/lib-storage/index/dbox-multi/libstorage_dbox_multi.la'
cydir_libs='$(top_builddir)/src/lib-storage/index/cydir/libstorage_cydir.la'
imapc_libs='$(top_builddir)/src/lib-storage/index/imapc/libstorage_imapc.la $(top_builddir)/src/lib-imap-client/libimap_client.la'
pop3c_libs='$(top_builddir)/src/lib-storage/index/pop3c/libstorage_pop3c.la'
raw_libs='$(top_builddir)/src/lib-storage/index/raw/libstorage_raw.la'
shared_libs='$(top_builddir)/src/lib-storage/index/shared/libstorage_shared.la'
CORE_LIBS='$(top_builddir)/src/lib-dovecot/libdovecot.la'
STORAGE_LIB='$(top_builddir)/src/lib-storage/libdovecot-storage.la'
LINKED_STORAGE_LIBS=
mailbox_list_drivers="maildir imapdir fs index none shared"
have_sdbox=no
for storage in $mail_storages; do
LINKED_STORAGE_LIBS="$LINKED_STORAGE_LIBS `eval echo \\$${storage}_libs`"
if test $storage = sdbox; then
have_sdbox=yes
fi
if test $storage = sdbox || test $storage = mdbox; then
LINKED_STORAGE_LIBS="$LINKED_STORAGE_LIBS $dbox_common_libs"
dbox_common_libs=""
fi
if test $storage = imapc; then
mailbox_list_drivers="$mailbox_list_drivers imapc"
fi
done
LINKED_STORAGE_LDADD=
AC_SUBST(LINKED_STORAGE_LIBS)
AC_SUBST(LINKED_STORAGE_LDADD)
AC_SUBST(mailbox_list_drivers)
AC_DEFINE_UNQUOTED(MAIL_STORAGES, "$mail_storages", List of compiled in mail storages)
if test $have_sdbox = yes; then
# create alias for sdbox
mail_storages="$mail_storages dbox"
fi
dnl **
dnl ** Shared libraries usage
dnl **
if test "$want_shared_libs" = "yes"; then
LIBDOVECOT_DEPS='$(top_builddir)/src/lib-dovecot/libdovecot.la'
LIBDOVECOT="$LIBDOVECOT_DEPS"
LIBDOVECOT_STORAGE_DEPS='$(top_builddir)/src/lib-storage/libdovecot-storage.la $(top_builddir)/src/lib-imap-storage/libimap-storage.la'
LIBDOVECOT_LOGIN='$(top_builddir)/src/login-common/libdovecot-login.la'
LIBDOVECOT_COMPRESS='$(top_builddir)/src/lib-compression/libcompression.la'
LIBDOVECOT_LDA='$(top_builddir)/src/lib-lda/libdovecot-lda.la'
else
LIBDOVECOT_DEPS='$(top_builddir)/src/lib-master/libmaster.la $(top_builddir)/src/lib-settings/libsettings.la $(top_builddir)/src/lib-http/libhttp.la $(top_builddir)/src/lib-dict/libdict.la $(top_builddir)/src/lib-dns/libdns.la $(top_builddir)/src/lib-fs/libfs.la $(top_builddir)/src/lib-imap/libimap.la $(top_builddir)/src/lib-mail/libmail.la $(top_builddir)/src/lib-auth/libauth.la $(top_builddir)/src/lib-charset/libcharset.la $(top_builddir)/src/lib-ssl-iostream/libssl_iostream.la $(top_builddir)/src/lib-test/libtest.la $(top_builddir)/src/lib/liblib.la'
LIBDOVECOT="$LIBDOVECOT_DEPS \$(LIBICONV)"
LIBDOVECOT_STORAGE_LAST='$(top_builddir)/src/lib-storage/list/libstorage_list.la $(top_builddir)/src/lib-storage/index/libstorage_index.la $(top_builddir)/src/lib-storage/libstorage.la $(top_builddir)/src/lib-index/libindex.la $(top_builddir)/src/lib-imap-storage/libimap-storage.la'
LIBDOVECOT_STORAGE_FIRST='$(top_builddir)/src/lib-storage/libstorage_service.la $(top_builddir)/src/lib-storage/register/libstorage_register.la'
LIBDOVECOT_STORAGE_DEPS="$LIBDOVECOT_STORAGE_FIRST $LINKED_STORAGE_LIBS $LIBDOVECOT_STORAGE_LAST"
LIBDOVECOT_LOGIN='$(top_builddir)/src/login-common/liblogin.la'
LIBDOVECOT_COMPRESS='$(top_builddir)/src/lib-compression/libcompression.la'
LIBDOVECOT_LDA='$(top_builddir)/src/lib-lda/liblda.la'
fi
LIBDOVECOT_STORAGE="$LIBDOVECOT_STORAGE_DEPS $LINKED_STORAGE_LDADD"
LIBDOVECOT_SQL='$(top_builddir)/src/lib-sql/libsql.la'
AC_SUBST(LIBDOVECOT)
AC_SUBST(LIBDOVECOT_DEPS)
AC_SUBST(LIBDOVECOT_STORAGE)
AC_SUBST(LIBDOVECOT_STORAGE_DEPS)
AC_SUBST(LIBDOVECOT_LOGIN)
AC_SUBST(LIBDOVECOT_SQL)
AC_SUBST(LIBDOVECOT_COMPRESS)
AC_SUBST(LIBDOVECOT_LDA)
dnl **
dnl ** SQL drivers
dnl **
build_pgsql=no
build_mysql=no
build_sqlite=no
for driver in $sql_drivers; do
if test "$driver" = "pgsql"; then
AC_DEFINE(BUILD_PGSQL,, Built-in PostgreSQL support)
build_pgsql=yes
elif test "$driver" = "mysql"; then
AC_DEFINE(BUILD_MYSQL,, Built-in MySQL support)
build_mysql=yes
elif test "$driver" = "sqlite"; then
AC_DEFINE(BUILD_SQLITE,, Built-in SQLite support)
build_sqlite=yes
fi
done
if test $build_pgsql = no; then
not_sql_drivers="$not_sql_drivers pgsql"
fi
if test $build_mysql = no; then
not_sql_drivers="$not_sql_drivers mysql"
fi
if test $build_sqlite = no; then
not_sql_drivers="$not_sql_drivers sqlite"
fi
AC_SUBST(sql_drivers)
AM_CONDITIONAL(BUILD_PGSQL, test "$build_pgsql" = "yes")
AM_CONDITIONAL(BUILD_MYSQL, test "$build_mysql" = "yes")
AM_CONDITIONAL(BUILD_SQLITE, test "$build_sqlite" = "yes")
AM_CONDITIONAL(SQL_PLUGINS, test "$want_sql" = "plugin")
dnl **
dnl ** Plugins
dnl **
COMPRESS_LIBS=
if test "$want_zlib" != "no"; then
AC_CHECK_HEADER(zlib.h, [
have_zlib=yes
have_compress_lib=yes
AC_DEFINE(HAVE_ZLIB,, Define if you have zlib library)
COMPRESS_LIBS="$COMPRESS_LIBS -lz"
], [
if test "$want_zlib" = "yes"; then
AC_ERROR([Can't build with zlib support: zlib.h not found])
fi
])
fi
if test "$want_bzlib" != "no"; then
AC_CHECK_HEADER(bzlib.h, [
AC_CHECK_LIB(bz2, BZ2_bzdopen, [
have_bzlib=yes
have_compress_lib=yes
AC_DEFINE(HAVE_BZLIB,, Define if you have bzlib library)
COMPRESS_LIBS="$COMPRESS_LIBS -lbz2"
], [
if test "$want_bzlib" = "yes"; then
AC_ERROR([Can't build with bzlib support: libbz2 not found])
fi
])
], [
if test "$want_bzlib" = "yes"; then
AC_ERROR([Can't build with bzlib support: bzlib.h not found])
fi
])
fi
AC_SUBST(COMPRESS_LIBS)
AM_CONDITIONAL(BUILD_ZLIB_PLUGIN, test "$have_compress_lib" = "yes")
RPCGEN=${RPCGEN-rpcgen}
if ! $RPCGEN -c /dev/null > /dev/null; then
RPCGEN=
fi
AC_SUBST(RPCGEN)
have_rquota=no
if test -f /usr/include/rpcsvc/rquota.x && test -n "$RPCGEN"; then
AC_DEFINE(HAVE_RQUOTA,, Define if you wish to retrieve quota of NFS mounted mailboxes)
have_rquota=yes
fi
AM_CONDITIONAL(HAVE_RQUOTA, test "$have_rquota" = "yes")
dnl
dnl ** Full text search
dnl
fts=" squat"
not_fts=""
have_solr=no
if test "$want_solr" != "no"; then
AC_CHECK_PROG(CURLCONFIG, curl-config, curl-config, NO)
if test $CURLCONFIG != NO; then
CURL_CFLAGS=`$CURLCONFIG --cflags`
CURL_LIBS=`$CURLCONFIG --libs`
dnl libcurl found, also need libexpat
AC_CHECK_LIB(expat, XML_Parse, [
AC_CHECK_HEADER(expat.h, [
AC_SUBST(CURL_CFLAGS)
AC_SUBST(CURL_LIBS)
have_solr=yes
fts="$fts solr"
], [
if test $want_solr = yes; then
AC_ERROR([Can't build with Solr support: expat.h not found])
fi
])
], [
if test $want_solr = yes; then
AC_ERROR([Can't build with Solr support: libexpat not found])
fi
])
else
if test $want_solr = yes; then
AC_ERROR([Can't build with Solr support: curl-config not found])
fi
fi
fi
AM_CONDITIONAL(BUILD_SOLR, test "$have_solr" = "yes")
have_lucene=no
if test "$want_lucene" = "yes"; then
PKG_CHECK_MODULES(CLUCENE, libclucene-core,, [
# no pkg-config file for clucene. fallback to defaults.
# FIXME: we should verify here that this actually works..
CLUCENE_LIBS="-lclucene-shared -lclucene-core"
])
if test $want_stemmer != no; then
AC_CHECK_LIB(stemmer, sb_stemmer_new, [
have_lucene_stemmer=yes
AC_DEFINE(HAVE_LUCENE_STEMMER,, Define if you want stemming support for CLucene)
AC_CHECK_LIB(textcat, special_textcat_Init, [
have_lucene_textcat=yes
AC_DEFINE(HAVE_LUCENE_TEXTCAT,, Define if you want textcat support for CLucene)
], [
AC_CHECK_LIB(exttextcat, special_textcat_Init, [
have_lucene_exttextcat=yes
AC_DEFINE(HAVE_LUCENE_EXTTEXTCAT,, Define if you want textcat (Debian version) support for CLucene)
])
])
], [
if test $want_stemmer = yes; then
AC_ERROR([Can't build with stemmer support: libstemmer not found])
fi
])
fi
have_lucene=yes
fts="$fts lucene"
fi
AM_CONDITIONAL(BUILD_LUCENE_STEMMER, test "$have_lucene_stemmer" = "yes")
AM_CONDITIONAL(BUILD_LUCENE_TEXTCAT, test "$have_lucene_textcat" = "yes")
AM_CONDITIONAL(BUILD_LUCENE_EXTTEXTCAT, test "$have_lucene_exttextcat" = "yes")
if test $have_lucene = no; then
not_fts="$not_fts lucene"
fi
if test $have_solr = no; then
not_fts="$not_fts solr"
fi
dnl **
dnl ** Settings
dnl **
dnl get a list of setting .[ch] files, but list .h files first
FILES1=`find $srcdir/src -name '*settings.[[ch]]'|grep "$srcdir/src/lib-" | sed 's/^\(.*\)\(.\)$/\2 \1\2/' | grep -v 'lib-master.*c$' | sort -r | sed s/^..//`
FILES2=`find $srcdir/src -name '*settings.[[ch]]'|grep -v "$srcdir/src/lib-" | sed 's/^\(.*\)\(.\)$/\2 \1\2/' | grep -v all-settings | sort -r | sed s/^..//`
SETTING_FILES=`echo $FILES1 $FILES2 | sed -e s,$srcdir/src,./src,g -e 's,./src,$(top_srcdir)/src,g'`
AC_SUBST(SETTING_FILES)
dnl **
dnl ** capabilities
dnl **
dnl IDLE doesn't really belong to banner. It's there just to make Blackberries
dnl happy, because otherwise BIS server disables push email.
capability_banner="IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE IDLE"
capability="$capability_banner SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS THREAD=ORDEREDSUBJECT MULTIAPPEND URL-PARTIAL CATENATE UNSELECT CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS SPECIAL-USE BINARY MOVE"
AC_DEFINE_UNQUOTED(CAPABILITY_STRING, "$capability", IMAP capabilities)
AC_DEFINE_UNQUOTED(CAPABILITY_BANNER_STRING, "$capability_banner", IMAP capabilities advertised in banner)
CFLAGS="$CFLAGS $EXTRA_CFLAGS"
NOPLUGIN_LDFLAGS="-no-undefined"
if test "$with_gnu_ld" = yes; then
NOPLUGIN_LDFLAGS="$NOPLUGIN_LDFLAGS -Wl,--as-needed"
fi
LDFLAGS="\$(NOPLUGIN_LDFLAGS) $LDFLAGS"
AC_SUBST(NOPLUGIN_LDFLAGS)
if test "$with_gnu_ld" = yes -a "$want_shared_libs" = "no"; then
# libtool can't handle using whole-archive flags, so we need to do this
# with a CC wrapper.. shouldn't be much of a problem, since most people
# are building with shared libs.
sed "s/@CC@/$CC/" < $srcdir/cc-wrapper.sh.in > cc-wrapper.sh
chmod +x cc-wrapper.sh
CC=`pwd`/cc-wrapper.sh
fi
if test "$docdir" = ""; then
dnl docdir supported only by autoconf v2.59c and later
docdir='${datadir}/doc/${PACKAGE_TARNAME}'
fi
AC_SUBST(docdir)
AC_CHECK_PROG(VALGRIND, valgrind, yes, no)
if test $VALGRIND = yes; then
RUN_TEST='$(SHELL) $(top_srcdir)/run-test.sh'
else
RUN_TEST=''
fi
AC_SUBST(RUN_TEST)
AC_SUBST(abs_top_builddir)
AC_CONFIG_HEADERS([config.h])
AC_CONFIG_FILES([
Makefile
doc/Makefile
doc/man/Makefile
doc/wiki/Makefile
doc/example-config/Makefile
doc/example-config/conf.d/Makefile
src/Makefile
src/lib/Makefile
src/lib-sql/Makefile
src/lib-auth/Makefile
src/lib-charset/Makefile
src/lib-compression/Makefile
src/lib-dict/Makefile
src/lib-dns/Makefile
src/lib-fs/Makefile
src/lib-http/Makefile
src/lib-imap/Makefile
src/lib-imap-storage/Makefile
src/lib-imap-client/Makefile
src/lib-imap-urlauth/Makefile
src/lib-index/Makefile
src/lib-lda/Makefile
src/lib-mail/Makefile
src/lib-master/Makefile
src/lib-ntlm/Makefile
src/lib-otp/Makefile
src/lib-dovecot/Makefile
src/lib-settings/Makefile
src/lib-ssl-iostream/Makefile
src/lib-test/Makefile
src/lib-storage/Makefile
src/lib-storage/list/Makefile
src/lib-storage/index/Makefile
src/lib-storage/index/imapc/Makefile
src/lib-storage/index/pop3c/Makefile
src/lib-storage/index/maildir/Makefile
src/lib-storage/index/mbox/Makefile
src/lib-storage/index/dbox-common/Makefile
src/lib-storage/index/dbox-multi/Makefile
src/lib-storage/index/dbox-single/Makefile
src/lib-storage/index/cydir/Makefile
src/lib-storage/index/raw/Makefile
src/lib-storage/index/shared/Makefile
src/lib-storage/register/Makefile
src/anvil/Makefile
src/auth/Makefile
src/config/Makefile
src/doveadm/Makefile
src/doveadm/dsync/Makefile
src/lda/Makefile
src/log/Makefile
src/lmtp/Makefile
src/dict/Makefile
src/director/Makefile
src/dns/Makefile
src/indexer/Makefile
src/ipc/Makefile
src/imap/Makefile
src/imap-login/Makefile
src/imap-urlauth/Makefile
src/login-common/Makefile
src/master/Makefile
src/pop3/Makefile
src/pop3-login/Makefile
src/replication/Makefile
src/replication/aggregator/Makefile
src/replication/replicator/Makefile
src/ssl-params/Makefile
src/stats/Makefile
src/util/Makefile
src/plugins/Makefile
src/plugins/acl/Makefile
src/plugins/imap-acl/Makefile
src/plugins/autocreate/Makefile
src/plugins/expire/Makefile
src/plugins/fts/Makefile
src/plugins/fts-lucene/Makefile
src/plugins/fts-solr/Makefile
src/plugins/fts-squat/Makefile
src/plugins/lazy-expunge/Makefile
src/plugins/listescape/Makefile
src/plugins/mail-log/Makefile
src/plugins/mailbox-alias/Makefile
src/plugins/notify/Makefile
src/plugins/pop3-migration/Makefile
src/plugins/quota/Makefile
src/plugins/imap-quota/Makefile
src/plugins/replication/Makefile
src/plugins/snarf/Makefile
src/plugins/stats/Makefile
src/plugins/imap-stats/Makefile
src/plugins/trash/Makefile
src/plugins/virtual/Makefile
src/plugins/zlib/Makefile
src/plugins/imap-zlib/Makefile
stamp.h
dovecot-config.in])
AC_OUTPUT
if test "$want_sql" = "plugin"; then
sql_drivers="$sql_drivers (plugins)"
fi
not_passdb=`echo "$not_passdb"|sed 's/ / -/g'`
not_userdb=`echo "$not_userdb"|sed 's/ / -/g'`
not_sql_drivers=`echo "$not_sql_drivers"|sed 's/ / -/g'`
not_fts=`echo "$not_fts"|sed 's/ / -/g'`
echo
echo "Install prefix . : $prefix"
echo "File offsets ... : ${offt_bits}bit"
echo "I/O polling .... : $ioloop"
echo "I/O notifys .... : $have_notify"
echo "SSL ............ : $have_ssl"
echo "GSSAPI ......... : $have_gssapi"
echo "passdbs ........ :$passdb"
if test "$not_passdb" != ""; then
echo " :$not_passdb"
fi
echo "userdbs ........ :$userdb"
if test "$not_userdb" != ""; then
echo " :$not_userdb"
fi
echo "SQL drivers .... :$sql_drivers"
if test "$not_sql_drivers" != ""; then
echo " :$not_sql_drivers"
fi
echo "Full text search :$fts"
if test "$not_fts" != ""; then
echo " :$not_fts"
fi
echo
echo "NOTE: This is the UNSTABLE development branch of Dovecot v2.2."