configure.in revision f052a448696b1246ee9fc36b7c727237aed56058
a8c5a86d183db25a57bf193c06b41e092ec2e151Timo SirainenAC_PREREQ([2.59])
1795e934ebcd58175d3b5bbdd811b13c7889efa3Timo SirainenAC_INIT([Dovecot],[2.2.UNSTABLE],[dovecot@dovecot.org])
1795e934ebcd58175d3b5bbdd811b13c7889efa3Timo SirainenAC_CONFIG_SRCDIR([src])
82995cc154a929f37aa486a72a6485e9f8d34a30Timo SirainenAM_INIT_AUTOMAKE([foreign])
bdd36cfdba3ff66d25570a9ff568d69e1eb543cfTimo SirainenAM_MAINTAINER_MODE
76a99afe0914951d20d96e0bf5e6d8d3ea3fd503Timo SirainenPKG_PROG_PKG_CONFIG
2521fd0986302cdabc8b0711eef63ac188f32cd6Timo SirainenACLOCAL_AMFLAGS='-I $(top_srcdir)'
b039dabf4c53f72454e795930e7643b6e0e625f9Timo SirainenAC_SUBST(ACLOCAL_AMFLAGS)
a35cbba04d0a2823da98e693bd09a051addffdb2Timo Sirainendnl TEST_WITH(name, value, [plugin])
94e1adead9faddec88a623485b9999a87b1684faTimo SirainenAC_DEFUN([TEST_WITH], [
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo Sirainen want=want_`echo $1|sed s/-/_/g`
503e5ef896c7b4a51cf73efb0d132860a8c747e6Timo Sirainen if test $2 = yes || test $2 = no || test $2 = auto; then
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo Sirainen eval $want=$2
cb2b5a7d6e7e651191bf9ee1eda94a6e207288b0Timo Sirainen elif test $2 = plugin; then
cb2b5a7d6e7e651191bf9ee1eda94a6e207288b0Timo Sirainen if test "$3" = plugin; then
2521fd0986302cdabc8b0711eef63ac188f32cd6Timo Sirainen eval $want=plugin
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo Sirainen AC_ERROR([--with-$1=plugin not supported])
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo Sirainen elif `echo $2|grep '^/' >/dev/null`; then
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo Sirainen AC_ERROR([--with-$1=path not supported. You may want to use instead:
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo SirainenCPPFLAGS=-I$2/include LDFLAGS=-L$2/lib ./configure --with-$1])
1795e934ebcd58175d3b5bbdd811b13c7889efa3Timo Sirainen AC_ERROR([--with-$1: Unknown value: $2])
cb951d3282610a9a0960230865bc5f3e3347b203Timo SirainenAC_ARG_ENABLE(devel-checks,
82995cc154a929f37aa486a72a6485e9f8d34a30Timo SirainenAS_HELP_STRING([--enable-devel-checks], [Enable some extra expensive checks for developers]),
cb951d3282610a9a0960230865bc5f3e3347b203Timo Sirainen if test x$enableval = xyes; then
a35cbba04d0a2823da98e693bd09a051addffdb2Timo Sirainen AC_DEFINE(DEBUG,, Build with extra debugging checks)
3fe44a0df5a0bdd80c495f79cbf0e384441d6fccTimo Sirainen want_devel_checks=yes
a35cbba04d0a2823da98e693bd09a051addffdb2Timo SirainenAC_ARG_ENABLE(asserts,
cb951d3282610a9a0960230865bc5f3e3347b203Timo SirainenAS_HELP_STRING([--enable-asserts], [Enable asserts (default)]),
cb951d3282610a9a0960230865bc5f3e3347b203Timo Sirainen if test x$enableval = xno; then
cb951d3282610a9a0960230865bc5f3e3347b203Timo Sirainen AC_DEFINE(DISABLE_ASSERTS,, Disable asserts)
3fe44a0df5a0bdd80c495f79cbf0e384441d6fccTimo SirainenAC_ARG_WITH(shared-libs,
3fe44a0df5a0bdd80c495f79cbf0e384441d6fccTimo SirainenAS_HELP_STRING([--with-shared-libs], [Link binaries using shared Dovecot libraries (default)]),
82995cc154a929f37aa486a72a6485e9f8d34a30Timo Sirainen want_shared_libs=$withval,
4316355ca8b7698516272520a972291378698140Timo Sirainen want_shared_libs=yes)
4316355ca8b7698516272520a972291378698140Timo SirainenAM_CONDITIONAL(BUILD_SHARED_LIBS, test "$want_shared_libs" = "yes")
4316355ca8b7698516272520a972291378698140Timo SirainenAC_ARG_WITH(mem-align,
4316355ca8b7698516272520a972291378698140Timo SirainenAS_HELP_STRING([--with-mem-align=BYTES], [Set the memory alignment (default: 8)]),
4316355ca8b7698516272520a972291378698140Timo Sirainen mem_align=$withval,
4316355ca8b7698516272520a972291378698140Timo SirainenAC_ARG_WITH(ioloop,
4316355ca8b7698516272520a972291378698140Timo 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)]),
4316355ca8b7698516272520a972291378698140Timo Sirainen ioloop=$withval,
4316355ca8b7698516272520a972291378698140Timo SirainenAC_ARG_WITH(notify,
4316355ca8b7698516272520a972291378698140Timo 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)]),
0df9428baed48afaff90b4d4f03792d2fd756a43Timo Sirainen notify=$withval,
0df9428baed48afaff90b4d4f03792d2fd756a43Timo SirainenAC_ARG_WITH(nss,
0df9428baed48afaff90b4d4f03792d2fd756a43Timo SirainenAS_HELP_STRING([--with-nss], [Build with NSS module support (auto)]),
0df9428baed48afaff90b4d4f03792d2fd756a43Timo Sirainen TEST_WITH(nss, $withval),
0df9428baed48afaff90b4d4f03792d2fd756a43Timo Sirainen want_nss=auto)
0df9428baed48afaff90b4d4f03792d2fd756a43Timo SirainenAC_ARG_WITH(shadow,
0df9428baed48afaff90b4d4f03792d2fd756a43Timo SirainenAS_HELP_STRING([--with-shadow], [Build with shadow password support (auto)]),
0df9428baed48afaff90b4d4f03792d2fd756a43Timo Sirainen TEST_WITH(shadow, $withval),
4316355ca8b7698516272520a972291378698140Timo Sirainen want_shadow=auto)
4316355ca8b7698516272520a972291378698140Timo SirainenAC_ARG_WITH(pam,
0df9428baed48afaff90b4d4f03792d2fd756a43Timo SirainenAS_HELP_STRING([--with-pam], [Build with PAM support (auto)]),
0df9428baed48afaff90b4d4f03792d2fd756a43Timo Sirainen TEST_WITH(pam, $withval),
0df9428baed48afaff90b4d4f03792d2fd756a43Timo Sirainen want_pam=auto)
0df9428baed48afaff90b4d4f03792d2fd756a43Timo SirainenAC_ARG_WITH(bsdauth,
0df9428baed48afaff90b4d4f03792d2fd756a43Timo SirainenAS_HELP_STRING([--with-bsdauth], [Build with BSD authentication support (auto)]),
4316355ca8b7698516272520a972291378698140Timo Sirainen TEST_WITH(bsdauth, $withval),
0df9428baed48afaff90b4d4f03792d2fd756a43Timo Sirainen want_bsdauth=auto)
4316355ca8b7698516272520a972291378698140Timo SirainenAC_ARG_WITH(gssapi,
0df9428baed48afaff90b4d4f03792d2fd756a43Timo SirainenAS_HELP_STRING([--with-gssapi=yes|plugin Build with GSSAPI authentication support]),
0df9428baed48afaff90b4d4f03792d2fd756a43Timo Sirainen TEST_WITH(gssapi, $withval, plugin),
0df9428baed48afaff90b4d4f03792d2fd756a43Timo Sirainen want_gssapi=no)
0df9428baed48afaff90b4d4f03792d2fd756a43Timo SirainenAC_ARG_WITH(sia,
0df9428baed48afaff90b4d4f03792d2fd756a43Timo SirainenAS_HELP_STRING([--with-sia], [Build with Tru64 SIA support]),
0df9428baed48afaff90b4d4f03792d2fd756a43Timo Sirainen TEST_WITH(sia, $withval),
0df9428baed48afaff90b4d4f03792d2fd756a43Timo SirainenAC_ARG_WITH(ldap,
0df9428baed48afaff90b4d4f03792d2fd756a43Timo SirainenAS_HELP_STRING([--with-ldap=yes|plugin], [Build with LDAP support]),
4316355ca8b7698516272520a972291378698140Timo Sirainen TEST_WITH(ldap, $withval, plugin),
4316355ca8b7698516272520a972291378698140Timo Sirainen want_ldap=no)
0df9428baed48afaff90b4d4f03792d2fd756a43Timo SirainenAC_ARG_WITH(vpopmail,
0df9428baed48afaff90b4d4f03792d2fd756a43Timo SirainenAS_HELP_STRING([--with-vpopmail], [Build with vpopmail support (auto)]),
0df9428baed48afaff90b4d4f03792d2fd756a43Timo Sirainen if test x$withval = xno; then
4316355ca8b7698516272520a972291378698140Timo Sirainen want_vpopmail=no
0df9428baed48afaff90b4d4f03792d2fd756a43Timo Sirainen if test x$withval = xyes || test x$withval = xauto; then
2521fd0986302cdabc8b0711eef63ac188f32cd6Timo Sirainen vpopmail_home="`echo ~vpopmail`"
2521fd0986302cdabc8b0711eef63ac188f32cd6Timo Sirainen want_vpopmail=$withval
2521fd0986302cdabc8b0711eef63ac188f32cd6Timo Sirainen vpopmail_home="$withval"
2521fd0986302cdabc8b0711eef63ac188f32cd6Timo Sirainen want_vpopmail=yes
2521fd0986302cdabc8b0711eef63ac188f32cd6Timo Sirainen want_vpopmail=no
2521fd0986302cdabc8b0711eef63ac188f32cd6Timo Sirainen# Berkeley DB support is more or less broken. Disabled for now.
2521fd0986302cdabc8b0711eef63ac188f32cd6Timo Sirainen#AC_ARG_WITH(db,
2521fd0986302cdabc8b0711eef63ac188f32cd6Timo Sirainen#AS_HELP_STRING([--with-db], [Build with Berkeley DB support]),
2521fd0986302cdabc8b0711eef63ac188f32cd6Timo Sirainen# TEST_WITH(db, $withval),
2521fd0986302cdabc8b0711eef63ac188f32cd6Timo Sirainendnl The --with-sql is useful only if Dovecot is being built with all the SQL
2521fd0986302cdabc8b0711eef63ac188f32cd6Timo Sirainendnl drivers as modules. If any SQL driver is built-in, this option is ignored.
2521fd0986302cdabc8b0711eef63ac188f32cd6Timo SirainenAC_ARG_WITH(sql,
4316355ca8b7698516272520a972291378698140Timo SirainenAS_HELP_STRING([--with-sql=yes|plugin], [Build with generic SQL support]),
4316355ca8b7698516272520a972291378698140Timo Sirainen TEST_WITH(sql, $withval, plugin),
1795e934ebcd58175d3b5bbdd811b13c7889efa3Timo SirainenAC_ARG_WITH(pgsql,
d23c747de9d33966483fbdd41f08ad7766da7c5cTimo SirainenAS_HELP_STRING([--with-pgsql], [Build with PostgreSQL driver support]),
3fe44a0df5a0bdd80c495f79cbf0e384441d6fccTimo Sirainen TEST_WITH(pgsql, $withval),
d23c747de9d33966483fbdd41f08ad7766da7c5cTimo Sirainen want_pgsql=no)
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo SirainenAC_ARG_WITH(mysql,
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo SirainenAS_HELP_STRING([--with-mysql], [Build with MySQL driver support]),
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo Sirainen TEST_WITH(mysql, $withval),
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo Sirainen want_mysql=no)
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo SirainenAC_ARG_WITH(sqlite,
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo SirainenAS_HELP_STRING([--with-sqlite], [Build with SQLite3 driver support]),
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo Sirainen TEST_WITH(sqlite, $withval),
82995cc154a929f37aa486a72a6485e9f8d34a30Timo Sirainen want_sqlite=no)
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo SirainenAC_ARG_WITH(lucene,
d9b8c65d0a0ffc709ba7d23c449dbf2f46b10674Timo SirainenAS_HELP_STRING([--with-lucene], [Build with CLucene full text search support]),
4316355ca8b7698516272520a972291378698140Timo Sirainen TEST_WITH(lucene, $withval),
4316355ca8b7698516272520a972291378698140Timo Sirainen want_lucene=no)
4316355ca8b7698516272520a972291378698140Timo SirainenAM_CONDITIONAL(BUILD_LUCENE, test "$want_lucene" = "yes")
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo SirainenAC_ARG_WITH(stemmer,
d23c747de9d33966483fbdd41f08ad7766da7c5cTimo SirainenAS_HELP_STRING([--with-stemmer], [Build with libstemmer support (for CLucene)]),
d23c747de9d33966483fbdd41f08ad7766da7c5cTimo Sirainen TEST_WITH(stemmer, $withval),
d23c747de9d33966483fbdd41f08ad7766da7c5cTimo Sirainen want_stemmer=auto)
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo SirainenAC_ARG_WITH(solr,
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo SirainenAS_HELP_STRING([--with-solr], [Build with Solr full text search support]),
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo Sirainen TEST_WITH(solr, $withval),
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo Sirainen want_solr=no)
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo SirainenAC_ARG_WITH(zlib,
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo SirainenAS_HELP_STRING([--with-zlib], [Build with zlib compression support]),
d23c747de9d33966483fbdd41f08ad7766da7c5cTimo Sirainen TEST_WITH(zlib, $withval),
d23c747de9d33966483fbdd41f08ad7766da7c5cTimo Sirainen want_zlib=auto)
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo SirainenAC_ARG_WITH(bzlib,
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo SirainenAS_HELP_STRING([--with-bzlib], [Build with bzlib compression support]),
d23c747de9d33966483fbdd41f08ad7766da7c5cTimo Sirainen TEST_WITH(bzlib, $withval),
82995cc154a929f37aa486a72a6485e9f8d34a30Timo Sirainen want_bzlib=auto)
82995cc154a929f37aa486a72a6485e9f8d34a30Timo SirainenAC_ARG_WITH(libcap,
d23c747de9d33966483fbdd41f08ad7766da7c5cTimo SirainenAS_HELP_STRING([--with-libcap], [Build with libcap support (Dropping capabilities).]),
e5acc283bf030b0b5c79ca4e52d315c516a299faPascal Volk TEST_WITH(libcap, $withval),
e5acc283bf030b0b5c79ca4e52d315c516a299faPascal Volk want_libcap=auto)
e3077468777f5d324224365e34d7bbc449168e52Timo SirainenAC_ARG_WITH(libwrap,
d23c747de9d33966483fbdd41f08ad7766da7c5cTimo SirainenAS_HELP_STRING([--with-libwrap], [Build with libwrap, ie. TCP-wrappers]),
d23c747de9d33966483fbdd41f08ad7766da7c5cTimo Sirainen TEST_WITH(libwrap, $withval),
d23c747de9d33966483fbdd41f08ad7766da7c5cTimo Sirainen want_libwrap=no)
4316355ca8b7698516272520a972291378698140Timo SirainenAC_ARG_WITH(ssl,
d23c747de9d33966483fbdd41f08ad7766da7c5cTimo SirainenAS_HELP_STRING([--with-ssl=gnutls|openssl], [Build with GNUTLS or OpenSSL (default)]),
1795e934ebcd58175d3b5bbdd811b13c7889efa3Timo Sirainen if test x$withval = xno; then
4316355ca8b7698516272520a972291378698140Timo Sirainen want_gnutls=no
4316355ca8b7698516272520a972291378698140Timo Sirainen want_openssl=no
4316355ca8b7698516272520a972291378698140Timo Sirainen elif test x$withval = xgnutls; then
4316355ca8b7698516272520a972291378698140Timo Sirainen AC_ERROR([GNUTLS support is broken currently])
4316355ca8b7698516272520a972291378698140Timo Sirainen want_gnutls=yes
b863b7e3fccf75f90f613b875f02fd1781e14e5eTimo Sirainen want_openssl=no
4316355ca8b7698516272520a972291378698140Timo Sirainen elif test x$withval = xopenssl; then
4316355ca8b7698516272520a972291378698140Timo Sirainen want_gnutls=no
4316355ca8b7698516272520a972291378698140Timo Sirainen want_openssl=yes
4316355ca8b7698516272520a972291378698140Timo Sirainen elif test x$withval = xyes; then
4316355ca8b7698516272520a972291378698140Timo Sirainen want_gnutls=no
4316355ca8b7698516272520a972291378698140Timo Sirainen want_openssl=yes
2521fd0986302cdabc8b0711eef63ac188f32cd6Timo Sirainen AC_ERROR([--with-ssl: Invalid value: $withval])
b863b7e3fccf75f90f613b875f02fd1781e14e5eTimo Sirainen want_gnutls=no
b863b7e3fccf75f90f613b875f02fd1781e14e5eTimo Sirainen want_openssl=auto
b863b7e3fccf75f90f613b875f02fd1781e14e5eTimo SirainenAC_ARG_WITH(ssldir,
b863b7e3fccf75f90f613b875f02fd1781e14e5eTimo SirainenAS_HELP_STRING([--with-ssldir=DIR], [SSL base directory for certificates (/etc/ssl)]),
b863b7e3fccf75f90f613b875f02fd1781e14e5eTimo Sirainen ssldir="$withval",
4316355ca8b7698516272520a972291378698140Timo SirainenAC_SUBST(ssldir)
4316355ca8b7698516272520a972291378698140Timo SirainenAC_ARG_WITH(rundir,
4316355ca8b7698516272520a972291378698140Timo SirainenAS_HELP_STRING([--with-rundir=DIR], [Runtime data directory (LOCALSTATEDIR/run/dovecot)]),
4316355ca8b7698516272520a972291378698140Timo Sirainen rundir="$withval",
4316355ca8b7698516272520a972291378698140Timo Sirainen rundir=$localstatedir/run/$PACKAGE
e34d170f8f0e084bd94bfbc1a7085ece67e508dfTimo SirainenAC_SUBST(rundir)
4316355ca8b7698516272520a972291378698140Timo SirainenAC_ARG_WITH(statedir,
4316355ca8b7698516272520a972291378698140Timo SirainenAS_HELP_STRING([--with-statedir=DIR], [Permanent data directory (LOCALSTATEDIR/lib/dovecot)]),
4316355ca8b7698516272520a972291378698140Timo Sirainen statedir="$withval",
4316355ca8b7698516272520a972291378698140Timo Sirainen statedir=$localstatedir/lib/$PACKAGE
4316355ca8b7698516272520a972291378698140Timo SirainenAC_SUBST(statedir)
4316355ca8b7698516272520a972291378698140Timo SirainenAC_ARG_WITH([systemdsystemunitdir],
4316355ca8b7698516272520a972291378698140Timo SirainenAS_HELP_STRING([--with-systemdsystemunitdir=DIR], [Directory for systemd service files (auto=detect)]), [
4316355ca8b7698516272520a972291378698140Timo Sirainen if test "$withval" = "auto"; then
4316355ca8b7698516272520a972291378698140Timo Sirainen systemdsystemunitdir=`$PKG_CONFIG --variable=systemdsystemunitdir systemd`
4316355ca8b7698516272520a972291378698140Timo Sirainen elif test "$withval" != "no"; then
4316355ca8b7698516272520a972291378698140Timo Sirainen systemdsystemunitdir=$withval
e34d170f8f0e084bd94bfbc1a7085ece67e508dfTimo Sirainenif test "$systemdsystemunitdir" != ""; then
4316355ca8b7698516272520a972291378698140Timo Sirainen AC_SUBST(systemdsystemunitdir)
4316355ca8b7698516272520a972291378698140Timo Sirainen AC_DEFINE(HAVE_SYSTEMD,, Define if you want to use systemd socket activation)
4316355ca8b7698516272520a972291378698140Timo SirainenAM_CONDITIONAL(HAVE_SYSTEMD, test "$systemdsystemunitdir" != "")
4316355ca8b7698516272520a972291378698140Timo SirainenAC_ARG_WITH(gc,
4316355ca8b7698516272520a972291378698140Timo SirainenAS_HELP_STRING([--with-gc], [Use Boehm garbage collector]),
4316355ca8b7698516272520a972291378698140Timo Sirainen TEST_WITH(gc, $withval),
4316355ca8b7698516272520a972291378698140Timo SirainenAC_ARG_WITH(storages,
4316355ca8b7698516272520a972291378698140Timo SirainenAS_HELP_STRING([--with-storages], [Build with specified mail storage formats (mdbox sdbox maildir mbox cydir imapc pop3c)]), [
e34d170f8f0e084bd94bfbc1a7085ece67e508dfTimo Sirainen if test "$withval" = "yes" || test "$withval" = "no"; then
e34d170f8f0e084bd94bfbc1a7085ece67e508dfTimo Sirainen AC_MSG_ERROR([--with-storages needs storage list as parameter])
4316355ca8b7698516272520a972291378698140Timo Sirainen mail_storages="shared `echo "$withval"|sed 's/,/ /g'`" ],
4316355ca8b7698516272520a972291378698140Timo Sirainen mail_storages="shared mdbox sdbox maildir mbox cydir imapc pop3c")
4316355ca8b7698516272520a972291378698140Timo SirainenAC_SUBST(mail_storages)
4316355ca8b7698516272520a972291378698140Timo Sirainenmail_storages="$mail_storages raw"
b8a4aab1f117f6760184ad50b1af41ba810b51f9Timo Sirainen# drop duplicates
b8a4aab1f117f6760184ad50b1af41ba810b51f9Timo Sirainenduplicates=`(for i in $mail_storages; do echo $i; done)|sort|uniq -d|xargs echo`
4316355ca8b7698516272520a972291378698140Timo Sirainenif test "$duplicates" != ""; then
4316355ca8b7698516272520a972291378698140Timo Sirainen AC_ERROR([Duplicate --with-storages: $duplicates])
4316355ca8b7698516272520a972291378698140Timo SirainenDC_DOVECOT_MODULEDIR
4316355ca8b7698516272520a972291378698140Timo SirainenAC_ARG_WITH(docs,
4316355ca8b7698516272520a972291378698140Timo SirainenAS_HELP_STRING([--with-docs], [Install documentation (default)]),
4316355ca8b7698516272520a972291378698140Timo Sirainen if test x$withval = xno; then
4316355ca8b7698516272520a972291378698140Timo Sirainen want_docs=yes
4316355ca8b7698516272520a972291378698140Timo Sirainen want_docs=yes)
4316355ca8b7698516272520a972291378698140Timo SirainenAM_CONDITIONAL(BUILD_DOCS, test "$want_docs" = "yes")
4316355ca8b7698516272520a972291378698140Timo Sirainendnl always enable all of the passbs and userdbs that don't require extra libs
2521fd0986302cdabc8b0711eef63ac188f32cd6Timo Sirainenwant_passwd=yes
2521fd0986302cdabc8b0711eef63ac188f32cd6Timo Sirainenwant_passwd_file=yes
4316355ca8b7698516272520a972291378698140Timo Sirainenwant_checkpassword=yes
4316355ca8b7698516272520a972291378698140Timo Sirainenwant_prefetch_userdb=yes
4316355ca8b7698516272520a972291378698140Timo SirainenAC_PROG_CXX # lucene plugin needs this
d23c747de9d33966483fbdd41f08ad7766da7c5cTimo SirainenAC_HEADER_STDC
d23c747de9d33966483fbdd41f08ad7766da7c5cTimo SirainenAC_PROG_LIBTOOL
0e5819a061034f1636b124c03a89f67d37c852b1Timo SirainenAC_DEFINE_UNQUOTED(DOVECOT_NAME, "$PACKAGE_NAME", Dovecot name)
d23c747de9d33966483fbdd41f08ad7766da7c5cTimo SirainenAC_DEFINE_UNQUOTED(DOVECOT_STRING, "$PACKAGE_STRING", Dovecot string)
d23c747de9d33966483fbdd41f08ad7766da7c5cTimo SirainenAC_DEFINE_UNQUOTED(DOVECOT_VERSION, "$PACKAGE_VERSION", Dovecot version)
d23c747de9d33966483fbdd41f08ad7766da7c5cTimo SirainenAC_CHECK_HEADERS(strings.h stdint.h unistd.h dirent.h malloc.h inttypes.h \
b1678954f83e1059b981e2def52a70054fa71399Timo Sirainen sys/uio.h sys/sysmacros.h sys/resource.h sys/select.h libgen.h \
b1678954f83e1059b981e2def52a70054fa71399Timo Sirainen sys/quota.h sys/fs/ufs_quota.h ufs/ufs/quota.h jfs/quota.h sys/fs/quota_common.h \
d23c747de9d33966483fbdd41f08ad7766da7c5cTimo Sirainen mntent.h sys/mnttab.h sys/event.h sys/time.h sys/mkdev.h linux/dqblk_xfs.h \
d23c747de9d33966483fbdd41f08ad7766da7c5cTimo Sirainen xfs/xqm.h execinfo.h ucontext.h malloc_np.h sys/utsname.h sys/vmount.h \
d23c747de9d33966483fbdd41f08ad7766da7c5cTimo Sirainen sys/utsname.h glob.h linux/falloc.h ucred.h sys/ucred.h)
d23c747de9d33966483fbdd41f08ad7766da7c5cTimo Sirainendnl * clang check
9b61a6db87c026656f8d2ae214e4486b98a069c0Timo Sirainenif $CC -dM -E -x c /dev/null | grep __clang__ > /dev/null 2>&1; then
9b61a6db87c026656f8d2ae214e4486b98a069c0Timo Sirainen have_clang=yes
d23c747de9d33966483fbdd41f08ad7766da7c5cTimo Sirainendnl * gcc specific options
d23c747de9d33966483fbdd41f08ad7766da7c5cTimo Sirainenif test "x$ac_cv_c_compiler_gnu" = "xyes"; then
65e14cef911d5d3fac8993c8a76911a587f05cd7Timo Sirainen # -Wcast-qual -Wcast-align -Wconversion -Wunreachable-code # too many warnings
65e14cef911d5d3fac8993c8a76911a587f05cd7Timo Sirainen # -Wstrict-prototypes -Wredundant-decls # may give warnings in some systems
65e14cef911d5d3fac8993c8a76911a587f05cd7Timo Sirainen # -Wmissing-format-attribute -Wmissing-noreturn -Wwrite-strings # a couple of warnings
d19d3aa4eafa34b48b7d7d311c9db31e1898576aTimo Sirainen CFLAGS="$CFLAGS -Wall -W -Wmissing-prototypes -Wmissing-declarations -Wpointer-arith -Wchar-subscripts -Wformat=2 -Wbad-function-cast"
65e14cef911d5d3fac8993c8a76911a587f05cd7Timo Sirainen if test "$have_clang" != "yes"; then
65e14cef911d5d3fac8993c8a76911a587f05cd7Timo Sirainen # This is simply to avoid warning when building strftime() wrappers..
65e14cef911d5d3fac8993c8a76911a587f05cd7Timo Sirainen CFLAGS="$CFLAGS -fno-builtin-strftime"
4316355ca8b7698516272520a972291378698140Timo Sirainen AC_TRY_COMPILE([
4316355ca8b7698516272520a972291378698140Timo Sirainen #if __GNUC__ < 4
4316355ca8b7698516272520a972291378698140Timo Sirainen # error old gcc
d19d3aa4eafa34b48b7d7d311c9db31e1898576aTimo Sirainen CFLAGS="$CFLAGS -Wstrict-aliasing=2"
4316355ca8b7698516272520a972291378698140Timo Sirainen # Use std=gnu99 if we have new enough gcc
4316355ca8b7698516272520a972291378698140Timo Sirainen old_cflags=$CFLAGS
4316355ca8b7698516272520a972291378698140Timo Sirainen CFLAGS="-std=gnu99"
4316355ca8b7698516272520a972291378698140Timo Sirainen AC_TRY_COMPILE([
d23c747de9d33966483fbdd41f08ad7766da7c5cTimo Sirainen CFLAGS="$CFLAGS $old_cflags"
4316355ca8b7698516272520a972291378698140Timo Sirainen CFLAGS="$old_cflags"
d23c747de9d33966483fbdd41f08ad7766da7c5cTimo Sirainenif test "$have_clang" = "yes"; then
d23c747de9d33966483fbdd41f08ad7766da7c5cTimo Sirainen # clang specific options
82995cc154a929f37aa486a72a6485e9f8d34a30Timo Sirainen if test "$want_devel_checks" = "yes"; then
4316355ca8b7698516272520a972291378698140Timo Sirainen CFLAGS="$CFLAGS -fcatch-undefined-behavior -ftrapv"
d23c747de9d33966483fbdd41f08ad7766da7c5cTimo Sirainendnl ** just some generic stuff...
d23c747de9d33966483fbdd41f08ad7766da7c5cTimo SirainenAC_SEARCH_LIBS(socket, socket)
2615df45a8027948a474abe5e817b34b0499c171Timo SirainenAC_SEARCH_LIBS(inet_addr, nsl)
82995cc154a929f37aa486a72a6485e9f8d34a30Timo SirainenAC_SEARCH_LIBS(fdatasync, rt, [
4316355ca8b7698516272520a972291378698140Timo Sirainen AC_DEFINE(HAVE_FDATASYNC,, Define if you have fdatasync())
4316355ca8b7698516272520a972291378698140Timo Sirainenif test $want_libcap != no; then
4316355ca8b7698516272520a972291378698140Timo Sirainen AC_CHECK_LIB(cap, cap_init, [
4316355ca8b7698516272520a972291378698140Timo Sirainen AC_DEFINE(HAVE_LIBCAP,, libcap is installed for cap_init())
4316355ca8b7698516272520a972291378698140Timo Sirainen LIBCAP="-lcap"
4316355ca8b7698516272520a972291378698140Timo Sirainen AC_SUBST(LIBCAP)
82995cc154a929f37aa486a72a6485e9f8d34a30Timo Sirainen if test "$want_libcap" = "yes"; then
4316355ca8b7698516272520a972291378698140Timo Sirainen AC_ERROR([Can't build with libcap support: libcap not found])
d23c747de9d33966483fbdd41f08ad7766da7c5cTimo Sirainenhave_libwrap=no
d23c747de9d33966483fbdd41f08ad7766da7c5cTimo Sirainenif test $want_libwrap != no; then
d23c747de9d33966483fbdd41f08ad7766da7c5cTimo Sirainen AC_CHECK_HEADER(tcpd.h, [
d23c747de9d33966483fbdd41f08ad7766da7c5cTimo Sirainen old_LIBS=$LIBS
d23c747de9d33966483fbdd41f08ad7766da7c5cTimo Sirainen AC_CACHE_CHECK([whether we have libwrap],i_cv_have_libwrap,[
d23c747de9d33966483fbdd41f08ad7766da7c5cTimo Sirainen AC_TRY_COMPILE([
6b43203878bd3c87f5ae690617a1cbc694e24c01Timo Sirainen int allow_severity = 0;
6b43203878bd3c87f5ae690617a1cbc694e24c01Timo Sirainen int deny_severity = 0;
6b43203878bd3c87f5ae690617a1cbc694e24c01Timo Sirainen request_init((void *)0);
2615df45a8027948a474abe5e817b34b0499c171Timo Sirainen i_cv_have_libwrap=yes
1795e934ebcd58175d3b5bbdd811b13c7889efa3Timo Sirainen i_cv_have_libwrap=no
cb931f84e3ec8e3deda253a1c0ae0409023de096Timo Sirainen if test $i_cv_have_libwrap = yes; then
cb931f84e3ec8e3deda253a1c0ae0409023de096Timo Sirainen AC_DEFINE(HAVE_LIBWRAP,, Define if you have libwrap)
cb931f84e3ec8e3deda253a1c0ae0409023de096Timo Sirainen LIBWRAP_LIBS=-lwrap
1795e934ebcd58175d3b5bbdd811b13c7889efa3Timo Sirainen AC_SUBST(LIBWRAP_LIBS)
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo Sirainen have_libwrap=yes
426e50e7647009bb22db67d9012043f0a59e7452Timo Sirainen if test "$want_libwrap" = "yes"; then
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo Sirainen AC_ERROR([Can't build with libwrap support: libwrap not found])
faeaff460d763bb4b574d31d78773f91aaba5510Timo Sirainen LIBS=$old_LIBS
faeaff460d763bb4b574d31d78773f91aaba5510Timo Sirainen if test "$want_libwrap" = "yes"; then
cb931f84e3ec8e3deda253a1c0ae0409023de096Timo Sirainen AC_ERROR([Can't build with libwrap support: tcpd.h not found])
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo SirainenAM_CONDITIONAL(TCPWRAPPERS, test "$have_libwrap" = "yes")
426e50e7647009bb22db67d9012043f0a59e7452Timo SirainenAC_DEFINE(PACKAGE_WEBPAGE, "http://www.dovecot.org/", Support URL)
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo Sirainendnl * after -lsocket and -lnsl tests, inet_aton() may be in them
b089505afb8b5c5dfb43ef88af0ea7e0920db587Timo SirainenAC_CHECK_FUNCS(fcntl flock lockf inet_aton sigaction getpagesize madvise \
b089505afb8b5c5dfb43ef88af0ea7e0920db587Timo Sirainen strcasecmp stricmp vsyslog writev pread uname unsetenv \
426e50e7647009bb22db67d9012043f0a59e7452Timo Sirainen setrlimit setproctitle seteuid setreuid setegid setresgid \
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo Sirainen strtoull strtoll strtouq strtoq getmntinfo \
2b682d8d3661800f16aceaa45fa4de9b6b140a59Timo Sirainen setpriority quotactl getmntent kqueue kevent backtrace_symbols \
2b682d8d3661800f16aceaa45fa4de9b6b140a59Timo Sirainen walkcontext dirfd clearenv malloc_usable_size glob fallocate \
2b682d8d3661800f16aceaa45fa4de9b6b140a59Timo Sirainen posix_fadvise getpeereid getpeerucred)
2b682d8d3661800f16aceaa45fa4de9b6b140a59Timo SirainenAC_CHECK_TYPES([struct sockpeercred])
2b682d8d3661800f16aceaa45fa4de9b6b140a59Timo SirainenAC_CHECK_LIB(rt, clock_gettime, [
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo Sirainen AC_DEFINE(HAVE_CLOCK_GETTIME,, Define if you have the clock_gettime function)
1795e934ebcd58175d3b5bbdd811b13c7889efa3Timo Sirainen LIBS="$LIBS -lrt"
426e50e7647009bb22db67d9012043f0a59e7452Timo Sirainen AC_CHECK_FUNCS(clock_gettime)
2615df45a8027948a474abe5e817b34b0499c171Timo Sirainendnl strtoimax and strtoumax are macros in HP-UX, so inttypes.h must be included
82995cc154a929f37aa486a72a6485e9f8d34a30Timo Sirainendnl Link instead of just compiling since there's something wrong with Tru64
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo SirainenAC_CACHE_CHECK([for strtoimax],i_cv_have_strtoimax,[
2615df45a8027948a474abe5e817b34b0499c171Timo Sirainen AC_TRY_LINK([
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo Sirainen strtoimax(0, 0, 0);
2615df45a8027948a474abe5e817b34b0499c171Timo Sirainen i_cv_have_strtoimax=yes
9fc97c8aa8190df87624d214bcc5d0b5362bec93Timo Sirainen i_cv_have_strtoimax=no
de5c7c99783cd86f3bdbc057345cbee923b51a20Timo Sirainenif test $i_cv_have_strtoimax = yes; then
9fc97c8aa8190df87624d214bcc5d0b5362bec93Timo Sirainen AC_DEFINE(HAVE_STRTOIMAX,, Define if you have strtoimax function)
de5c7c99783cd86f3bdbc057345cbee923b51a20Timo SirainenAC_CACHE_CHECK([for strtoumax],i_cv_have_strtoumax,[
de5c7c99783cd86f3bdbc057345cbee923b51a20Timo Sirainen AC_TRY_LINK([
de5c7c99783cd86f3bdbc057345cbee923b51a20Timo Sirainen strtoumax(0, 0, 0);
2615df45a8027948a474abe5e817b34b0499c171Timo Sirainen i_cv_have_strtoumax=yes
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo Sirainen i_cv_have_strtoumax=no
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo Sirainenif test $i_cv_have_strtoumax = yes; then
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo Sirainen AC_DEFINE(HAVE_STRTOUMAX,, Define if you have strtoumax function)
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo Sirainendnl * I/O loop function
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo Sirainenhave_ioloop=no
82995cc154a929f37aa486a72a6485e9f8d34a30Timo Sirainenif test "$ioloop" = "best" || test "$ioloop" = "epoll"; then
1795e934ebcd58175d3b5bbdd811b13c7889efa3Timo Sirainen AC_CACHE_CHECK([whether we can use epoll],i_cv_epoll_works,[
1795e934ebcd58175d3b5bbdd811b13c7889efa3Timo Sirainen return epoll_create(5) < 1;
d23c747de9d33966483fbdd41f08ad7766da7c5cTimo Sirainen i_cv_epoll_works=yes
82995cc154a929f37aa486a72a6485e9f8d34a30Timo Sirainen i_cv_epoll_works=no
2615df45a8027948a474abe5e817b34b0499c171Timo Sirainen if test $i_cv_epoll_works = yes; then
2615df45a8027948a474abe5e817b34b0499c171Timo Sirainen AC_DEFINE(IOLOOP_EPOLL,, Implement I/O loop with Linux 2.6 epoll())
d23c747de9d33966483fbdd41f08ad7766da7c5cTimo Sirainen have_ioloop=yes
d23c747de9d33966483fbdd41f08ad7766da7c5cTimo Sirainen if test "$ioloop" = "epoll" ; then
d23c747de9d33966483fbdd41f08ad7766da7c5cTimo Sirainen AC_MSG_ERROR([epoll ioloop requested but epoll_create() is not available])
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo Sirainenif test "$ioloop" = "best" || test "$ioloop" = "kqueue"; then
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo Sirainen if test "$ac_cv_func_kqueue" = yes && test "$ac_cv_func_kevent" = yes; then
82995cc154a929f37aa486a72a6485e9f8d34a30Timo Sirainen AC_DEFINE(IOLOOP_KQUEUE,, [Implement I/O loop with BSD kqueue()])
1795e934ebcd58175d3b5bbdd811b13c7889efa3Timo Sirainen ioloop=kqueue
1795e934ebcd58175d3b5bbdd811b13c7889efa3Timo Sirainen have_ioloop=yes
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo Sirainen elif test "$ioloop" = "kqueue"; then
d23c747de9d33966483fbdd41f08ad7766da7c5cTimo Sirainen AC_MSG_ERROR([kqueue ioloop requested but kqueue() is not available])
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo Sirainenif test "$ioloop" = "best" || test "$ioloop" = "poll"; then
2615df45a8027948a474abe5e817b34b0499c171Timo Sirainen AC_CHECK_FUNC(poll, [
2615df45a8027948a474abe5e817b34b0499c171Timo Sirainen AC_DEFINE(IOLOOP_POLL,, Implement I/O loop with poll())
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo Sirainen have_ioloop=yes
2615df45a8027948a474abe5e817b34b0499c171Timo Sirainenif test "$have_ioloop" = "no"; then
2615df45a8027948a474abe5e817b34b0499c171Timo Sirainen AC_DEFINE(IOLOOP_SELECT,, Implement I/O loop with select())
2d8b23805db6f06b8b38174fb6e135386694f429Timo Sirainen ioloop="select"
40c24f8fe31037b61f2ac594a6dfcd123080b4b5Timo Sirainenhave_notify=none
c0a87e5f3316a57e6f915882fa1951d0fbb74a61Timo Sirainenif test "$notify" = "" || test "$notify" = "inotify" ; then
40c24f8fe31037b61f2ac594a6dfcd123080b4b5Timo Sirainen dnl * inotify?
40c24f8fe31037b61f2ac594a6dfcd123080b4b5Timo Sirainen AC_CACHE_CHECK([whether we can use inotify],i_cv_inotify_works,[
766115d2b2e6dbcf59f90d3b3866851cf6f740feTimo Sirainen #define _GNU_SOURCE
2d8b23805db6f06b8b38174fb6e135386694f429Timo Sirainen char * fn = "/tmp";
6d6bbe8787354bbb69d0c03187adfe0f497d70b8Timo Sirainen fd = inotify_init ();
6d6bbe8787354bbb69d0c03187adfe0f497d70b8Timo Sirainen perror ("inotify_init");
2615df45a8027948a474abe5e817b34b0499c171Timo Sirainen wd = inotify_add_watch (fd, fn, IN_ALL_EVENTS);
6d6bbe8787354bbb69d0c03187adfe0f497d70b8Timo Sirainen perror ("inotify_add_watch");
6d6bbe8787354bbb69d0c03187adfe0f497d70b8Timo Sirainen inotify_rm_watch (fd, wd);
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo Sirainen i_cv_inotify_works=yes
82995cc154a929f37aa486a72a6485e9f8d34a30Timo Sirainen i_cv_inotify_works=no
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo Sirainen if test $i_cv_inotify_works = yes; then
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo Sirainen have_notify=inotify
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo Sirainen notify=inotify
6d6bbe8787354bbb69d0c03187adfe0f497d70b8Timo Sirainen AC_DEFINE(IOLOOP_NOTIFY_INOTIFY,, Use Linux inotify)
6d6bbe8787354bbb69d0c03187adfe0f497d70b8Timo Sirainen if test "$notify" = "inotify"; then
0e5819a061034f1636b124c03a89f67d37c852b1Timo Sirainen AC_MSG_ERROR([inotify requested but not available])
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo Sirainenif (test "$notify" = "" && test "$ioloop" = kqueue) || test "$notify" = "kqueue"; then
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo Sirainen dnl * BSD kqueue() notify
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo Sirainen AC_MSG_CHECKING([whether we can use BSD kqueue() notify])
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo Sirainen if test "$ac_cv_func_kqueue" = yes && test "$ac_cv_func_kevent" = yes ; then
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo Sirainen have_notify=kqueue
0e5819a061034f1636b124c03a89f67d37c852b1Timo Sirainen notify=kqueue
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo Sirainen AC_MSG_RESULT("yes")
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo Sirainen AC_DEFINE(IOLOOP_NOTIFY_KQUEUE,,
82995cc154a929f37aa486a72a6485e9f8d34a30Timo Sirainen Use BSD kqueue directory changes notificaton)
82995cc154a929f37aa486a72a6485e9f8d34a30Timo Sirainen AC_MSG_RESULT("no")
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo Sirainen if test "$notify" = "kqueue" ; then
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo Sirainen AC_MSG_ERROR([kqueue notify requested but kqueue() is not available])
bd7b1a9000b12349e2a99bb43b3ce8b96a18e92bTimo Sirainenif test "$notify" = "" || test "$notify" = "dnotify"; then
bd7b1a9000b12349e2a99bb43b3ce8b96a18e92bTimo Sirainen dnl * dnotify?
bd7b1a9000b12349e2a99bb43b3ce8b96a18e92bTimo Sirainen AC_CACHE_CHECK([whether we can use dnotify],i_cv_have_dnotify,[
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo Sirainen AC_TRY_COMPILE([
1795e934ebcd58175d3b5bbdd811b13c7889efa3Timo Sirainen #define _GNU_SOURCE
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo Sirainen fcntl(0, F_SETSIG, SIGRTMIN);
82995cc154a929f37aa486a72a6485e9f8d34a30Timo Sirainen fcntl(0, F_NOTIFY, DN_CREATE | DN_DELETE | DN_RENAME | DN_MULTISHOT);
d23c747de9d33966483fbdd41f08ad7766da7c5cTimo Sirainen i_cv_have_dnotify=yes
82995cc154a929f37aa486a72a6485e9f8d34a30Timo Sirainen i_cv_have_dnotify=no
82995cc154a929f37aa486a72a6485e9f8d34a30Timo Sirainen if test $i_cv_have_dnotify = yes; then
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo Sirainen AC_DEFINE(IOLOOP_NOTIFY_DNOTIFY,, Use Linux dnotify)
4981827cb5e32cf767b7b0e3070137e6b36f42afTimo Sirainen have_notify=dnotify
4981827cb5e32cf767b7b0e3070137e6b36f42afTimo Sirainen notify=dnotify
f6f94063c4c3080280b87ab47ac2bb756ba002f9Timo Sirainen if test "$notify" = "dnotify"; then
d23c747de9d33966483fbdd41f08ad7766da7c5cTimo Sirainen AC_MSG_ERROR([dnotify requested but not available])
3fe44a0df5a0bdd80c495f79cbf0e384441d6fccTimo Sirainenif test "$have_notify" = "none"; then
f6f94063c4c3080280b87ab47ac2bb756ba002f9Timo Sirainen AC_DEFINE(IOLOOP_NOTIFY_NONE,, No special notify support)
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo SirainenAC_CACHE_CHECK([whether we have glibc],i_cv_have_glibc,[
1795e934ebcd58175d3b5bbdd811b13c7889efa3Timo Sirainen AC_TRY_COMPILE([
e392fcb39a06609af20a9e79017683f194de3ddeTimo Sirainen #ifdef __GLIBC__
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo Sirainen we have glibc
e392fcb39a06609af20a9e79017683f194de3ddeTimo Sirainen i_cv_have_glibc=no
e392fcb39a06609af20a9e79017683f194de3ddeTimo Sirainen i_cv_have_glibc=yes
3851ad9fcb25635f02b46d44586742ef1081876bTimo Sirainenif test "$i_cv_have_glibc" = "yes"; then
3851ad9fcb25635f02b46d44586742ef1081876bTimo Sirainen AC_DEFINE(PREAD_WRAPPERS,, Define if pread/pwrite needs _XOPEN_SOURCE 500)
3851ad9fcb25635f02b46d44586742ef1081876bTimo Sirainendnl * Old glibcs have broken posix_fallocate(). Make sure not to use it.
cb931f84e3ec8e3deda253a1c0ae0409023de096Timo Sirainendnl * It may also be broken in AIX.
cb931f84e3ec8e3deda253a1c0ae0409023de096Timo SirainenAC_CACHE_CHECK([whether posix_fallocate() works],i_cv_posix_fallocate_works,[
cb931f84e3ec8e3deda253a1c0ae0409023de096Timo Sirainen #define _XOPEN_SOURCE 600
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo Sirainen #if defined(__GLIBC__) && (__GLIBC__ < 2 || __GLIBC_MINOR__ < 7)
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo Sirainen possibly broken posix_fallocate
e392fcb39a06609af20a9e79017683f194de3ddeTimo Sirainen int fd = creat("conftest.temp", 0600);
e392fcb39a06609af20a9e79017683f194de3ddeTimo Sirainen if (fd == -1) {
3851ad9fcb25635f02b46d44586742ef1081876bTimo Sirainen perror("creat()");
2521fd0986302cdabc8b0711eef63ac188f32cd6Timo Sirainen ret = posix_fallocate(fd, 1024, 1024) < 0 ? 1 : 0;
2521fd0986302cdabc8b0711eef63ac188f32cd6Timo Sirainen i_cv_posix_fallocate_works=yes
2521fd0986302cdabc8b0711eef63ac188f32cd6Timo Sirainen i_cv_posix_fallocate_works=no
2521fd0986302cdabc8b0711eef63ac188f32cd6Timo Sirainenif test $i_cv_posix_fallocate_works = yes; then
2521fd0986302cdabc8b0711eef63ac188f32cd6Timo Sirainen AC_DEFINE(HAVE_POSIX_FALLOCATE,, Define if you have a working posix_fallocate())
2521fd0986302cdabc8b0711eef63ac188f32cd6Timo Sirainendnl * OS specific options
2521fd0986302cdabc8b0711eef63ac188f32cd6Timo SirainenDC_PLUGIN_DEPS
2521fd0986302cdabc8b0711eef63ac188f32cd6Timo Sirainencase "$host_os" in
2521fd0986302cdabc8b0711eef63ac188f32cd6Timo Sirainen CFLAGS="$CFLAGS -D_XOPEN_SOURCE -D_XOPEN_SOURCE_EXTENDED"
2521fd0986302cdabc8b0711eef63ac188f32cd6Timo Sirainen # for getting fd_send/fd_recv working:
2521fd0986302cdabc8b0711eef63ac188f32cd6Timo Sirainen LDFLAGS="$LDFLAGS -Wl,+b,:"
2521fd0986302cdabc8b0711eef63ac188f32cd6Timo Sirainen LIBS="-lxnet $LIBS"
2521fd0986302cdabc8b0711eef63ac188f32cd6Timo Sirainen AC_DEFINE(PREAD_BROKEN,, Defint if pread/pwrite implementation is broken)
2521fd0986302cdabc8b0711eef63ac188f32cd6Timo Sirainen linux*|darwin*)
2521fd0986302cdabc8b0711eef63ac188f32cd6Timo Sirainen AC_DEFINE(PROCTITLE_HACK,, Define if process title can be changed by modifying argv)
2521fd0986302cdabc8b0711eef63ac188f32cd6Timo SirainenAC_CHECK_SIZEOF(int)
2521fd0986302cdabc8b0711eef63ac188f32cd6Timo SirainenAC_CHECK_SIZEOF(long)
2521fd0986302cdabc8b0711eef63ac188f32cd6Timo SirainenAC_CHECK_SIZEOF(void *)
2521fd0986302cdabc8b0711eef63ac188f32cd6Timo SirainenAC_CHECK_SIZEOF(long long)
2521fd0986302cdabc8b0711eef63ac188f32cd6Timo SirainenAC_DEFUN([AC_TYPEOF], [
1795e934ebcd58175d3b5bbdd811b13c7889efa3Timo Sirainen dnl * first check if we can get the size with redefining typedefs
1795e934ebcd58175d3b5bbdd811b13c7889efa3Timo Sirainen if test "$2" = ""; then
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo Sirainen order="int long long-long"
2615df45a8027948a474abe5e817b34b0499c171Timo Sirainen visible="unknown"
2615df45a8027948a474abe5e817b34b0499c171Timo Sirainen AC_MSG_CHECKING([type of $1])
6b43203878bd3c87f5ae690617a1cbc694e24c01Timo Sirainen AC_CACHE_VAL(i_cv_typeof_$1,[
6b43203878bd3c87f5ae690617a1cbc694e24c01Timo Sirainen if test "x$ac_cv_c_compiler_gnu" = "xyes"; then
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo Sirainen dnl * try with printf() + -Werror
30ad2b0309119501efad06c72ec9b1561b90d4afTimo Sirainen old_CFLAGS="$CFLAGS"
bc7a4cf2c06702ebaedba9a7c15ce657d5856f63Timo Sirainen CFLAGS="$CFLAGS -Werror"
97daba82224dd757b7b7526ab3fd5d574a5f35d8Timo Sirainen for type in $order; do
10ccd0e45768923d69be459e87ef6cd2574cec60Timo Sirainen case "$type" in
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo Sirainen unsigned-int)
b2e181e33889f0a4a3ba9dc23d676cbfe1bf7782Timo Sirainen unsigned-long)
b2e181e33889f0a4a3ba9dc23d676cbfe1bf7782Timo Sirainen unsigned-long-long)
6d6bbe8787354bbb69d0c03187adfe0f497d70b8Timo Sirainen if test "$fmt" != ""; then
d5d23d5ff8b7a06d2ead489ddcf55ee8fb5ca7b6Timo Sirainen AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
cb931f84e3ec8e3deda253a1c0ae0409023de096Timo Sirainen printf("$fmt", ($1)0);
cb931f84e3ec8e3deda253a1c0ae0409023de096Timo Sirainen if test "$result" != ""; then
cb931f84e3ec8e3deda253a1c0ae0409023de096Timo Sirainen dnl * warning check isn't working
7db5ff0dd17c40711bfaa0375aa5cc7f822a82f2Timo Sirainen visible="unknown"
7db5ff0dd17c40711bfaa0375aa5cc7f822a82f2Timo Sirainen result="`echo $type|sed 's/-/ /g'`"
7db5ff0dd17c40711bfaa0375aa5cc7f822a82f2Timo Sirainen visible="$result"
bc7a4cf2c06702ebaedba9a7c15ce657d5856f63Timo Sirainen CFLAGS="$old_CFLAGS"
269370f66e320a071700e33d9f2584eb46d96a90Timo Sirainen if test "$result" = ""; then
269370f66e320a071700e33d9f2584eb46d96a90Timo Sirainen for type in $order; do
269370f66e320a071700e33d9f2584eb46d96a90Timo Sirainen type="`echo $type|sed 's/-/ /g'`"
bc7a4cf2c06702ebaedba9a7c15ce657d5856f63Timo Sirainen AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
50ecf65993bff429af04deef6c832deb019c76a5Timo Sirainen typedef $type $1;
269370f66e320a071700e33d9f2584eb46d96a90Timo Sirainen if test "$result" != ""; then
269370f66e320a071700e33d9f2584eb46d96a90Timo Sirainen dnl * compiler allows redefining to anything
7db5ff0dd17c40711bfaa0375aa5cc7f822a82f2Timo Sirainen visible="unknown"
7db5ff0dd17c40711bfaa0375aa5cc7f822a82f2Timo Sirainen result="$type"
b2e181e33889f0a4a3ba9dc23d676cbfe1bf7782Timo Sirainen visible="$type"
7db5ff0dd17c40711bfaa0375aa5cc7f822a82f2Timo Sirainen if test "$result" = ""; then
7db5ff0dd17c40711bfaa0375aa5cc7f822a82f2Timo Sirainen dnl * check with sizes
b863b7e3fccf75f90f613b875f02fd1781e14e5eTimo Sirainen dnl * older autoconfs don't include sys/types.h, so do it manually
269370f66e320a071700e33d9f2584eb46d96a90Timo Sirainen AC_RUN_IFELSE([AC_LANG_SOURCE([[
269370f66e320a071700e33d9f2584eb46d96a90Timo Sirainen FILE *f=fopen("conftestval", "w");
269370f66e320a071700e33d9f2584eb46d96a90Timo Sirainen if (!f) exit(1);
269370f66e320a071700e33d9f2584eb46d96a90Timo Sirainen fprintf(f, "%d\n", sizeof($1));
7db5ff0dd17c40711bfaa0375aa5cc7f822a82f2Timo Sirainen size=`cat conftestval`
7db5ff0dd17c40711bfaa0375aa5cc7f822a82f2Timo Sirainen rm -f conftestval
b2e181e33889f0a4a3ba9dc23d676cbfe1bf7782Timo Sirainen for type in $order; do
b2e181e33889f0a4a3ba9dc23d676cbfe1bf7782Timo Sirainen actype="ac_cv_sizeof_`echo $type|sed 's/-/_/g'`"
b2e181e33889f0a4a3ba9dc23d676cbfe1bf7782Timo Sirainen if test "$size" = "`eval echo \\$$actype`"; then
b2e181e33889f0a4a3ba9dc23d676cbfe1bf7782Timo Sirainen result="`echo $type|sed 's/-/ /g'`"
b2e181e33889f0a4a3ba9dc23d676cbfe1bf7782Timo Sirainen visible="`expr $size \* 8`bit (using $result)"
76a99afe0914951d20d96e0bf5e6d8d3ea3fd503Timo Sirainen if test "$result" = ""; then
76a99afe0914951d20d96e0bf5e6d8d3ea3fd503Timo Sirainen result=unknown
b40d1ef77181fda648e2ba22188c91a124f5bee6Timo Sirainen visible="`expr $size \* 8`bit (unknown type)"
4f68fa8a117642e2c134a29d8e35569bce6c3158Timo Sirainen i_cv_typeof_$1=$result/$visible
76a99afe0914951d20d96e0bf5e6d8d3ea3fd503Timo Sirainen typeof_$1=`echo $i_cv_typeof_$1 | sed s,/.*$,,`
76a99afe0914951d20d96e0bf5e6d8d3ea3fd503Timo Sirainen visible=`echo $i_cv_typeof_$1 | sed s,^.*/,,`
76a99afe0914951d20d96e0bf5e6d8d3ea3fd503Timo Sirainen AC_MSG_RESULT($visible)
76a99afe0914951d20d96e0bf5e6d8d3ea3fd503Timo SirainenAC_SYS_LARGEFILE
596ec384269cad3b0f0661df89b9cf33cbd171b7Timo SirainenAC_CHECK_TYPES(_Bool)
596ec384269cad3b0f0661df89b9cf33cbd171b7Timo SirainenAC_CHECK_TYPE(uoff_t, [
596ec384269cad3b0f0661df89b9cf33cbd171b7Timo Sirainen have_uoff_t=yes
596ec384269cad3b0f0661df89b9cf33cbd171b7Timo Sirainen AC_DEFINE(HAVE_UOFF_T,, Define if you have a native uoff_t type)
596ec384269cad3b0f0661df89b9cf33cbd171b7Timo Sirainen have_uoff_t=no
503e5ef896c7b4a51cf73efb0d132860a8c747e6Timo SirainenAC_TYPEOF(off_t, long int long-long)
76a99afe0914951d20d96e0bf5e6d8d3ea3fd503Timo Sirainencase "$typeof_off_t" in
2d3731908f924bc8a2b7887a712cc033e618c998Timo Sirainen offt_max=INT_MAX
76a99afe0914951d20d96e0bf5e6d8d3ea3fd503Timo Sirainen uofft_fmt="u"
76a99afe0914951d20d96e0bf5e6d8d3ea3fd503Timo Sirainen if test "$have_uoff_t" != "yes"; then
76a99afe0914951d20d96e0bf5e6d8d3ea3fd503Timo Sirainen AC_DEFINE(UOFF_T_INT,, Define if off_t is int)
76a99afe0914951d20d96e0bf5e6d8d3ea3fd503Timo Sirainen offt_bits=`expr 8 \* $ac_cv_sizeof_int`
76a99afe0914951d20d96e0bf5e6d8d3ea3fd503Timo Sirainen offt_max=LONG_MAX
76a99afe0914951d20d96e0bf5e6d8d3ea3fd503Timo Sirainen uofft_fmt="lu"
76a99afe0914951d20d96e0bf5e6d8d3ea3fd503Timo Sirainen if test "$have_uoff_t" != "yes"; then
76a99afe0914951d20d96e0bf5e6d8d3ea3fd503Timo Sirainen AC_DEFINE(UOFF_T_LONG,, Define if off_t is long)
503e5ef896c7b4a51cf73efb0d132860a8c747e6Timo Sirainen offt_bits=`expr 8 \* $ac_cv_sizeof_long`
503e5ef896c7b4a51cf73efb0d132860a8c747e6Timo Sirainen offt_max=LLONG_MAX
503e5ef896c7b4a51cf73efb0d132860a8c747e6Timo Sirainen uofft_fmt="llu"
503e5ef896c7b4a51cf73efb0d132860a8c747e6Timo Sirainen if test "$have_uoff_t" != "yes"; then
20dd6f6726db692904794d7daafe5b6e7238b720Timo Sirainen AC_DEFINE(UOFF_T_LONG_LONG,, Define if off_t is long long)
503e5ef896c7b4a51cf73efb0d132860a8c747e6Timo Sirainen offt_bits=`expr 8 \* $ac_cv_sizeof_long_long`
503e5ef896c7b4a51cf73efb0d132860a8c747e6Timo Sirainen AC_MSG_ERROR([Unsupported off_t type])
503e5ef896c7b4a51cf73efb0d132860a8c747e6Timo Sirainendnl * Do we have struct dirent->d_type
503e5ef896c7b4a51cf73efb0d132860a8c747e6Timo SirainenAC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
503e5ef896c7b4a51cf73efb0d132860a8c747e6Timo Sirainen struct dirent d;
503e5ef896c7b4a51cf73efb0d132860a8c747e6Timo Sirainen AC_DEFINE(HAVE_DIRENT_D_TYPE,, Define if you have struct dirent->d_type)
ad4f1b0666975c57dd2d8d3492b223ec814791cdTimo Sirainendnl * Do we have OFF_T_MAX?
b40d1ef77181fda648e2ba22188c91a124f5bee6Timo SirainenAC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
503e5ef896c7b4a51cf73efb0d132860a8c747e6Timo Sirainen off_t i = OFF_T_MAX;
503e5ef896c7b4a51cf73efb0d132860a8c747e6Timo Sirainen AC_DEFINE_UNQUOTED(OFF_T_MAX, $offt_max, Maximum value of off_t)
503e5ef896c7b4a51cf73efb0d132860a8c747e6Timo SirainenAC_DEFINE_UNQUOTED(PRIuUOFF_T, "$uofft_fmt", printf() format for uoff_t)
503e5ef896c7b4a51cf73efb0d132860a8c747e6Timo Sirainendnl * make sure size_t isn't signed. we'd probably work fine with it, but
503e5ef896c7b4a51cf73efb0d132860a8c747e6Timo Sirainendnl * it's more likely vulnerable to buffer overflows. Anyway, C99 specifies
503e5ef896c7b4a51cf73efb0d132860a8c747e6Timo Sirainendnl * that it's unsigned and only some old systems define it as signed.
503e5ef896c7b4a51cf73efb0d132860a8c747e6Timo SirainenAC_CACHE_CHECK([whether size_t is signed],i_cv_signed_size_t,[
503e5ef896c7b4a51cf73efb0d132860a8c747e6Timo Sirainen AC_RUN_IFELSE([AC_LANG_SOURCE([[
968aab2a00d1b53a53854fc2e97d1c632171a54eTimo Sirainen /* return 0 if we're signed */
4ee00532a265bdfb38539d811fcd12d51210ac35Timo Sirainen exit((size_t)(int)-1 <= 0 ? 0 : 1);
b089505afb8b5c5dfb43ef88af0ea7e0920db587Timo Sirainen i_cv_signed_size_t=yes
503e5ef896c7b4a51cf73efb0d132860a8c747e6Timo Sirainen echo "Your system's size_t is a signed integer, Dovecot isn't designed to"
968aab2a00d1b53a53854fc2e97d1c632171a54eTimo Sirainen echo "support it. It probably works just fine, but it's less resistant to"
503e5ef896c7b4a51cf73efb0d132860a8c747e6Timo Sirainen echo "buffer overflows. If you're not worried about this and still want to"
89adb28d8f041e8c0b9c5156f089bb2f8f478ee3Timo Sirainen echo "compile Dovecot, set ignore_signed_size=1 environment."
6d6bbe8787354bbb69d0c03187adfe0f497d70b8Timo Sirainen if test "$ignore_signed_size" = ""; then
d23c747de9d33966483fbdd41f08ad7766da7c5cTimo Sirainen AC_MSG_ERROR([aborting])
2b682d8d3661800f16aceaa45fa4de9b6b140a59Timo Sirainen echo "..ignoring as requested.."
2b682d8d3661800f16aceaa45fa4de9b6b140a59Timo Sirainen i_cv_signed_size_t=no
503e5ef896c7b4a51cf73efb0d132860a8c747e6Timo Sirainendnl Note: we check size_t rather than ssize_t here, because on OSX 10.2
503e5ef896c7b4a51cf73efb0d132860a8c747e6Timo Sirainendnl ssize_t = int and size_t = unsigned long. We're mostly concerned about
aaebcf0da12df7216be69961204fa64ec24c54b9Timo Sirainendnl printf format here, so check the size_t one.
968aab2a00d1b53a53854fc2e97d1c632171a54eTimo SirainenAC_TYPEOF(size_t, unsigned-int unsigned-long unsigned-long-long)
503e5ef896c7b4a51cf73efb0d132860a8c747e6Timo Sirainencase "$typeof_size_t" in
d8548e14925a06e44c4f1983d7b118b0180939e0Timo Sirainen "unsigned long")
d8548e14925a06e44c4f1983d7b118b0180939e0Timo Sirainen ssizet_max=LONG_MAX
aaebcf0da12df7216be69961204fa64ec24c54b9Timo Sirainen sizet_fmt="lu"
aaebcf0da12df7216be69961204fa64ec24c54b9Timo Sirainen "unsigned long long")
aaebcf0da12df7216be69961204fa64ec24c54b9Timo Sirainen ssizet_max=LLONG_MAX
968aab2a00d1b53a53854fc2e97d1c632171a54eTimo Sirainen sizet_fmt="llu"
503e5ef896c7b4a51cf73efb0d132860a8c747e6Timo Sirainen dnl older systems didn't have ssize_t, default to int
503e5ef896c7b4a51cf73efb0d132860a8c747e6Timo Sirainen ssizet_max=INT_MAX
503e5ef896c7b4a51cf73efb0d132860a8c747e6Timo Sirainen sizet_fmt="u"
503e5ef896c7b4a51cf73efb0d132860a8c747e6Timo Sirainen if test "$typeof_size_t" = ""; then
503e5ef896c7b4a51cf73efb0d132860a8c747e6Timo Sirainen AC_DEFINE(size_t, unsigned int, Define to 'unsigned int' if you don't have it)
503e5ef896c7b4a51cf73efb0d132860a8c747e6Timo Sirainen AC_DEFINE(ssize_t, int, Define to 'int' if you don't have it)
503e5ef896c7b4a51cf73efb0d132860a8c747e6Timo SirainenAC_DEFINE_UNQUOTED(SSIZE_T_MAX, $ssizet_max, Maximum value of ssize_t)
503e5ef896c7b4a51cf73efb0d132860a8c747e6Timo SirainenAC_DEFINE_UNQUOTED(PRIuSIZE_T, "$sizet_fmt", printf() format for size_t)
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo SirainenAC_DEFUN([AC_CHECKTYPE2], [
f6f94063c4c3080280b87ab47ac2bb756ba002f9Timo Sirainen AC_MSG_CHECKING([for $1])
83bb013a99f0936995f9c7a1077822662d8fefdbTimo Sirainen AC_CACHE_VAL(i_cv_type_$1,
f6f94063c4c3080280b87ab47ac2bb756ba002f9Timo Sirainen [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
83bb013a99f0936995f9c7a1077822662d8fefdbTimo Sirainen $2]], [[$1 t;]])],[i_cv_type_$1=yes],[i_cv_type_$1=no])])
83bb013a99f0936995f9c7a1077822662d8fefdbTimo Sirainen AC_MSG_RESULT($i_cv_type_$1)
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo Sirainendnl some systems don't have stdint.h, but still have some of the types
f6f94063c4c3080280b87ab47ac2bb756ba002f9Timo Sirainendnl defined elsewhere
f6f94063c4c3080280b87ab47ac2bb756ba002f9Timo SirainenAC_CHECK_HEADER(stdint.h, [
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo Sirainen stdint_include="#include <stdint.h>"
f6f94063c4c3080280b87ab47ac2bb756ba002f9Timo SirainenAC_CHECKTYPE2(uintmax_t, [$stdint_include])
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo Sirainenif test $i_cv_type_uintmax_t = yes; then
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo Sirainen AC_DEFINE(HAVE_UINTMAX_T,, Define if you have uintmax_t (C99 type))
b2e181e33889f0a4a3ba9dc23d676cbfe1bf7782Timo Sirainendnl use separate check, eg. Solaris 8 has uintmax_t but not uint_fast32_t
b2e181e33889f0a4a3ba9dc23d676cbfe1bf7782Timo SirainenAC_CHECKTYPE2(uint_fast32_t, [$stdint_include])
b2e181e33889f0a4a3ba9dc23d676cbfe1bf7782Timo Sirainenif test $i_cv_type_uint_fast32_t = yes; then
b2e181e33889f0a4a3ba9dc23d676cbfe1bf7782Timo Sirainen AC_DEFINE(HAVE_UINT_FAST32_T,, Define if you have uint_fast32_t (C99 type))
bc7a4cf2c06702ebaedba9a7c15ce657d5856f63Timo SirainenAC_CHECKTYPE2(socklen_t, [#include <sys/socket.h>])
bc7a4cf2c06702ebaedba9a7c15ce657d5856f63Timo Sirainenif test $i_cv_type_socklen_t = yes; then
d23c747de9d33966483fbdd41f08ad7766da7c5cTimo Sirainen AC_DEFINE(HAVE_SOCKLEN_T,, Define to 'int' if you don't have socklen_t)
3fe44a0df5a0bdd80c495f79cbf0e384441d6fccTimo SirainenAC_DEFINE_UNQUOTED(MEM_ALIGN_SIZE, $mem_align, Required memory alignment)
6800c6607013d4fdef5a4f764bae407301c6cce8Timo Sirainendnl * find random source
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo SirainenAC_MSG_CHECKING([for OpenBSD /dev/arandom])
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo Sirainenif test -c /dev/arandom; then
cb931f84e3ec8e3deda253a1c0ae0409023de096Timo Sirainen AC_MSG_RESULT(yes)
6800c6607013d4fdef5a4f764bae407301c6cce8Timo Sirainen AC_DEFINE(DEV_URANDOM_PATH, "/dev/arandom", Path to /dev/urandom)
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo Sirainen have_random_source=yes
b863b7e3fccf75f90f613b875f02fd1781e14e5eTimo Sirainen AC_MSG_RESULT(no)
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo Sirainen AC_MSG_CHECKING([for /dev/urandom])
6800c6607013d4fdef5a4f764bae407301c6cce8Timo Sirainen if test -c /dev/urandom || test -s /dev/urandom; then
30ad2b0309119501efad06c72ec9b1561b90d4afTimo Sirainen AC_MSG_RESULT(yes)
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo Sirainen AC_DEFINE(DEV_URANDOM_PATH, "/dev/urandom", Path to /dev/urandom)
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo Sirainen have_random_source=yes
6800c6607013d4fdef5a4f764bae407301c6cce8Timo Sirainen AC_MSG_RESULT(no)
cb931f84e3ec8e3deda253a1c0ae0409023de096Timo Sirainenif test "$have_random_source" != "yes"; then
cb931f84e3ec8e3deda253a1c0ae0409023de096Timo Sirainen AC_CHECK_HEADER(openssl/rand.h, [
cb931f84e3ec8e3deda253a1c0ae0409023de096Timo Sirainen AC_DEFINE(HAVE_OPENSSL_RAND_H,, Define if you have openssl/rand.h)
cb931f84e3ec8e3deda253a1c0ae0409023de096Timo Sirainen LIBS="$LIBS -lcrypto"
6800c6607013d4fdef5a4f764bae407301c6cce8Timo Sirainendnl * do we have tm_gmtoff
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo SirainenAC_MSG_CHECKING([for tm_gmtoff])
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo SirainenAC_CACHE_VAL(i_cv_field_tm_gmtoff,
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo Sirainen[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo Sirainen[[struct tm *tm; return tm->tm_gmtoff;]])],
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo Sirainen[i_cv_field_tm_gmtoff=yes],
6800c6607013d4fdef5a4f764bae407301c6cce8Timo Sirainen[i_cv_field_tm_gmtoff=no])])
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo Sirainenif test $i_cv_field_tm_gmtoff = yes; then
6800c6607013d4fdef5a4f764bae407301c6cce8Timo Sirainen AC_DEFINE(HAVE_TM_GMTOFF,, Define if you have struct tm->tm_gmtoff)
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo SirainenAC_MSG_RESULT($i_cv_field_tm_gmtoff)
6800c6607013d4fdef5a4f764bae407301c6cce8Timo Sirainendnl * how large time_t values does gmtime() accept?
6800c6607013d4fdef5a4f764bae407301c6cce8Timo SirainenAC_CACHE_CHECK([how large time_t values gmtime() accepts],i_cv_gmtime_max_time_t,[
83bb013a99f0936995f9c7a1077822662d8fefdbTimo Sirainen AC_RUN_IFELSE([AC_LANG_SOURCE([[
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo Sirainen for (bits = 1; bits < sizeof(time_t)*8; bits++) {
6800c6607013d4fdef5a4f764bae407301c6cce8Timo Sirainen time_t t = ((time_t)1 << bits) - 1;
6800c6607013d4fdef5a4f764bae407301c6cce8Timo Sirainen if (gmtime(&t) == NULL) {
bd7b1a9000b12349e2a99bb43b3ce8b96a18e92bTimo Sirainen if (bits > 40) {
bd7b1a9000b12349e2a99bb43b3ce8b96a18e92bTimo Sirainen /* Solaris 9 breaks after 55 bits. Perhaps other systems break earlier.
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo Sirainen Let's just do the same as Cyrus folks and limit it to 40 bits. */
bd7b1a9000b12349e2a99bb43b3ce8b96a18e92bTimo Sirainen f = fopen("conftest.temp", "w");
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo Sirainen if (f == NULL) {
6800c6607013d4fdef5a4f764bae407301c6cce8Timo Sirainen perror("fopen()");
bd7b1a9000b12349e2a99bb43b3ce8b96a18e92bTimo Sirainen fprintf(f, "%d", bits);
i_cv_gmtime_max_time_t=`cat conftest.temp`
rm -f conftest.temp
#include <sys/types.h>
AC_DEFINE_UNQUOTED(FLEXIBLE_ARRAY_MEMBER, $flexible_value, How to define flexible array members in structs)
#include <sys/types.h>
#include <sys/uio.h>
#include <unistd.h>]],
#include <sys/types.h>
#include <sys/types.h>
#include <sys/time.h>
#include <sys/resource.h>
#include <sys/types.h>
#include <sys/time.h>
#include <sys/resource.h>
#include <sys/types.h>
#include <sys/time.h>
#include <sys/resource.h>
#include <sys/prctl.h>
#include <unistd.h>
#include <sys/mman.h>
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <fcntl.h>
#include <sys/mman.h>
int f = open("conftest.mmap", O_RDWR|O_CREAT|O_TRUNC, 0600);
unlink("conftest.mmap");
#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"
send_fd = creat("conftest.fdpass", 0600);
unlink("conftest.fdpass");
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/sendfile.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/uio.h>
#include <stdlib.h>
dnl * Check for crypt() if unistd.h compiles with _XOPEN_SOURCE + _XPG6
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
unsigned long x = st.st_mtim.tv_nsec;
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
unsigned long x = st.st_mtimespec.tv_nsec;
AC_CACHE_CHECK([if statvfs.f_mntfromname exists],i_cv_have_statvfs_f_mntfromname,[
#include <sys/types.h>
#include <sys/statvfs.h>
char *p = buf.f_mntfromname;
AC_DEFINE(HAVE_STATVFS_MNTFROMNAME,, Define if you have statvfs.f_mntfromname)
AC_CACHE_CHECK([if statfs.f_mntfromname exists],i_cv_have_statfs_f_mntfromname,[
#include <sys/param.h>
#include <sys/mount.h>
char *p = buf.f_mntfromname;
AC_DEFINE(HAVE_STATFS_MNTFROMNAME,, Define if you have statfs.f_mntfromname)
dnl * Check if we have struct dqblk.dqb_curblocks
AC_CACHE_CHECK([if struct dqblk.dqb_curblocks exists],i_cv_have_dqblk_dqb_curblocks,[
#include <sys/types.h>
#include "$srcdir/src/plugins/quota/quota-fs.h"
unsigned int x = dqblk.dqb_curblocks;
AC_DEFINE(HAVE_STRUCT_DQBLK_CURBLOCKS,, Define if struct sqblk.dqb_curblocks exists)
dnl * Check if we have struct dqblk.dqb_curspace
AC_CACHE_CHECK([if struct dqblk.dqb_curspace exists],i_cv_have_dqblk_dqb_curspace,[
#include <sys/types.h>
#include "$srcdir/src/plugins/quota/quota-fs.h"
unsigned int x = dqblk.dqb_curspace;
AC_DEFINE(HAVE_STRUCT_DQBLK_CURSPACE,, Define if struct sqblk.dqb_curspace exists)
#include <sys/types.h>
#include <sys/fs/ufs_quota.h>
#include <stdio.h>
#include <stdarg.h>
#include <stdarg.h>
#include <stdarg.h>
#include <stdarg.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/vmount.h>
if test "$PKG_CONFIG" != "" && $PKG_CONFIG --exists openssl 2>/dev/null; then
AC_CHECK_HEADER(gnutls/gnutls.h, [
AC_ERROR([Can't build with GNUTLS: gnutls/gnutls.h not found])
AC_DEFINE(HAVE_SSL,, Build with SSL/TLS support)
AC_CHECK_HEADER(shadow.h, [
AC_ERROR([Can't build with shadow support: shadow.h not found])
AC_CHECK_HEADER(security/pam_appl.h, [
Define if you have security/pam_appl.h)
AC_CHECK_HEADER(pam/pam_appl.h, [
Define if you have pam/pam_appl.h)
AC_ERROR([Can't build with PAM support: pam_appl.h not found])
# have gssapi.h
AC_CHECK_HEADER([gssapi/gssapi.h], [
AC_DEFINE(HAVE_GSSAPI_GSSAPI_H,, GSSAPI headers in gssapi/gssapi.h)
AC_CHECK_HEADER([gssapi.h], [
AC_DEFINE(HAVE_GSSAPI_H,, GSSAPI headers in gssapi.h)
# include <gssapi.h>
# include <gssapi/gssapi.h>
#include <krb5.h>
#include <string.h>
AC_ERROR([Can't build with GSSAPI support: gssapi.h not found])
AC_CHECK_HEADER(ldap.h, [
AC_ERROR([Can't build with LDAP support: ldap.h not found])
#include <db.h>
AC_CHECK_HEADER(db.h, [
AC_ERROR([Can't build with db support: db.h not found])
if test -r "$i/$j/libpq-fe.h"; then
AC_CHECK_HEADER(libpq-fe.h, [
AC_ERROR([Can't build with PostgreSQL support: libpq-fe.h not found])
for j in include include/mysql ""; do
if test -r "$i/$j/mysql.h"; then
AC_CHECK_HEADER(mysql.h, [
#include <mysql.h>
AC_ERROR([Can't build with MySQL support: mysql.h not found])
AC_CHECK_HEADER(sqlite3.h, [
AC_ERROR([Can't build with SQLite support: sqlite3.h not found])
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_CHECKING([for vpopmail configuration at $vpop_etc/lib_deps])
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_ERROR([Can't build with vpopmail support: $vpop_etc/lib_deps not found])
# shrext_cmds comes from libtool.m4
#include <nss.h>
AC_ERROR([Can't build with NSS support: nss.h not found or not usable])
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>
#include <arpa/inet.h>]],
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="$LINKED_STORAGE_LIBS \$(top_builddir)/src/lib-ssl-iostream/libssl_iostream.la"
LIBDOVECOT_DEPS='$(top_builddir)/src/lib-dovecot/libdovecot.la'
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_SSL='$(top_builddir)/src/lib-master/libmaster_ssl.la $(top_builddir)/src/lib-ssl-iostream/libssl_iostream.la'
LIBDOVECOT_COMPRESS='$(top_builddir)/src/lib-compression/libcompression.la'
LIBDOVECOT_LDA='$(top_builddir)/src/lib-lda/libdovecot-lda.la'
LIBDOVECOT_DEPS='$(top_builddir)/src/lib-master/libmaster.la $(top_builddir)/src/lib-settings/libsettings.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/liblib.la'
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_LOGIN='$(top_builddir)/src/login-common/liblogin.la $(top_builddir)/src/lib-ssl-iostream/libssl_iostream.la'
LIBDOVECOT_SSL='$(top_builddir)/src/lib-master/libmaster_ssl.la $(top_builddir)/src/lib-ssl-iostream/libssl_iostream.la'
LIBDOVECOT_COMPRESS='$(top_builddir)/src/lib-compression/libcompression.la'
LIBDOVECOT_LDA='$(top_builddir)/src/lib-lda/liblda.la'
LIBDOVECOT_SQL='$(top_builddir)/src/lib-sql/libsql.la'
AC_CHECK_HEADER(zlib.h, [
AC_ERROR([Can't build with zlib support: zlib.h not found])
AC_CHECK_HEADER(bzlib.h, [
AC_ERROR([Can't build with bzlib support: bzlib.h not found])
if test -f /usr/include/rpcsvc/rquota.x && test -n "$RPCGEN"; then
AC_CHECK_HEADER(expat.h, [
AC_ERROR([Can't build with Solr support: expat.h not found])
FILES1=`find $srcdir/src -name '*settings.[[ch]]'|grep "$srcdir/src/lib-" | sed 's/^\(.*\)\(.\)$/\2 \1\2/' | 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'`
capability="$capability_banner SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS MULTIAPPEND URL-PARTIAL CATENATE UNSELECT CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS SPECIAL-USE"
AC_DEFINE_UNQUOTED(CAPABILITY_BANNER_STRING, "$capability_banner", IMAP capabilities advertised in banner)
RUN_TEST='$(SHELL) $(top_srcdir)/run-test.sh'
AC_CONFIG_HEADERS([config.h])