configure.in revision f052a448696b1246ee9fc36b7c727237aed56058
a8c5a86d183db25a57bf193c06b41e092ec2e151Timo SirainenAC_PREREQ([2.59])
1795e934ebcd58175d3b5bbdd811b13c7889efa3Timo SirainenAC_INIT([Dovecot],[2.2.UNSTABLE],[dovecot@dovecot.org])
1795e934ebcd58175d3b5bbdd811b13c7889efa3Timo SirainenAC_CONFIG_SRCDIR([src])
1795e934ebcd58175d3b5bbdd811b13c7889efa3Timo Sirainen
82995cc154a929f37aa486a72a6485e9f8d34a30Timo SirainenAM_INIT_AUTOMAKE([foreign])
76a99afe0914951d20d96e0bf5e6d8d3ea3fd503Timo Sirainen
bdd36cfdba3ff66d25570a9ff568d69e1eb543cfTimo SirainenAM_MAINTAINER_MODE
76a99afe0914951d20d96e0bf5e6d8d3ea3fd503Timo SirainenPKG_PROG_PKG_CONFIG
596ec384269cad3b0f0661df89b9cf33cbd171b7Timo Sirainen
2521fd0986302cdabc8b0711eef63ac188f32cd6Timo SirainenACLOCAL_AMFLAGS='-I $(top_srcdir)'
b039dabf4c53f72454e795930e7643b6e0e625f9Timo SirainenAC_SUBST(ACLOCAL_AMFLAGS)
1795e934ebcd58175d3b5bbdd811b13c7889efa3Timo Sirainen
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 else
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo Sirainen AC_ERROR([--with-$1=plugin not supported])
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo Sirainen fi
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])
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo Sirainen else
1795e934ebcd58175d3b5bbdd811b13c7889efa3Timo Sirainen AC_ERROR([--with-$1: Unknown value: $2])
1795e934ebcd58175d3b5bbdd811b13c7889efa3Timo Sirainen fi
1795e934ebcd58175d3b5bbdd811b13c7889efa3Timo Sirainen])
82995cc154a929f37aa486a72a6485e9f8d34a30Timo Sirainen
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 Sirainen fi)
cb951d3282610a9a0960230865bc5f3e3347b203Timo Sirainen
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)
a35cbba04d0a2823da98e693bd09a051addffdb2Timo Sirainen fi)
1795e934ebcd58175d3b5bbdd811b13c7889efa3Timo Sirainen
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 Sirainen
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 Sirainen mem_align=8)
4316355ca8b7698516272520a972291378698140Timo Sirainen
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 Sirainen ioloop=best)
4316355ca8b7698516272520a972291378698140Timo Sirainen
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 Sirainen notify=)
0df9428baed48afaff90b4d4f03792d2fd756a43Timo Sirainen
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 Sirainen
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 Sirainen
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)
4316355ca8b7698516272520a972291378698140Timo Sirainen
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 Sirainen
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 Sirainen
0df9428baed48afaff90b4d4f03792d2fd756a43Timo SirainenAC_ARG_WITH(sia,
0df9428baed48afaff90b4d4f03792d2fd756a43Timo SirainenAS_HELP_STRING([--with-sia], [Build with Tru64 SIA support]),
0df9428baed48afaff90b4d4f03792d2fd756a43Timo Sirainen TEST_WITH(sia, $withval),
0df9428baed48afaff90b4d4f03792d2fd756a43Timo Sirainen want_sia=no)
0df9428baed48afaff90b4d4f03792d2fd756a43Timo Sirainen
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)
4316355ca8b7698516272520a972291378698140Timo Sirainen
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 else
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 else
2521fd0986302cdabc8b0711eef63ac188f32cd6Timo Sirainen vpopmail_home="$withval"
2521fd0986302cdabc8b0711eef63ac188f32cd6Timo Sirainen want_vpopmail=yes
2521fd0986302cdabc8b0711eef63ac188f32cd6Timo Sirainen fi
2521fd0986302cdabc8b0711eef63ac188f32cd6Timo Sirainen fi, [
2521fd0986302cdabc8b0711eef63ac188f32cd6Timo Sirainen want_vpopmail=no
2521fd0986302cdabc8b0711eef63ac188f32cd6Timo Sirainen ])
2521fd0986302cdabc8b0711eef63ac188f32cd6Timo Sirainen
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 Sirainen# want_db=no)
2521fd0986302cdabc8b0711eef63ac188f32cd6Timo Sirainenwant_db=no
2521fd0986302cdabc8b0711eef63ac188f32cd6Timo Sirainen
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),
4316355ca8b7698516272520a972291378698140Timo Sirainen want_sql=no)
4316355ca8b7698516272520a972291378698140Timo Sirainen
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)
1795e934ebcd58175d3b5bbdd811b13c7889efa3Timo Sirainen
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 Sirainen
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)
82995cc154a929f37aa486a72a6485e9f8d34a30Timo Sirainen
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")
d9b8c65d0a0ffc709ba7d23c449dbf2f46b10674Timo Sirainen
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 Sirainen
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)
d23c747de9d33966483fbdd41f08ad7766da7c5cTimo Sirainen
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 Sirainen
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)
d23c747de9d33966483fbdd41f08ad7766da7c5cTimo Sirainen
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 Sirainen
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 Sirainen
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
4316355ca8b7698516272520a972291378698140Timo Sirainen else
2521fd0986302cdabc8b0711eef63ac188f32cd6Timo Sirainen AC_ERROR([--with-ssl: Invalid value: $withval])
2521fd0986302cdabc8b0711eef63ac188f32cd6Timo Sirainen fi, [
b863b7e3fccf75f90f613b875f02fd1781e14e5eTimo Sirainen want_gnutls=no
b863b7e3fccf75f90f613b875f02fd1781e14e5eTimo Sirainen want_openssl=auto
b863b7e3fccf75f90f613b875f02fd1781e14e5eTimo Sirainen ])
b863b7e3fccf75f90f613b875f02fd1781e14e5eTimo Sirainen
b863b7e3fccf75f90f613b875f02fd1781e14e5eTimo SirainenAC_ARG_WITH(ssldir,
b863b7e3fccf75f90f613b875f02fd1781e14e5eTimo SirainenAS_HELP_STRING([--with-ssldir=DIR], [SSL base directory for certificates (/etc/ssl)]),
b863b7e3fccf75f90f613b875f02fd1781e14e5eTimo Sirainen ssldir="$withval",
b863b7e3fccf75f90f613b875f02fd1781e14e5eTimo Sirainen ssldir=/etc/ssl
4316355ca8b7698516272520a972291378698140Timo Sirainen)
4316355ca8b7698516272520a972291378698140Timo SirainenAC_SUBST(ssldir)
4316355ca8b7698516272520a972291378698140Timo Sirainen
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
4316355ca8b7698516272520a972291378698140Timo Sirainen)
e34d170f8f0e084bd94bfbc1a7085ece67e508dfTimo SirainenAC_SUBST(rundir)
4316355ca8b7698516272520a972291378698140Timo Sirainen
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 Sirainen)
4316355ca8b7698516272520a972291378698140Timo SirainenAC_SUBST(statedir)
4316355ca8b7698516272520a972291378698140Timo Sirainen
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
4316355ca8b7698516272520a972291378698140Timo Sirainen fi
e34d170f8f0e084bd94bfbc1a7085ece67e508dfTimo Sirainen], [])
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)
3cfc375f0d939c346b9b0e6f0ac78b9bc367dd95Timo Sirainenfi
4316355ca8b7698516272520a972291378698140Timo SirainenAM_CONDITIONAL(HAVE_SYSTEMD, test "$systemdsystemunitdir" != "")
4316355ca8b7698516272520a972291378698140Timo Sirainen
4316355ca8b7698516272520a972291378698140Timo SirainenAC_ARG_WITH(gc,
4316355ca8b7698516272520a972291378698140Timo SirainenAS_HELP_STRING([--with-gc], [Use Boehm garbage collector]),
4316355ca8b7698516272520a972291378698140Timo Sirainen TEST_WITH(gc, $withval),
4316355ca8b7698516272520a972291378698140Timo Sirainen want_gc=no)
4316355ca8b7698516272520a972291378698140Timo Sirainen
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 fi
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 Sirainenfi
4316355ca8b7698516272520a972291378698140Timo Sirainen
4316355ca8b7698516272520a972291378698140Timo SirainenDC_DOVECOT_MODULEDIR
4316355ca8b7698516272520a972291378698140Timo Sirainen
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=no
4316355ca8b7698516272520a972291378698140Timo Sirainen else
4316355ca8b7698516272520a972291378698140Timo Sirainen want_docs=yes
4316355ca8b7698516272520a972291378698140Timo Sirainen fi,
4316355ca8b7698516272520a972291378698140Timo Sirainen want_docs=yes)
4316355ca8b7698516272520a972291378698140Timo SirainenAM_CONDITIONAL(BUILD_DOCS, test "$want_docs" = "yes")
4316355ca8b7698516272520a972291378698140Timo Sirainen
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 Sirainen
4316355ca8b7698516272520a972291378698140Timo SirainenAC_ISC_POSIX
4316355ca8b7698516272520a972291378698140Timo SirainenAC_PROG_CC
4316355ca8b7698516272520a972291378698140Timo SirainenAC_PROG_CPP
4316355ca8b7698516272520a972291378698140Timo SirainenAC_PROG_CXX # lucene plugin needs this
d23c747de9d33966483fbdd41f08ad7766da7c5cTimo SirainenAC_HEADER_STDC
d23c747de9d33966483fbdd41f08ad7766da7c5cTimo SirainenAC_C_INLINE
d23c747de9d33966483fbdd41f08ad7766da7c5cTimo SirainenAC_PROG_LIBTOOL
82995cc154a929f37aa486a72a6485e9f8d34a30Timo SirainenAM_ICONV
d23c747de9d33966483fbdd41f08ad7766da7c5cTimo Sirainen
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 Sirainen
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 Sirainen
d23c747de9d33966483fbdd41f08ad7766da7c5cTimo Sirainendnl * clang check
9b61a6db87c026656f8d2ae214e4486b98a069c0Timo Sirainenhave_clang=no
9b61a6db87c026656f8d2ae214e4486b98a069c0Timo Sirainenif $CC -dM -E -x c /dev/null | grep __clang__ > /dev/null 2>&1; then
9b61a6db87c026656f8d2ae214e4486b98a069c0Timo Sirainen have_clang=yes
4316355ca8b7698516272520a972291378698140Timo Sirainenfi
4316355ca8b7698516272520a972291378698140Timo Sirainen
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"
d19d3aa4eafa34b48b7d7d311c9db31e1898576aTimo Sirainen
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"
65e14cef911d5d3fac8993c8a76911a587f05cd7Timo Sirainen fi
4316355ca8b7698516272520a972291378698140Timo Sirainen
4316355ca8b7698516272520a972291378698140Timo Sirainen AC_TRY_COMPILE([
4316355ca8b7698516272520a972291378698140Timo Sirainen #if __GNUC__ < 4
4316355ca8b7698516272520a972291378698140Timo Sirainen # error old gcc
608aa112aa7d94a1720c909747dcd0b61c079453Timo Sirainen #endif
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo Sirainen ],,[
d19d3aa4eafa34b48b7d7d311c9db31e1898576aTimo Sirainen # gcc4
d19d3aa4eafa34b48b7d7d311c9db31e1898576aTimo Sirainen CFLAGS="$CFLAGS -Wstrict-aliasing=2"
4316355ca8b7698516272520a972291378698140Timo Sirainen ])
4316355ca8b7698516272520a972291378698140Timo Sirainen
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 ],, [
d23c747de9d33966483fbdd41f08ad7766da7c5cTimo Sirainen CFLAGS="$CFLAGS $old_cflags"
4316355ca8b7698516272520a972291378698140Timo Sirainen ], [
4316355ca8b7698516272520a972291378698140Timo Sirainen CFLAGS="$old_cflags"
d23c747de9d33966483fbdd41f08ad7766da7c5cTimo Sirainen ])
d23c747de9d33966483fbdd41f08ad7766da7c5cTimo Sirainenfi
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"
4316355ca8b7698516272520a972291378698140Timo Sirainen fi
82995cc154a929f37aa486a72a6485e9f8d34a30Timo Sirainenfi
d23c747de9d33966483fbdd41f08ad7766da7c5cTimo Sirainen
d23c747de9d33966483fbdd41f08ad7766da7c5cTimo Sirainendnl **
d23c747de9d33966483fbdd41f08ad7766da7c5cTimo Sirainendnl ** just some generic stuff...
d23c747de9d33966483fbdd41f08ad7766da7c5cTimo Sirainendnl **
8a1c866a4c429f26c8746525f82024bc387f1407Timo Sirainen
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 Sirainen])
4316355ca8b7698516272520a972291378698140Timo Sirainen
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)
d19d3aa4eafa34b48b7d7d311c9db31e1898576aTimo Sirainen ], [
82995cc154a929f37aa486a72a6485e9f8d34a30Timo Sirainen if test "$want_libcap" = "yes"; then
4316355ca8b7698516272520a972291378698140Timo Sirainen AC_ERROR([Can't build with libcap support: libcap not found])
4316355ca8b7698516272520a972291378698140Timo Sirainen fi
d23c747de9d33966483fbdd41f08ad7766da7c5cTimo Sirainen ])
82995cc154a929f37aa486a72a6485e9f8d34a30Timo Sirainenfi
d23c747de9d33966483fbdd41f08ad7766da7c5cTimo Sirainen
d23c747de9d33966483fbdd41f08ad7766da7c5cTimo Sirainenhave_libwrap=no
d23c747de9d33966483fbdd41f08ad7766da7c5cTimo Sirainenif test $want_libwrap != no; then
d23c747de9d33966483fbdd41f08ad7766da7c5cTimo Sirainen AC_CHECK_HEADER(tcpd.h, [
d23c747de9d33966483fbdd41f08ad7766da7c5cTimo Sirainen old_LIBS=$LIBS
503e5ef896c7b4a51cf73efb0d132860a8c747e6Timo Sirainen
d23c747de9d33966483fbdd41f08ad7766da7c5cTimo Sirainen AC_CACHE_CHECK([whether we have libwrap],i_cv_have_libwrap,[
d23c747de9d33966483fbdd41f08ad7766da7c5cTimo Sirainen AC_TRY_COMPILE([
d23c747de9d33966483fbdd41f08ad7766da7c5cTimo Sirainen #include <tcpd.h>
6b43203878bd3c87f5ae690617a1cbc694e24c01Timo Sirainen int allow_severity = 0;
6b43203878bd3c87f5ae690617a1cbc694e24c01Timo Sirainen int deny_severity = 0;
6b43203878bd3c87f5ae690617a1cbc694e24c01Timo Sirainen ], [
6b43203878bd3c87f5ae690617a1cbc694e24c01Timo Sirainen request_init((void *)0);
d23c747de9d33966483fbdd41f08ad7766da7c5cTimo Sirainen ], [
2615df45a8027948a474abe5e817b34b0499c171Timo Sirainen i_cv_have_libwrap=yes
d23c747de9d33966483fbdd41f08ad7766da7c5cTimo Sirainen ], [
1795e934ebcd58175d3b5bbdd811b13c7889efa3Timo Sirainen i_cv_have_libwrap=no
1795e934ebcd58175d3b5bbdd811b13c7889efa3Timo Sirainen ])
cb931f84e3ec8e3deda253a1c0ae0409023de096Timo Sirainen ])
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
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo Sirainen else
426e50e7647009bb22db67d9012043f0a59e7452Timo Sirainen if test "$want_libwrap" = "yes"; then
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo Sirainen AC_ERROR([Can't build with libwrap support: libwrap not found])
cb931f84e3ec8e3deda253a1c0ae0409023de096Timo Sirainen fi
faeaff460d763bb4b574d31d78773f91aaba5510Timo Sirainen fi
faeaff460d763bb4b574d31d78773f91aaba5510Timo Sirainen LIBS=$old_LIBS
faeaff460d763bb4b574d31d78773f91aaba5510Timo Sirainen ], [
faeaff460d763bb4b574d31d78773f91aaba5510Timo Sirainen if test "$want_libwrap" = "yes"; then
cb931f84e3ec8e3deda253a1c0ae0409023de096Timo Sirainen AC_ERROR([Can't build with libwrap support: tcpd.h not found])
cb931f84e3ec8e3deda253a1c0ae0409023de096Timo Sirainen fi
b1678954f83e1059b981e2def52a70054fa71399Timo Sirainen ])
b1678954f83e1059b981e2def52a70054fa71399Timo Sirainenfi
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo SirainenAM_CONDITIONAL(TCPWRAPPERS, test "$have_libwrap" = "yes")
426e50e7647009bb22db67d9012043f0a59e7452Timo Sirainen
426e50e7647009bb22db67d9012043f0a59e7452Timo SirainenAC_DEFINE(PACKAGE_WEBPAGE, "http://www.dovecot.org/", Support URL)
426e50e7647009bb22db67d9012043f0a59e7452Timo Sirainen
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 Sirainen
2b682d8d3661800f16aceaa45fa4de9b6b140a59Timo SirainenAC_CHECK_TYPES([struct sockpeercred])
2b682d8d3661800f16aceaa45fa4de9b6b140a59Timo Sirainen
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"
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo Sirainen], [
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo Sirainen # OpenBSD
426e50e7647009bb22db67d9012043f0a59e7452Timo Sirainen AC_CHECK_FUNCS(clock_gettime)
82995cc154a929f37aa486a72a6485e9f8d34a30Timo Sirainen])
82995cc154a929f37aa486a72a6485e9f8d34a30Timo Sirainen
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 #include <inttypes.h>
de5c7c99783cd86f3bdbc057345cbee923b51a20Timo Sirainen ], [
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo Sirainen strtoimax(0, 0, 0);
ccd44abfe14f51cc1f6d8c0ec1aa6dc31242e2d3Timo Sirainen ], [
2615df45a8027948a474abe5e817b34b0499c171Timo Sirainen i_cv_have_strtoimax=yes
de5c7c99783cd86f3bdbc057345cbee923b51a20Timo Sirainen ], [
9fc97c8aa8190df87624d214bcc5d0b5362bec93Timo Sirainen i_cv_have_strtoimax=no
9fc97c8aa8190df87624d214bcc5d0b5362bec93Timo Sirainen ])
2615df45a8027948a474abe5e817b34b0499c171Timo Sirainen])
de5c7c99783cd86f3bdbc057345cbee923b51a20Timo Sirainenif test $i_cv_have_strtoimax = yes; then
9fc97c8aa8190df87624d214bcc5d0b5362bec93Timo Sirainen AC_DEFINE(HAVE_STRTOIMAX,, Define if you have strtoimax function)
9fc97c8aa8190df87624d214bcc5d0b5362bec93Timo Sirainenfi
9fc97c8aa8190df87624d214bcc5d0b5362bec93Timo Sirainen
de5c7c99783cd86f3bdbc057345cbee923b51a20Timo SirainenAC_CACHE_CHECK([for strtoumax],i_cv_have_strtoumax,[
de5c7c99783cd86f3bdbc057345cbee923b51a20Timo Sirainen AC_TRY_LINK([
de5c7c99783cd86f3bdbc057345cbee923b51a20Timo Sirainen #include <inttypes.h>
de5c7c99783cd86f3bdbc057345cbee923b51a20Timo Sirainen ], [
de5c7c99783cd86f3bdbc057345cbee923b51a20Timo Sirainen strtoumax(0, 0, 0);
82995cc154a929f37aa486a72a6485e9f8d34a30Timo Sirainen ], [
2615df45a8027948a474abe5e817b34b0499c171Timo Sirainen i_cv_have_strtoumax=yes
82995cc154a929f37aa486a72a6485e9f8d34a30Timo Sirainen ], [
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo Sirainen i_cv_have_strtoumax=no
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo Sirainen ])
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo Sirainen])
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo Sirainenif test $i_cv_have_strtoumax = yes; then
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo Sirainen AC_DEFINE(HAVE_STRTOUMAX,, Define if you have strtoumax function)
3fe44a0df5a0bdd80c495f79cbf0e384441d6fccTimo Sirainenfi
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo Sirainen
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo Sirainendnl * I/O loop function
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo Sirainenhave_ioloop=no
3fe44a0df5a0bdd80c495f79cbf0e384441d6fccTimo Sirainen
82995cc154a929f37aa486a72a6485e9f8d34a30Timo Sirainenif test "$ioloop" = "best" || test "$ioloop" = "epoll"; then
1795e934ebcd58175d3b5bbdd811b13c7889efa3Timo Sirainen AC_CACHE_CHECK([whether we can use epoll],i_cv_epoll_works,[
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo Sirainen AC_TRY_RUN([
2615df45a8027948a474abe5e817b34b0499c171Timo Sirainen #include <sys/epoll.h>
2615df45a8027948a474abe5e817b34b0499c171Timo Sirainen
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo Sirainen int main()
1795e934ebcd58175d3b5bbdd811b13c7889efa3Timo Sirainen {
1795e934ebcd58175d3b5bbdd811b13c7889efa3Timo Sirainen return epoll_create(5) < 1;
2615df45a8027948a474abe5e817b34b0499c171Timo Sirainen }
1795e934ebcd58175d3b5bbdd811b13c7889efa3Timo Sirainen ], [
d23c747de9d33966483fbdd41f08ad7766da7c5cTimo Sirainen i_cv_epoll_works=yes
2615df45a8027948a474abe5e817b34b0499c171Timo Sirainen ], [
82995cc154a929f37aa486a72a6485e9f8d34a30Timo Sirainen i_cv_epoll_works=no
d23c747de9d33966483fbdd41f08ad7766da7c5cTimo Sirainen ])
2615df45a8027948a474abe5e817b34b0499c171Timo Sirainen ])
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
2615df45a8027948a474abe5e817b34b0499c171Timo Sirainen ioloop=epoll
d23c747de9d33966483fbdd41f08ad7766da7c5cTimo Sirainen else
d23c747de9d33966483fbdd41f08ad7766da7c5cTimo Sirainen if test "$ioloop" = "epoll" ; then
d23c747de9d33966483fbdd41f08ad7766da7c5cTimo Sirainen AC_MSG_ERROR([epoll ioloop requested but epoll_create() is not available])
2615df45a8027948a474abe5e817b34b0499c171Timo Sirainen fi
82995cc154a929f37aa486a72a6485e9f8d34a30Timo Sirainen fi
2615df45a8027948a474abe5e817b34b0499c171Timo Sirainenfi
2615df45a8027948a474abe5e817b34b0499c171Timo Sirainen
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])
1795e934ebcd58175d3b5bbdd811b13c7889efa3Timo Sirainen fi
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo Sirainenfi
82995cc154a929f37aa486a72a6485e9f8d34a30Timo Sirainen
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())
2615df45a8027948a474abe5e817b34b0499c171Timo Sirainen ioloop=poll
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo Sirainen have_ioloop=yes
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo Sirainen ])
1795e934ebcd58175d3b5bbdd811b13c7889efa3Timo Sirainenfi
1795e934ebcd58175d3b5bbdd811b13c7889efa3Timo Sirainen
2615df45a8027948a474abe5e817b34b0499c171Timo Sirainenif test "$have_ioloop" = "no"; then
2615df45a8027948a474abe5e817b34b0499c171Timo Sirainen AC_DEFINE(IOLOOP_SELECT,, Implement I/O loop with select())
2d8b23805db6f06b8b38174fb6e135386694f429Timo Sirainen ioloop="select"
40c24f8fe31037b61f2ac594a6dfcd123080b4b5Timo Sirainenfi
40c24f8fe31037b61f2ac594a6dfcd123080b4b5Timo Sirainen
40c24f8fe31037b61f2ac594a6dfcd123080b4b5Timo Sirainenhave_notify=none
40c24f8fe31037b61f2ac594a6dfcd123080b4b5Timo Sirainen
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,[
40c24f8fe31037b61f2ac594a6dfcd123080b4b5Timo Sirainen AC_TRY_RUN([
766115d2b2e6dbcf59f90d3b3866851cf6f740feTimo Sirainen #define _GNU_SOURCE
2615df45a8027948a474abe5e817b34b0499c171Timo Sirainen #include <sys/ioctl.h>
2d8b23805db6f06b8b38174fb6e135386694f429Timo Sirainen #include <fcntl.h>
2d8b23805db6f06b8b38174fb6e135386694f429Timo Sirainen #include <sys/inotify.h>
2615df45a8027948a474abe5e817b34b0499c171Timo Sirainen #include <stdio.h>
2d8b23805db6f06b8b38174fb6e135386694f429Timo Sirainen
2d8b23805db6f06b8b38174fb6e135386694f429Timo Sirainen int main()
2d8b23805db6f06b8b38174fb6e135386694f429Timo Sirainen {
2d8b23805db6f06b8b38174fb6e135386694f429Timo Sirainen int wd, fd;
2d8b23805db6f06b8b38174fb6e135386694f429Timo Sirainen char * fn = "/tmp";
6d6bbe8787354bbb69d0c03187adfe0f497d70b8Timo Sirainen
6d6bbe8787354bbb69d0c03187adfe0f497d70b8Timo Sirainen fd = inotify_init ();
6d6bbe8787354bbb69d0c03187adfe0f497d70b8Timo Sirainen if (fd < 0)
6d6bbe8787354bbb69d0c03187adfe0f497d70b8Timo Sirainen {
6d6bbe8787354bbb69d0c03187adfe0f497d70b8Timo Sirainen perror ("inotify_init");
6d6bbe8787354bbb69d0c03187adfe0f497d70b8Timo Sirainen return 1;
6d6bbe8787354bbb69d0c03187adfe0f497d70b8Timo Sirainen }
6d6bbe8787354bbb69d0c03187adfe0f497d70b8Timo Sirainen
2615df45a8027948a474abe5e817b34b0499c171Timo Sirainen wd = inotify_add_watch (fd, fn, IN_ALL_EVENTS);
2d8b23805db6f06b8b38174fb6e135386694f429Timo Sirainen
6d6bbe8787354bbb69d0c03187adfe0f497d70b8Timo Sirainen if (wd < 0)
6d6bbe8787354bbb69d0c03187adfe0f497d70b8Timo Sirainen {
6d6bbe8787354bbb69d0c03187adfe0f497d70b8Timo Sirainen perror ("inotify_add_watch");
6d6bbe8787354bbb69d0c03187adfe0f497d70b8Timo Sirainen return 2;
6d6bbe8787354bbb69d0c03187adfe0f497d70b8Timo Sirainen }
6d6bbe8787354bbb69d0c03187adfe0f497d70b8Timo Sirainen
6d6bbe8787354bbb69d0c03187adfe0f497d70b8Timo Sirainen inotify_rm_watch (fd, wd);
6d6bbe8787354bbb69d0c03187adfe0f497d70b8Timo Sirainen
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo Sirainen close (fd);
1795e934ebcd58175d3b5bbdd811b13c7889efa3Timo Sirainen return 0;
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo Sirainen }
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo Sirainen ], [
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo Sirainen i_cv_inotify_works=yes
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo Sirainen ], [
82995cc154a929f37aa486a72a6485e9f8d34a30Timo Sirainen i_cv_inotify_works=no
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo Sirainen ])
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo Sirainen ])
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 else
6d6bbe8787354bbb69d0c03187adfe0f497d70b8Timo Sirainen if test "$notify" = "inotify"; then
0e5819a061034f1636b124c03a89f67d37c852b1Timo Sirainen AC_MSG_ERROR([inotify requested but not available])
0e5819a061034f1636b124c03a89f67d37c852b1Timo Sirainen notify=""
0e5819a061034f1636b124c03a89f67d37c852b1Timo Sirainen fi
0e5819a061034f1636b124c03a89f67d37c852b1Timo Sirainen fi
0e5819a061034f1636b124c03a89f67d37c852b1Timo Sirainenfi
0e5819a061034f1636b124c03a89f67d37c852b1Timo Sirainen
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)
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo Sirainen else
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])
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo Sirainen notify=""
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo Sirainen fi
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo Sirainen fi
bd7b1a9000b12349e2a99bb43b3ce8b96a18e92bTimo Sirainenfi
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo Sirainen
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
1795e934ebcd58175d3b5bbdd811b13c7889efa3Timo Sirainen #include <fcntl.h>
d23c747de9d33966483fbdd41f08ad7766da7c5cTimo Sirainen #include <signal.h>
4981827cb5e32cf767b7b0e3070137e6b36f42afTimo Sirainen #include <unistd.h>
d23c747de9d33966483fbdd41f08ad7766da7c5cTimo Sirainen ], [
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo Sirainen fcntl(0, F_SETSIG, SIGRTMIN);
82995cc154a929f37aa486a72a6485e9f8d34a30Timo Sirainen fcntl(0, F_NOTIFY, DN_CREATE | DN_DELETE | DN_RENAME | DN_MULTISHOT);
82995cc154a929f37aa486a72a6485e9f8d34a30Timo Sirainen ], [
d23c747de9d33966483fbdd41f08ad7766da7c5cTimo Sirainen i_cv_have_dnotify=yes
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo Sirainen ], [
82995cc154a929f37aa486a72a6485e9f8d34a30Timo Sirainen i_cv_have_dnotify=no
d23c747de9d33966483fbdd41f08ad7766da7c5cTimo Sirainen ])
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo Sirainen ])
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
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo Sirainen else
f6f94063c4c3080280b87ab47ac2bb756ba002f9Timo Sirainen if test "$notify" = "dnotify"; then
d23c747de9d33966483fbdd41f08ad7766da7c5cTimo Sirainen AC_MSG_ERROR([dnotify requested but not available])
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo Sirainen fi
f6f94063c4c3080280b87ab47ac2bb756ba002f9Timo Sirainen fi
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo Sirainenfi
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo Sirainen
3fe44a0df5a0bdd80c495f79cbf0e384441d6fccTimo Sirainenif test "$have_notify" = "none"; then
f6f94063c4c3080280b87ab47ac2bb756ba002f9Timo Sirainen AC_DEFINE(IOLOOP_NOTIFY_NONE,, No special notify support)
f6f94063c4c3080280b87ab47ac2bb756ba002f9Timo Sirainenfi
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo Sirainen
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo SirainenAC_CACHE_CHECK([whether we have glibc],i_cv_have_glibc,[
1795e934ebcd58175d3b5bbdd811b13c7889efa3Timo Sirainen AC_TRY_COMPILE([
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo Sirainen #include <stdlib.h>
e392fcb39a06609af20a9e79017683f194de3ddeTimo Sirainen #ifdef __GLIBC__
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo Sirainen we have glibc
82995cc154a929f37aa486a72a6485e9f8d34a30Timo Sirainen #endif
e392fcb39a06609af20a9e79017683f194de3ddeTimo Sirainen ],, [
e392fcb39a06609af20a9e79017683f194de3ddeTimo Sirainen i_cv_have_glibc=no
e392fcb39a06609af20a9e79017683f194de3ddeTimo Sirainen ], [
e392fcb39a06609af20a9e79017683f194de3ddeTimo Sirainen i_cv_have_glibc=yes
e392fcb39a06609af20a9e79017683f194de3ddeTimo Sirainen ])
3851ad9fcb25635f02b46d44586742ef1081876bTimo Sirainen])
3851ad9fcb25635f02b46d44586742ef1081876bTimo Sirainenif test "$i_cv_have_glibc" = "yes"; then
3851ad9fcb25635f02b46d44586742ef1081876bTimo Sirainen AC_DEFINE(PREAD_WRAPPERS,, Define if pread/pwrite needs _XOPEN_SOURCE 500)
3851ad9fcb25635f02b46d44586742ef1081876bTimo Sirainenfi
3851ad9fcb25635f02b46d44586742ef1081876bTimo Sirainen
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 AC_TRY_RUN([
cb931f84e3ec8e3deda253a1c0ae0409023de096Timo Sirainen #define _XOPEN_SOURCE 600
e392fcb39a06609af20a9e79017683f194de3ddeTimo Sirainen #include <stdio.h>
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo Sirainen #include <stdlib.h>
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo Sirainen #include <fcntl.h>
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo Sirainen #include <unistd.h>
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo Sirainen #if defined(__GLIBC__) && (__GLIBC__ < 2 || __GLIBC_MINOR__ < 7)
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo Sirainen possibly broken posix_fallocate
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo Sirainen #endif
3851ad9fcb25635f02b46d44586742ef1081876bTimo Sirainen int main() {
e392fcb39a06609af20a9e79017683f194de3ddeTimo Sirainen int fd = creat("conftest.temp", 0600);
e392fcb39a06609af20a9e79017683f194de3ddeTimo Sirainen int ret;
e392fcb39a06609af20a9e79017683f194de3ddeTimo Sirainen if (fd == -1) {
3851ad9fcb25635f02b46d44586742ef1081876bTimo Sirainen perror("creat()");
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo Sirainen return 2;
82995cc154a929f37aa486a72a6485e9f8d34a30Timo Sirainen }
2521fd0986302cdabc8b0711eef63ac188f32cd6Timo Sirainen ret = posix_fallocate(fd, 1024, 1024) < 0 ? 1 : 0;
2521fd0986302cdabc8b0711eef63ac188f32cd6Timo Sirainen unlink("conftest.temp");
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo Sirainen return ret;
2521fd0986302cdabc8b0711eef63ac188f32cd6Timo Sirainen }
2521fd0986302cdabc8b0711eef63ac188f32cd6Timo Sirainen ], [
2521fd0986302cdabc8b0711eef63ac188f32cd6Timo Sirainen i_cv_posix_fallocate_works=yes
2521fd0986302cdabc8b0711eef63ac188f32cd6Timo Sirainen ], [
2521fd0986302cdabc8b0711eef63ac188f32cd6Timo Sirainen i_cv_posix_fallocate_works=no
2521fd0986302cdabc8b0711eef63ac188f32cd6Timo Sirainen ])
2521fd0986302cdabc8b0711eef63ac188f32cd6Timo Sirainen])
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 Sirainenfi
2521fd0986302cdabc8b0711eef63ac188f32cd6Timo Sirainen
2521fd0986302cdabc8b0711eef63ac188f32cd6Timo Sirainendnl * OS specific options
2521fd0986302cdabc8b0711eef63ac188f32cd6Timo SirainenDC_PLUGIN_DEPS
2521fd0986302cdabc8b0711eef63ac188f32cd6Timo Sirainencase "$host_os" in
2521fd0986302cdabc8b0711eef63ac188f32cd6Timo Sirainen hpux*)
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 ;;
2521fd0986302cdabc8b0711eef63ac188f32cd6Timo Sirainen linux*|darwin*)
2521fd0986302cdabc8b0711eef63ac188f32cd6Timo Sirainen AC_DEFINE(PROCTITLE_HACK,, Define if process title can be changed by modifying argv)
2521fd0986302cdabc8b0711eef63ac188f32cd6Timo Sirainen ;;
2521fd0986302cdabc8b0711eef63ac188f32cd6Timo Sirainen *)
2521fd0986302cdabc8b0711eef63ac188f32cd6Timo Sirainen ;;
2521fd0986302cdabc8b0711eef63ac188f32cd6Timo Sirainenesac
2521fd0986302cdabc8b0711eef63ac188f32cd6Timo Sirainen
2521fd0986302cdabc8b0711eef63ac188f32cd6Timo SirainenAC_CHECK_SIZEOF(int)
2521fd0986302cdabc8b0711eef63ac188f32cd6Timo SirainenAC_CHECK_SIZEOF(long)
2521fd0986302cdabc8b0711eef63ac188f32cd6Timo SirainenAC_CHECK_SIZEOF(void *)
2521fd0986302cdabc8b0711eef63ac188f32cd6Timo SirainenAC_CHECK_SIZEOF(long long)
2521fd0986302cdabc8b0711eef63ac188f32cd6Timo Sirainen
2521fd0986302cdabc8b0711eef63ac188f32cd6Timo SirainenAC_DEFUN([AC_TYPEOF], [
1795e934ebcd58175d3b5bbdd811b13c7889efa3Timo Sirainen dnl * first check if we can get the size with redefining typedefs
1795e934ebcd58175d3b5bbdd811b13c7889efa3Timo Sirainen
d23c747de9d33966483fbdd41f08ad7766da7c5cTimo Sirainen order="$2"
1795e934ebcd58175d3b5bbdd811b13c7889efa3Timo Sirainen if test "$2" = ""; then
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo Sirainen order="int long long-long"
82995cc154a929f37aa486a72a6485e9f8d34a30Timo Sirainen fi
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo Sirainen
2615df45a8027948a474abe5e817b34b0499c171Timo Sirainen result=""
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"
30ad2b0309119501efad06c72ec9b1561b90d4afTimo Sirainen
97daba82224dd757b7b7526ab3fd5d574a5f35d8Timo Sirainen for type in $order; do
10ccd0e45768923d69be459e87ef6cd2574cec60Timo Sirainen case "$type" in
10ccd0e45768923d69be459e87ef6cd2574cec60Timo Sirainen int)
97daba82224dd757b7b7526ab3fd5d574a5f35d8Timo Sirainen fmt="%d"
97daba82224dd757b7b7526ab3fd5d574a5f35d8Timo Sirainen ;;
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo Sirainen unsigned-int)
1795e934ebcd58175d3b5bbdd811b13c7889efa3Timo Sirainen fmt="%u"
1795e934ebcd58175d3b5bbdd811b13c7889efa3Timo Sirainen ;;
b2e181e33889f0a4a3ba9dc23d676cbfe1bf7782Timo Sirainen long)
b2e181e33889f0a4a3ba9dc23d676cbfe1bf7782Timo Sirainen fmt="%ld"
b2e181e33889f0a4a3ba9dc23d676cbfe1bf7782Timo Sirainen ;;
b2e181e33889f0a4a3ba9dc23d676cbfe1bf7782Timo Sirainen unsigned-long)
b2e181e33889f0a4a3ba9dc23d676cbfe1bf7782Timo Sirainen fmt="%lu"
269370f66e320a071700e33d9f2584eb46d96a90Timo Sirainen ;;
50ecf65993bff429af04deef6c832deb019c76a5Timo Sirainen long-long)
b2e181e33889f0a4a3ba9dc23d676cbfe1bf7782Timo Sirainen fmt="%lld"
b2e181e33889f0a4a3ba9dc23d676cbfe1bf7782Timo Sirainen ;;
b2e181e33889f0a4a3ba9dc23d676cbfe1bf7782Timo Sirainen unsigned-long-long)
eafecb7ad0fbbde0da8be7e8ae735459b7bb688bTimo Sirainen fmt="%llu"
e66cd209fcab4817d2234d0121b404925dc60034Timo Sirainen ;;
50ecf65993bff429af04deef6c832deb019c76a5Timo Sirainen *)
b2e181e33889f0a4a3ba9dc23d676cbfe1bf7782Timo Sirainen fmt=""
b2e181e33889f0a4a3ba9dc23d676cbfe1bf7782Timo Sirainen ;;
b2e181e33889f0a4a3ba9dc23d676cbfe1bf7782Timo Sirainen esac
b2e181e33889f0a4a3ba9dc23d676cbfe1bf7782Timo Sirainen
6d6bbe8787354bbb69d0c03187adfe0f497d70b8Timo Sirainen if test "$fmt" != ""; then
d5d23d5ff8b7a06d2ead489ddcf55ee8fb5ca7b6Timo Sirainen AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
d5d23d5ff8b7a06d2ead489ddcf55ee8fb5ca7b6Timo Sirainen #include <sys/types.h>
cb931f84e3ec8e3deda253a1c0ae0409023de096Timo Sirainen #include <stdio.h>
cb931f84e3ec8e3deda253a1c0ae0409023de096Timo Sirainen ]], [[
cb931f84e3ec8e3deda253a1c0ae0409023de096Timo Sirainen printf("$fmt", ($1)0);
cb931f84e3ec8e3deda253a1c0ae0409023de096Timo Sirainen ]])],[
cb931f84e3ec8e3deda253a1c0ae0409023de096Timo Sirainen if test "$result" != ""; then
cb931f84e3ec8e3deda253a1c0ae0409023de096Timo Sirainen dnl * warning check isn't working
7db5ff0dd17c40711bfaa0375aa5cc7f822a82f2Timo Sirainen result=""
7db5ff0dd17c40711bfaa0375aa5cc7f822a82f2Timo Sirainen visible="unknown"
7db5ff0dd17c40711bfaa0375aa5cc7f822a82f2Timo Sirainen break
7db5ff0dd17c40711bfaa0375aa5cc7f822a82f2Timo Sirainen fi
7db5ff0dd17c40711bfaa0375aa5cc7f822a82f2Timo Sirainen result="`echo $type|sed 's/-/ /g'`"
7db5ff0dd17c40711bfaa0375aa5cc7f822a82f2Timo Sirainen visible="$result"
bc7a4cf2c06702ebaedba9a7c15ce657d5856f63Timo Sirainen ],[])
bc7a4cf2c06702ebaedba9a7c15ce657d5856f63Timo Sirainen fi
269370f66e320a071700e33d9f2584eb46d96a90Timo Sirainen done
bc7a4cf2c06702ebaedba9a7c15ce657d5856f63Timo Sirainen CFLAGS="$old_CFLAGS"
269370f66e320a071700e33d9f2584eb46d96a90Timo Sirainen fi
269370f66e320a071700e33d9f2584eb46d96a90Timo Sirainen
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([[
bc7a4cf2c06702ebaedba9a7c15ce657d5856f63Timo Sirainen #include <sys/types.h>
50ecf65993bff429af04deef6c832deb019c76a5Timo Sirainen typedef $type $1;
a2f5f69de816fd9680ded4d1150e103f5dcda1beTimo Sirainen ]], [[]])],[
269370f66e320a071700e33d9f2584eb46d96a90Timo Sirainen if test "$result" != ""; then
269370f66e320a071700e33d9f2584eb46d96a90Timo Sirainen dnl * compiler allows redefining to anything
269370f66e320a071700e33d9f2584eb46d96a90Timo Sirainen result=""
7db5ff0dd17c40711bfaa0375aa5cc7f822a82f2Timo Sirainen visible="unknown"
7db5ff0dd17c40711bfaa0375aa5cc7f822a82f2Timo Sirainen break
7db5ff0dd17c40711bfaa0375aa5cc7f822a82f2Timo Sirainen fi
7db5ff0dd17c40711bfaa0375aa5cc7f822a82f2Timo Sirainen result="$type"
b2e181e33889f0a4a3ba9dc23d676cbfe1bf7782Timo Sirainen visible="$type"
7db5ff0dd17c40711bfaa0375aa5cc7f822a82f2Timo Sirainen ],[])
7db5ff0dd17c40711bfaa0375aa5cc7f822a82f2Timo Sirainen done
7db5ff0dd17c40711bfaa0375aa5cc7f822a82f2Timo Sirainen fi
7db5ff0dd17c40711bfaa0375aa5cc7f822a82f2Timo Sirainen
7db5ff0dd17c40711bfaa0375aa5cc7f822a82f2Timo Sirainen if test "$result" = ""; then
7db5ff0dd17c40711bfaa0375aa5cc7f822a82f2Timo Sirainen dnl * check with sizes
b863b7e3fccf75f90f613b875f02fd1781e14e5eTimo Sirainen
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 #include <stdio.h>
269370f66e320a071700e33d9f2584eb46d96a90Timo Sirainen #include <sys/types.h>
269370f66e320a071700e33d9f2584eb46d96a90Timo Sirainen int main() {
269370f66e320a071700e33d9f2584eb46d96a90Timo Sirainen FILE *f=fopen("conftestval", "w");
269370f66e320a071700e33d9f2584eb46d96a90Timo Sirainen if (!f) exit(1);
269370f66e320a071700e33d9f2584eb46d96a90Timo Sirainen fprintf(f, "%d\n", sizeof($1));
269370f66e320a071700e33d9f2584eb46d96a90Timo Sirainen exit(0);
269370f66e320a071700e33d9f2584eb46d96a90Timo Sirainen }
7db5ff0dd17c40711bfaa0375aa5cc7f822a82f2Timo Sirainen ]])],[
7db5ff0dd17c40711bfaa0375aa5cc7f822a82f2Timo Sirainen size=`cat conftestval`
7db5ff0dd17c40711bfaa0375aa5cc7f822a82f2Timo Sirainen rm -f conftestval
7db5ff0dd17c40711bfaa0375aa5cc7f822a82f2Timo Sirainen
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)"
b40d1ef77181fda648e2ba22188c91a124f5bee6Timo Sirainen break
503e5ef896c7b4a51cf73efb0d132860a8c747e6Timo Sirainen fi
76a99afe0914951d20d96e0bf5e6d8d3ea3fd503Timo Sirainen done
76a99afe0914951d20d96e0bf5e6d8d3ea3fd503Timo Sirainen if test "$result" = ""; then
76a99afe0914951d20d96e0bf5e6d8d3ea3fd503Timo Sirainen result=unknown
b40d1ef77181fda648e2ba22188c91a124f5bee6Timo Sirainen visible="`expr $size \* 8`bit (unknown type)"
b40d1ef77181fda648e2ba22188c91a124f5bee6Timo Sirainen fi
e5acc283bf030b0b5c79ca4e52d315c516a299faPascal Volk ],[],[])
503e5ef896c7b4a51cf73efb0d132860a8c747e6Timo Sirainen fi
4f68fa8a117642e2c134a29d8e35569bce6c3158Timo Sirainen i_cv_typeof_$1=$result/$visible
76a99afe0914951d20d96e0bf5e6d8d3ea3fd503Timo Sirainen ])
76a99afe0914951d20d96e0bf5e6d8d3ea3fd503Timo Sirainen
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 Sirainen])
76a99afe0914951d20d96e0bf5e6d8d3ea3fd503Timo Sirainen
76a99afe0914951d20d96e0bf5e6d8d3ea3fd503Timo SirainenAC_SYS_LARGEFILE
596ec384269cad3b0f0661df89b9cf33cbd171b7Timo SirainenAC_CHECK_TYPES(_Bool)
596ec384269cad3b0f0661df89b9cf33cbd171b7Timo Sirainen
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], [
596ec384269cad3b0f0661df89b9cf33cbd171b7Timo Sirainen have_uoff_t=no
596ec384269cad3b0f0661df89b9cf33cbd171b7Timo Sirainen])
76a99afe0914951d20d96e0bf5e6d8d3ea3fd503Timo Sirainen
503e5ef896c7b4a51cf73efb0d132860a8c747e6Timo SirainenAC_TYPEOF(off_t, long int long-long)
76a99afe0914951d20d96e0bf5e6d8d3ea3fd503Timo Sirainencase "$typeof_off_t" in
76a99afe0914951d20d96e0bf5e6d8d3ea3fd503Timo Sirainen int)
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 fi
76a99afe0914951d20d96e0bf5e6d8d3ea3fd503Timo Sirainen offt_bits=`expr 8 \* $ac_cv_sizeof_int`
76a99afe0914951d20d96e0bf5e6d8d3ea3fd503Timo Sirainen ;;
76a99afe0914951d20d96e0bf5e6d8d3ea3fd503Timo Sirainen long)
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 fi
503e5ef896c7b4a51cf73efb0d132860a8c747e6Timo Sirainen offt_bits=`expr 8 \* $ac_cv_sizeof_long`
20dd6f6726db692904794d7daafe5b6e7238b720Timo Sirainen ;;
20dd6f6726db692904794d7daafe5b6e7238b720Timo Sirainen "long 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)
20dd6f6726db692904794d7daafe5b6e7238b720Timo Sirainen fi
503e5ef896c7b4a51cf73efb0d132860a8c747e6Timo Sirainen offt_bits=`expr 8 \* $ac_cv_sizeof_long_long`
d23c747de9d33966483fbdd41f08ad7766da7c5cTimo Sirainen ;;
503e5ef896c7b4a51cf73efb0d132860a8c747e6Timo Sirainen *)
503e5ef896c7b4a51cf73efb0d132860a8c747e6Timo Sirainen AC_MSG_ERROR([Unsupported off_t type])
503e5ef896c7b4a51cf73efb0d132860a8c747e6Timo Sirainen ;;
503e5ef896c7b4a51cf73efb0d132860a8c747e6Timo Sirainenesac
503e5ef896c7b4a51cf73efb0d132860a8c747e6Timo Sirainen
503e5ef896c7b4a51cf73efb0d132860a8c747e6Timo Sirainendnl * Do we have struct dirent->d_type
503e5ef896c7b4a51cf73efb0d132860a8c747e6Timo SirainenAC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
503e5ef896c7b4a51cf73efb0d132860a8c747e6Timo Sirainen #include <dirent.h>
503e5ef896c7b4a51cf73efb0d132860a8c747e6Timo Sirainen]], [[
503e5ef896c7b4a51cf73efb0d132860a8c747e6Timo Sirainen struct dirent d;
20dd6f6726db692904794d7daafe5b6e7238b720Timo Sirainen d.d_type = DT_DIR;
20dd6f6726db692904794d7daafe5b6e7238b720Timo Sirainen]])],[
503e5ef896c7b4a51cf73efb0d132860a8c747e6Timo Sirainen AC_DEFINE(HAVE_DIRENT_D_TYPE,, Define if you have struct dirent->d_type)
ad4f1b0666975c57dd2d8d3492b223ec814791cdTimo Sirainen],[])
ad4f1b0666975c57dd2d8d3492b223ec814791cdTimo Sirainen
ad4f1b0666975c57dd2d8d3492b223ec814791cdTimo Sirainendnl * Do we have OFF_T_MAX?
b40d1ef77181fda648e2ba22188c91a124f5bee6Timo SirainenAC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
503e5ef896c7b4a51cf73efb0d132860a8c747e6Timo Sirainen #include <limits.h>
503e5ef896c7b4a51cf73efb0d132860a8c747e6Timo Sirainen #include <sys/types.h>
503e5ef896c7b4a51cf73efb0d132860a8c747e6Timo Sirainen]], [[
503e5ef896c7b4a51cf73efb0d132860a8c747e6Timo Sirainen off_t i = OFF_T_MAX;
503e5ef896c7b4a51cf73efb0d132860a8c747e6Timo Sirainen]])],[
503e5ef896c7b4a51cf73efb0d132860a8c747e6Timo Sirainen :
503e5ef896c7b4a51cf73efb0d132860a8c747e6Timo Sirainen],[
503e5ef896c7b4a51cf73efb0d132860a8c747e6Timo Sirainen AC_DEFINE_UNQUOTED(OFF_T_MAX, $offt_max, Maximum value of off_t)
2b682d8d3661800f16aceaa45fa4de9b6b140a59Timo Sirainen])
503e5ef896c7b4a51cf73efb0d132860a8c747e6Timo Sirainen
503e5ef896c7b4a51cf73efb0d132860a8c747e6Timo SirainenAC_DEFINE_UNQUOTED(PRIuUOFF_T, "$uofft_fmt", printf() format for uoff_t)
2b682d8d3661800f16aceaa45fa4de9b6b140a59Timo Sirainen
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([[
503e5ef896c7b4a51cf73efb0d132860a8c747e6Timo Sirainen #include <sys/types.h>
503e5ef896c7b4a51cf73efb0d132860a8c747e6Timo Sirainen int main() {
968aab2a00d1b53a53854fc2e97d1c632171a54eTimo Sirainen /* return 0 if we're signed */
4ee00532a265bdfb38539d811fcd12d51210ac35Timo Sirainen exit((size_t)(int)-1 <= 0 ? 0 : 1);
968aab2a00d1b53a53854fc2e97d1c632171a54eTimo Sirainen }
eafecb7ad0fbbde0da8be7e8ae735459b7bb688bTimo Sirainen ]])],[
b089505afb8b5c5dfb43ef88af0ea7e0920db587Timo Sirainen i_cv_signed_size_t=yes
b089505afb8b5c5dfb43ef88af0ea7e0920db587Timo Sirainen
b089505afb8b5c5dfb43ef88af0ea7e0920db587Timo Sirainen echo
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
6d6bbe8787354bbb69d0c03187adfe0f497d70b8Timo Sirainen if test "$ignore_signed_size" = ""; then
d23c747de9d33966483fbdd41f08ad7766da7c5cTimo Sirainen AC_MSG_ERROR([aborting])
d23c747de9d33966483fbdd41f08ad7766da7c5cTimo Sirainen fi
2b682d8d3661800f16aceaa45fa4de9b6b140a59Timo Sirainen echo "..ignoring as requested.."
2b682d8d3661800f16aceaa45fa4de9b6b140a59Timo Sirainen ],[
2b682d8d3661800f16aceaa45fa4de9b6b140a59Timo Sirainen i_cv_signed_size_t=no
2b682d8d3661800f16aceaa45fa4de9b6b140a59Timo Sirainen ],[])
2b682d8d3661800f16aceaa45fa4de9b6b140a59Timo Sirainen])
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 ;;
aaebcf0da12df7216be69961204fa64ec24c54b9Timo Sirainen "unsigned long long")
aaebcf0da12df7216be69961204fa64ec24c54b9Timo Sirainen ssizet_max=LLONG_MAX
968aab2a00d1b53a53854fc2e97d1c632171a54eTimo Sirainen sizet_fmt="llu"
968aab2a00d1b53a53854fc2e97d1c632171a54eTimo Sirainen ;;
968aab2a00d1b53a53854fc2e97d1c632171a54eTimo Sirainen *)
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
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 Sirainen fi
503e5ef896c7b4a51cf73efb0d132860a8c747e6Timo Sirainen ;;
503e5ef896c7b4a51cf73efb0d132860a8c747e6Timo Sirainenesac
503e5ef896c7b4a51cf73efb0d132860a8c747e6Timo Sirainen
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 Sirainen
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([[
f6f94063c4c3080280b87ab47ac2bb756ba002f9Timo Sirainen #include <sys/types.h>
83bb013a99f0936995f9c7a1077822662d8fefdbTimo Sirainen $2]], [[$1 t;]])],[i_cv_type_$1=yes],[i_cv_type_$1=no])])
83bb013a99f0936995f9c7a1077822662d8fefdbTimo Sirainen AC_MSG_RESULT($i_cv_type_$1)
83bb013a99f0936995f9c7a1077822662d8fefdbTimo Sirainen])
83bb013a99f0936995f9c7a1077822662d8fefdbTimo Sirainen
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 Sirainen])
f6f94063c4c3080280b87ab47ac2bb756ba002f9Timo Sirainen
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))
3fe44a0df5a0bdd80c495f79cbf0e384441d6fccTimo Sirainenfi
b2e181e33889f0a4a3ba9dc23d676cbfe1bf7782Timo Sirainen
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))
b2e181e33889f0a4a3ba9dc23d676cbfe1bf7782Timo Sirainenfi
b2e181e33889f0a4a3ba9dc23d676cbfe1bf7782Timo Sirainen
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 Sirainenfi
3fe44a0df5a0bdd80c495f79cbf0e384441d6fccTimo Sirainen
3fe44a0df5a0bdd80c495f79cbf0e384441d6fccTimo SirainenAC_DEFINE_UNQUOTED(MEM_ALIGN_SIZE, $mem_align, Required memory alignment)
3fe44a0df5a0bdd80c495f79cbf0e384441d6fccTimo Sirainen
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
6800c6607013d4fdef5a4f764bae407301c6cce8Timo Sirainenelse
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
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo Sirainen else
6800c6607013d4fdef5a4f764bae407301c6cce8Timo Sirainen AC_MSG_RESULT(no)
6d6bbe8787354bbb69d0c03187adfe0f497d70b8Timo Sirainen fi
6d6bbe8787354bbb69d0c03187adfe0f497d70b8Timo Sirainenfi
6d6bbe8787354bbb69d0c03187adfe0f497d70b8Timo Sirainen
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"
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo Sirainen ])
cb931f84e3ec8e3deda253a1c0ae0409023de096Timo Sirainenfi
cb931f84e3ec8e3deda253a1c0ae0409023de096Timo Sirainen
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#include <time.h>]],
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)
6800c6607013d4fdef5a4f764bae407301c6cce8Timo Sirainenfi
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo SirainenAC_MSG_RESULT($i_cv_field_tm_gmtoff)
6800c6607013d4fdef5a4f764bae407301c6cce8Timo Sirainen
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 #include <stdio.h>
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo Sirainen #include <time.h>
bc7a4cf2c06702ebaedba9a7c15ce657d5856f63Timo Sirainen int main() {
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo Sirainen FILE *f;
6800c6607013d4fdef5a4f764bae407301c6cce8Timo Sirainen int bits;
6800c6607013d4fdef5a4f764bae407301c6cce8Timo Sirainen
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) {
6800c6607013d4fdef5a4f764bae407301c6cce8Timo Sirainen bits--;
83bb013a99f0936995f9c7a1077822662d8fefdbTimo Sirainen break;
bd7b1a9000b12349e2a99bb43b3ce8b96a18e92bTimo Sirainen }
bd7b1a9000b12349e2a99bb43b3ce8b96a18e92bTimo Sirainen }
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 bits = 40;
bd7b1a9000b12349e2a99bb43b3ce8b96a18e92bTimo Sirainen }
bd7b1a9000b12349e2a99bb43b3ce8b96a18e92bTimo Sirainen
bd7b1a9000b12349e2a99bb43b3ce8b96a18e92bTimo Sirainen f = fopen("conftest.temp", "w");
3ccfcf0856958cb9208a9fc51c3bdf13c58ad52aTimo Sirainen if (f == NULL) {
6800c6607013d4fdef5a4f764bae407301c6cce8Timo Sirainen perror("fopen()");
bd7b1a9000b12349e2a99bb43b3ce8b96a18e92bTimo Sirainen return 1;
bd7b1a9000b12349e2a99bb43b3ce8b96a18e92bTimo Sirainen }
bd7b1a9000b12349e2a99bb43b3ce8b96a18e92bTimo Sirainen fprintf(f, "%d", bits);
bd7b1a9000b12349e2a99bb43b3ce8b96a18e92bTimo Sirainen fclose(f);
bd7b1a9000b12349e2a99bb43b3ce8b96a18e92bTimo Sirainen 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
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 none fs 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"
want_ssl_libs=yes
fi
if test $storage = pop3c; then
want_ssl_libs=yes
fi
done
LINKED_STORAGE_LDADD=
if test "$want_ssl_libs" = yes; then
LINKED_STORAGE_LIBS="$LINKED_STORAGE_LIBS \$(top_builddir)/src/lib-ssl-iostream/libssl_iostream.la"
LINKED_STORAGE_LDADD="$SSL_LIBS"
fi
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_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'
else
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="$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 $(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'
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_SSL)
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
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)
])
], [
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")
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/' | 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 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_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 "$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-imap/Makefile
src/lib-imap-storage/Makefile
src/lib-imap-client/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/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/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."