configure.in revision 54d1312e1be5a84a9f9585f9f5e1f884f1d37d0e
2454dfa32c93c20a8522c6ed42fe057baaac9f9aStephan BoschAC_INIT(src)
02b32cf39a098edf60981fc228e4b034f11f3b90Timo Sirainen
02b32cf39a098edf60981fc228e4b034f11f3b90Timo SirainenAM_CONFIG_HEADER(config.h)
b5ff746939712c6a9bef71405fa786d5471cf177Timo SirainenAM_INIT_AUTOMAKE(dovecot, 0.99.8)
02b32cf39a098edf60981fc228e4b034f11f3b90Timo Sirainen
4a7e04d325db0c03f575f98f045246fceb0de279Timo SirainenAM_MAINTAINER_MODE
02b32cf39a098edf60981fc228e4b034f11f3b90Timo Sirainen
4eb418849d5c6bf77b2721e4e6aef2e97deaa197Timo SirainenAC_ISC_POSIX
b5ff746939712c6a9bef71405fa786d5471cf177Timo SirainenAC_PROG_CC
d9fdacd5fb3e07997e5c389739d2054f0c8441d8Timo SirainenAC_PROG_CPP
d9fdacd5fb3e07997e5c389739d2054f0c8441d8Timo SirainenAC_STDC_HEADERS
d9fdacd5fb3e07997e5c389739d2054f0c8441d8Timo SirainenAC_C_INLINE
9e86ad9eb313004cd4c8b5427daeb4c241b57af6Timo SirainenAC_ARG_PROGRAM
d9fdacd5fb3e07997e5c389739d2054f0c8441d8Timo SirainenAM_PROG_LIBTOOL
d9fdacd5fb3e07997e5c389739d2054f0c8441d8Timo SirainenAM_ICONV
d9fdacd5fb3e07997e5c389739d2054f0c8441d8Timo Sirainen
d9fdacd5fb3e07997e5c389739d2054f0c8441d8Timo SirainenAC_CHECK_HEADERS(string.h stdlib.h stdint.h unistd.h dirent.h)
1ea0aa8e14e843f2776746776a429b0a1aae299dTimo SirainenAC_CHECK_HEADERS(sys/uio.h sys/sysmacros.h sys/resource.h linux/mman.h)
d9fdacd5fb3e07997e5c389739d2054f0c8441d8Timo SirainenAC_CHECK_HEADERS(sys/select.h)
d9fdacd5fb3e07997e5c389739d2054f0c8441d8Timo Sirainen
d9fdacd5fb3e07997e5c389739d2054f0c8441d8Timo Sirainen# check posix headers
48f78a48f2e1cf299026544444666471ae16ad97Timo SirainenAC_CHECK_HEADERS(sys/time.h)
4a7e04d325db0c03f575f98f045246fceb0de279Timo Sirainen
4a7e04d325db0c03f575f98f045246fceb0de279Timo SirainenAC_ARG_ENABLE(ipv6,
f83fd83f9c6708d198748e714aa947cad9362c02Timo Sirainen[ --enable-ipv6 Enable IPv6 support (default)],
4a7e04d325db0c03f575f98f045246fceb0de279Timo Sirainen if test x$enableval = xno; then
1ea0aa8e14e843f2776746776a429b0a1aae299dTimo Sirainen want_ipv6=no
1ea0aa8e14e843f2776746776a429b0a1aae299dTimo Sirainen else
6e77746e501c2b45850b1c530836058ed75e09eeTimo Sirainen want_ipv6=yes
6e77746e501c2b45850b1c530836058ed75e09eeTimo Sirainen fi,
6e77746e501c2b45850b1c530836058ed75e09eeTimo Sirainen want_ipv6=yes)
6e77746e501c2b45850b1c530836058ed75e09eeTimo Sirainen
6e77746e501c2b45850b1c530836058ed75e09eeTimo SirainenAC_ARG_ENABLE(debug,
6e77746e501c2b45850b1c530836058ed75e09eeTimo Sirainen[ --enable-debug Enable some extra checks for debugging],
6e77746e501c2b45850b1c530836058ed75e09eeTimo Sirainen if test x$enableval = xyes; then
6e77746e501c2b45850b1c530836058ed75e09eeTimo Sirainen AC_DEFINE(DEBUG,, Build with extra debugging checks)
6e77746e501c2b45850b1c530836058ed75e09eeTimo Sirainen fi)
6e77746e501c2b45850b1c530836058ed75e09eeTimo Sirainen
6e77746e501c2b45850b1c530836058ed75e09eeTimo SirainenAC_ARG_ENABLE(asserts,
6e77746e501c2b45850b1c530836058ed75e09eeTimo Sirainen[ --enable-asserts Enable asserts (default)],
6e77746e501c2b45850b1c530836058ed75e09eeTimo Sirainen if test x$enableval = xno; then
8c8f7ac580b661aee3d8b8dd37df4a9b41c77000Timo Sirainen AC_DEFINE(DISABLE_ASSERTS,, Disable asserts)
8c8f7ac580b661aee3d8b8dd37df4a9b41c77000Timo Sirainen fi)
8c8f7ac580b661aee3d8b8dd37df4a9b41c77000Timo Sirainen
8c8f7ac580b661aee3d8b8dd37df4a9b41c77000Timo SirainenAC_ARG_WITH(file-offset-size,
8c8f7ac580b661aee3d8b8dd37df4a9b41c77000Timo Sirainen[ --with-file-offset-size=BITS Set size of file offsets. Usually 32 or 64.
8c8f7ac580b661aee3d8b8dd37df4a9b41c77000Timo Sirainen (default: 64 if available)],
8c8f7ac580b661aee3d8b8dd37df4a9b41c77000Timo Sirainen preferred_off_t_bits=$withval,
8c8f7ac580b661aee3d8b8dd37df4a9b41c77000Timo Sirainen preferred_off_t_bits=64)
8c8f7ac580b661aee3d8b8dd37df4a9b41c77000Timo Sirainen
8c8f7ac580b661aee3d8b8dd37df4a9b41c77000Timo SirainenAC_ARG_WITH(mem-align,
8c8f7ac580b661aee3d8b8dd37df4a9b41c77000Timo Sirainen[ --with-mem-align=BYTES Set the memory alignment (default: 8)],
8c8f7ac580b661aee3d8b8dd37df4a9b41c77000Timo Sirainen mem_align=$withval,
8c8f7ac580b661aee3d8b8dd37df4a9b41c77000Timo Sirainen mem_align=8)
d9fdacd5fb3e07997e5c389739d2054f0c8441d8Timo Sirainen
d9fdacd5fb3e07997e5c389739d2054f0c8441d8Timo SirainenAC_ARG_WITH(index-align,
d9fdacd5fb3e07997e5c389739d2054f0c8441d8Timo Sirainen[ --with-index-align=BYTES Set the index file alignment (default: detect)],
48f78a48f2e1cf299026544444666471ae16ad97Timo Sirainen index_align=$withval,
d9fdacd5fb3e07997e5c389739d2054f0c8441d8Timo Sirainen index_align=0)
48f78a48f2e1cf299026544444666471ae16ad97Timo Sirainen
48f78a48f2e1cf299026544444666471ae16ad97Timo SirainenAC_ARG_WITH(passwd,
0dc7891233a973829f00371b27810f849b987c66Timo Sirainen[ --with-passwd Build with /etc/passwd support (default)],
0dc7891233a973829f00371b27810f849b987c66Timo Sirainen if test x$withval = xno; then
0dc7891233a973829f00371b27810f849b987c66Timo Sirainen want_passwd=no
0dc7891233a973829f00371b27810f849b987c66Timo Sirainen else
0dc7891233a973829f00371b27810f849b987c66Timo Sirainen want_passwd=yes
0dc7891233a973829f00371b27810f849b987c66Timo Sirainen fi,
0dc7891233a973829f00371b27810f849b987c66Timo Sirainen want_passwd=yes)
0dc7891233a973829f00371b27810f849b987c66Timo Sirainen
b5ff746939712c6a9bef71405fa786d5471cf177Timo SirainenAC_ARG_WITH(passwd-file,
b5ff746939712c6a9bef71405fa786d5471cf177Timo Sirainen[ --with-passwd-file Build with passwd-like file support (default)],
b5ff746939712c6a9bef71405fa786d5471cf177Timo Sirainen if test x$withval = xno; then
b5ff746939712c6a9bef71405fa786d5471cf177Timo Sirainen want_passwd_file=no
b5ff746939712c6a9bef71405fa786d5471cf177Timo Sirainen else
efe78d3ba24fc866af1c79b9223dc0809ba26cadStephan Bosch want_passwd_file=yes
b5ff746939712c6a9bef71405fa786d5471cf177Timo Sirainen fi,
b5ff746939712c6a9bef71405fa786d5471cf177Timo Sirainen want_passwd_file=yes)
b5ff746939712c6a9bef71405fa786d5471cf177Timo Sirainen
b5ff746939712c6a9bef71405fa786d5471cf177Timo SirainenAC_ARG_WITH(shadow,
b5ff746939712c6a9bef71405fa786d5471cf177Timo Sirainen[ --with-shadow Build with shadow password support (default)],
b5ff746939712c6a9bef71405fa786d5471cf177Timo Sirainen if test x$withval = xno; then
b5ff746939712c6a9bef71405fa786d5471cf177Timo Sirainen want_shadow=no
b5ff746939712c6a9bef71405fa786d5471cf177Timo Sirainen else
b5ff746939712c6a9bef71405fa786d5471cf177Timo Sirainen want_shadow=yes
b5ff746939712c6a9bef71405fa786d5471cf177Timo Sirainen fi,
b5ff746939712c6a9bef71405fa786d5471cf177Timo Sirainen want_shadow=yes)
b5ff746939712c6a9bef71405fa786d5471cf177Timo Sirainen
b5ff746939712c6a9bef71405fa786d5471cf177Timo SirainenAC_ARG_WITH(pam,
b5ff746939712c6a9bef71405fa786d5471cf177Timo Sirainen[ --with-pam Build with PAM support (default)],
b5ff746939712c6a9bef71405fa786d5471cf177Timo Sirainen if test x$withval = xno; then
b5ff746939712c6a9bef71405fa786d5471cf177Timo Sirainen want_pam=no
b5ff746939712c6a9bef71405fa786d5471cf177Timo Sirainen else
b5ff746939712c6a9bef71405fa786d5471cf177Timo Sirainen want_pam=yes
b5ff746939712c6a9bef71405fa786d5471cf177Timo Sirainen fi,
b5ff746939712c6a9bef71405fa786d5471cf177Timo Sirainen want_pam=yes)
b5ff746939712c6a9bef71405fa786d5471cf177Timo Sirainen
b5ff746939712c6a9bef71405fa786d5471cf177Timo SirainenAC_ARG_WITH(ldap,
b5ff746939712c6a9bef71405fa786d5471cf177Timo Sirainen[ --with-ldap Build with LDAP support],
b5ff746939712c6a9bef71405fa786d5471cf177Timo Sirainen if test x$withval = xno; then
b5ff746939712c6a9bef71405fa786d5471cf177Timo Sirainen want_ldap=no
b5ff746939712c6a9bef71405fa786d5471cf177Timo Sirainen else
b5ff746939712c6a9bef71405fa786d5471cf177Timo Sirainen want_ldap=yes
d9a7e950a9cd21f2b4a90ec7759fca9e8fcc7995Timo Sirainen fi,
b5ff746939712c6a9bef71405fa786d5471cf177Timo Sirainen want_ldap=no)
b5ff746939712c6a9bef71405fa786d5471cf177Timo Sirainen
b5ff746939712c6a9bef71405fa786d5471cf177Timo SirainenAC_ARG_WITH(vpopmail,
b5ff746939712c6a9bef71405fa786d5471cf177Timo Sirainen[ --with-vpopmail Build with vpopmail support (default)],
b5ff746939712c6a9bef71405fa786d5471cf177Timo Sirainen if test x$withval = xno; then
b5ff746939712c6a9bef71405fa786d5471cf177Timo Sirainen want_vpopmail=no
b5ff746939712c6a9bef71405fa786d5471cf177Timo Sirainen else
b5ff746939712c6a9bef71405fa786d5471cf177Timo Sirainen want_vpopmail=yes
b5ff746939712c6a9bef71405fa786d5471cf177Timo Sirainen fi,
b5ff746939712c6a9bef71405fa786d5471cf177Timo Sirainen want_vpopmail=yes)
b5ff746939712c6a9bef71405fa786d5471cf177Timo Sirainen
b5ff746939712c6a9bef71405fa786d5471cf177Timo SirainenAC_ARG_WITH(static-userdb,
b5ff746939712c6a9bef71405fa786d5471cf177Timo Sirainen[ --with-static-userdb Build with static userdb support (default)],
b5ff746939712c6a9bef71405fa786d5471cf177Timo Sirainen if test x$withval = xno; then
b5ff746939712c6a9bef71405fa786d5471cf177Timo Sirainen want_static_userdb=no
b5ff746939712c6a9bef71405fa786d5471cf177Timo Sirainen else
b5ff746939712c6a9bef71405fa786d5471cf177Timo Sirainen want_static_userdb=yes
14cac26dcb71108abfdc95ea524e74be1f95774cPhil Carmody fi,
14cac26dcb71108abfdc95ea524e74be1f95774cPhil Carmody want_static_userdb=yes)
14cac26dcb71108abfdc95ea524e74be1f95774cPhil Carmody
b5ff746939712c6a9bef71405fa786d5471cf177Timo SirainenAC_ARG_WITH(pgsql,
b5ff746939712c6a9bef71405fa786d5471cf177Timo Sirainen[ --with-pgsql Build with PostgreSQL support],
b5ff746939712c6a9bef71405fa786d5471cf177Timo Sirainen if test x$withval = xno; then
b5ff746939712c6a9bef71405fa786d5471cf177Timo Sirainen want_pgsql=no
b5ff746939712c6a9bef71405fa786d5471cf177Timo Sirainen else
b5ff746939712c6a9bef71405fa786d5471cf177Timo Sirainen want_pgsql=yes
b5ff746939712c6a9bef71405fa786d5471cf177Timo Sirainen fi,
b5ff746939712c6a9bef71405fa786d5471cf177Timo Sirainen want_pgsql=no)
b5ff746939712c6a9bef71405fa786d5471cf177Timo Sirainen
b5ff746939712c6a9bef71405fa786d5471cf177Timo SirainenAC_ARG_WITH(cyrus-sasl2,
b5ff746939712c6a9bef71405fa786d5471cf177Timo Sirainen[ --with-cyrus-sasl2 Build with Cyrus SASL 2 library support],
b5ff746939712c6a9bef71405fa786d5471cf177Timo Sirainen if test x$withval = xno; then
b5ff746939712c6a9bef71405fa786d5471cf177Timo Sirainen want_cyrus_sasl2=no
b5ff746939712c6a9bef71405fa786d5471cf177Timo Sirainen else
b5ff746939712c6a9bef71405fa786d5471cf177Timo Sirainen want_cyrus_sasl2=yes
b5ff746939712c6a9bef71405fa786d5471cf177Timo Sirainen fi,
b5ff746939712c6a9bef71405fa786d5471cf177Timo Sirainen want_cyrus_sasl2=no)
b5ff746939712c6a9bef71405fa786d5471cf177Timo Sirainen
b5ff746939712c6a9bef71405fa786d5471cf177Timo SirainenAC_ARG_WITH(rawlog,
1107c86ff3fa4f29796c2e76134b78d0b4a0db50Timo Sirainen[ --with-rawlog Build support for logging user traffic],
1107c86ff3fa4f29796c2e76134b78d0b4a0db50Timo Sirainen if test x$withval = xyes; then
b5ff746939712c6a9bef71405fa786d5471cf177Timo Sirainen AC_DEFINE(BUILD_RAWLOG,, Build with rawlogging feature)
b5ff746939712c6a9bef71405fa786d5471cf177Timo Sirainen fi)
b5ff746939712c6a9bef71405fa786d5471cf177Timo Sirainen
b5ff746939712c6a9bef71405fa786d5471cf177Timo SirainenAC_ARG_WITH(ssl,
b5ff746939712c6a9bef71405fa786d5471cf177Timo Sirainen[ --with-ssl=[gnutls|openssl] Build with GNUTLS (default) or OpenSSL],
b5ff746939712c6a9bef71405fa786d5471cf177Timo Sirainen if test x$withval = xno; then
b5ff746939712c6a9bef71405fa786d5471cf177Timo Sirainen want_gnutls=no
b5ff746939712c6a9bef71405fa786d5471cf177Timo Sirainen want_openssl=no
b5ff746939712c6a9bef71405fa786d5471cf177Timo Sirainen elif test x$withval = xgnutls; then
b5ff746939712c6a9bef71405fa786d5471cf177Timo Sirainen want_gnutls=yes
b5ff746939712c6a9bef71405fa786d5471cf177Timo Sirainen want_openssl=no
4eb418849d5c6bf77b2721e4e6aef2e97deaa197Timo Sirainen elif test x$withval = xopenssl; then
4eb418849d5c6bf77b2721e4e6aef2e97deaa197Timo Sirainen want_gnutls=no
4eb418849d5c6bf77b2721e4e6aef2e97deaa197Timo Sirainen want_openssl=yes
4eb418849d5c6bf77b2721e4e6aef2e97deaa197Timo Sirainen else
4eb418849d5c6bf77b2721e4e6aef2e97deaa197Timo Sirainen want_gnutls=yes
4eb418849d5c6bf77b2721e4e6aef2e97deaa197Timo Sirainen want_openssl=yes
a8b37b688ceaa3ed3d40b3ccbdba5bb75cfb64b0Timo Sirainen fi, [
a8b37b688ceaa3ed3d40b3ccbdba5bb75cfb64b0Timo Sirainen want_gnutls=yes
4eb418849d5c6bf77b2721e4e6aef2e97deaa197Timo Sirainen want_openssl=yes
4eb418849d5c6bf77b2721e4e6aef2e97deaa197Timo Sirainen ])
d9fdacd5fb3e07997e5c389739d2054f0c8441d8Timo Sirainen
d9fdacd5fb3e07997e5c389739d2054f0c8441d8Timo SirainenAC_ARG_WITH(ssldir,
0dc7891233a973829f00371b27810f849b987c66Timo Sirainen[ --with-ssldir=DIR SSL base directory for certificates (/etc/ssl)],
02b32cf39a098edf60981fc228e4b034f11f3b90Timo Sirainen ssldir="$withval",
0dc7891233a973829f00371b27810f849b987c66Timo Sirainen ssldir=/etc/ssl
4eb418849d5c6bf77b2721e4e6aef2e97deaa197Timo Sirainen)
d9fdacd5fb3e07997e5c389739d2054f0c8441d8Timo SirainenAC_SUBST(ssldir)
02b32cf39a098edf60981fc228e4b034f11f3b90Timo Sirainen
d9fdacd5fb3e07997e5c389739d2054f0c8441d8Timo SirainenAC_ARG_WITH(pop3d,
02b32cf39a098edf60981fc228e4b034f11f3b90Timo Sirainen[ --with-pop3d Build POP3 server (default)],
4a7e04d325db0c03f575f98f045246fceb0de279Timo Sirainen if test x$withval = xno; then
d9fdacd5fb3e07997e5c389739d2054f0c8441d8Timo Sirainen want_pop3d=no
4a7e04d325db0c03f575f98f045246fceb0de279Timo Sirainen else
4a7e04d325db0c03f575f98f045246fceb0de279Timo Sirainen want_pop3d=yes
d9fdacd5fb3e07997e5c389739d2054f0c8441d8Timo Sirainen fi,
0dc7891233a973829f00371b27810f849b987c66Timo Sirainen want_pop3d=yes)
0dc7891233a973829f00371b27810f849b987c66Timo SirainenAM_CONDITIONAL(BUILD_POP3D, test "$want_pop3d" = "yes")
0dc7891233a973829f00371b27810f849b987c66Timo Sirainen
d9fdacd5fb3e07997e5c389739d2054f0c8441d8Timo Sirainendnl * gcc specific options
d9fdacd5fb3e07997e5c389739d2054f0c8441d8Timo Sirainenif test "x$ac_cv_prog_gcc" = "xyes"; then
d9fdacd5fb3e07997e5c389739d2054f0c8441d8Timo Sirainen # -Wcast-qual -Wcast-align -Wconversion # too many warnings
0dc7891233a973829f00371b27810f849b987c66Timo Sirainen # -Wstrict-prototypes -Wredundant-decls # may give warnings in some systems
0dc7891233a973829f00371b27810f849b987c66Timo Sirainen # -Wmissing-format-attribute -Wmissing-noreturn -Wwrite-strings # a couple of warnings
0dc7891233a973829f00371b27810f849b987c66Timo Sirainen CFLAGS="$CFLAGS -Wall -W -Wmissing-prototypes -Wmissing-declarations -Wpointer-arith -Wchar-subscripts -Wformat=2 -Wbad-function-cast"
d9fdacd5fb3e07997e5c389739d2054f0c8441d8Timo Sirainenfi
d9fdacd5fb3e07997e5c389739d2054f0c8441d8Timo Sirainen
d9fdacd5fb3e07997e5c389739d2054f0c8441d8Timo Sirainendnl **
d9fdacd5fb3e07997e5c389739d2054f0c8441d8Timo Sirainendnl ** just some generic stuff...
d9fdacd5fb3e07997e5c389739d2054f0c8441d8Timo Sirainendnl **
d9fdacd5fb3e07997e5c389739d2054f0c8441d8Timo Sirainen
d9fdacd5fb3e07997e5c389739d2054f0c8441d8Timo SirainenAC_CHECK_FUNC(socket, [], [
d9fdacd5fb3e07997e5c389739d2054f0c8441d8Timo Sirainen AC_CHECK_LIB(socket, socket, [
23bdbb7b1831785c6ba6df190f6369da882d2b9dTimo Sirainen LIBS="$LIBS -lsocket"
4a7e04d325db0c03f575f98f045246fceb0de279Timo Sirainen ])
4a7e04d325db0c03f575f98f045246fceb0de279Timo Sirainen])
f83fd83f9c6708d198748e714aa947cad9362c02Timo Sirainen
4a7e04d325db0c03f575f98f045246fceb0de279Timo SirainenAC_CHECK_FUNC(inet_addr, [], [
d9fdacd5fb3e07997e5c389739d2054f0c8441d8Timo Sirainen AC_CHECK_LIB(nsl, inet_addr, [
d9fdacd5fb3e07997e5c389739d2054f0c8441d8Timo Sirainen LIBS="$LIBS -lnsl"
d9fdacd5fb3e07997e5c389739d2054f0c8441d8Timo Sirainen ])
02b32cf39a098edf60981fc228e4b034f11f3b90Timo Sirainen])
d9fdacd5fb3e07997e5c389739d2054f0c8441d8Timo Sirainen
d9fdacd5fb3e07997e5c389739d2054f0c8441d8Timo SirainenAC_CHECK_FUNC(fdatasync, [
d9fdacd5fb3e07997e5c389739d2054f0c8441d8Timo Sirainen have_fdatasync=yes
0dc7891233a973829f00371b27810f849b987c66Timo Sirainen], [
0dc7891233a973829f00371b27810f849b987c66Timo Sirainen AC_CHECK_LIB(rt, fdatasync, [
0dc7891233a973829f00371b27810f849b987c66Timo Sirainen have_fdatasync=yes
d9fdacd5fb3e07997e5c389739d2054f0c8441d8Timo Sirainen LIBS="$LIBS -lrt"
2767104d81e97a109f0aa9758792bfa1da325a97Timo Sirainen ])
9e86ad9eb313004cd4c8b5427daeb4c241b57af6Timo Sirainen])
4eb418849d5c6bf77b2721e4e6aef2e97deaa197Timo Sirainen
9e86ad9eb313004cd4c8b5427daeb4c241b57af6Timo Sirainenif test "$have_fdatasync" = "yes"; then
0dc7891233a973829f00371b27810f849b987c66Timo Sirainen AC_DEFINE(HAVE_FDATASYNC,, Define if you have fdatasync())
0dc7891233a973829f00371b27810f849b987c66Timo Sirainenfi
b5ff746939712c6a9bef71405fa786d5471cf177Timo Sirainen
b5ff746939712c6a9bef71405fa786d5471cf177Timo Sirainendnl * after -lsocket and -lnsl tests, inet_aton() may be in them
b5ff746939712c6a9bef71405fa786d5471cf177Timo SirainenAC_CHECK_FUNCS(fcntl flock inet_aton sigaction getpagesize madvise \
9e86ad9eb313004cd4c8b5427daeb4c241b57af6Timo Sirainen strcasecmp stricmp vsnprintf vsyslog writev setrlimit \
9e86ad9eb313004cd4c8b5427daeb4c241b57af6Timo Sirainen setproctitle)
0dc7891233a973829f00371b27810f849b987c66Timo Sirainen
0dc7891233a973829f00371b27810f849b987c66Timo Sirainendnl * poll/select?
36af6ff6b0249d0fb98b2c16c2ab8755e9394214Timo Sirainen
3d2fd3816b79caf8048582f1e951019187ee9d9dTimo SirainenAC_CHECK_FUNC(poll, [
d9fdacd5fb3e07997e5c389739d2054f0c8441d8Timo Sirainen AC_DEFINE(IOLOOP_POLL,, Implement I/O loop with poll())
d9fdacd5fb3e07997e5c389739d2054f0c8441d8Timo Sirainen], [
d9fdacd5fb3e07997e5c389739d2054f0c8441d8Timo Sirainen AC_DEFINE(IOLOOP_SELECT,, Implement I/O loop with select())
d9fdacd5fb3e07997e5c389739d2054f0c8441d8Timo Sirainen])
d9fdacd5fb3e07997e5c389739d2054f0c8441d8Timo Sirainen
0dc7891233a973829f00371b27810f849b987c66Timo Sirainendnl * OS specific options
0dc7891233a973829f00371b27810f849b987c66Timo Sirainencase "$host_os" in
0dc7891233a973829f00371b27810f849b987c66Timo Sirainen hpux*)
d9fdacd5fb3e07997e5c389739d2054f0c8441d8Timo Sirainen CFLAGS="$CFLAGS -D_XOPEN_SOURCE_EXTENDED"
d9fdacd5fb3e07997e5c389739d2054f0c8441d8Timo Sirainen ;;
d9fdacd5fb3e07997e5c389739d2054f0c8441d8Timo Sirainen *)
d9fdacd5fb3e07997e5c389739d2054f0c8441d8Timo Sirainen ;;
d9fdacd5fb3e07997e5c389739d2054f0c8441d8Timo Sirainenesac
d9fdacd5fb3e07997e5c389739d2054f0c8441d8Timo Sirainen
d9fdacd5fb3e07997e5c389739d2054f0c8441d8Timo SirainenAC_CHECK_SIZEOF(int)
d9fdacd5fb3e07997e5c389739d2054f0c8441d8Timo SirainenAC_CHECK_SIZEOF(long)
d9fdacd5fb3e07997e5c389739d2054f0c8441d8Timo SirainenAC_CHECK_SIZEOF(void *)
d9fdacd5fb3e07997e5c389739d2054f0c8441d8Timo SirainenAC_CHECK_SIZEOF(long long)
d9fdacd5fb3e07997e5c389739d2054f0c8441d8Timo Sirainen
d9fdacd5fb3e07997e5c389739d2054f0c8441d8Timo SirainenAC_DEFUN(AC_TYPEOF, [
d9fdacd5fb3e07997e5c389739d2054f0c8441d8Timo Sirainen dnl * first check if we can get the size with redefining typedefs
d9fdacd5fb3e07997e5c389739d2054f0c8441d8Timo Sirainen
d9fdacd5fb3e07997e5c389739d2054f0c8441d8Timo Sirainen order="$2"
d9fdacd5fb3e07997e5c389739d2054f0c8441d8Timo Sirainen if test "$2" = ""; then
4a7e04d325db0c03f575f98f045246fceb0de279Timo Sirainen order="int long long-long"
4a7e04d325db0c03f575f98f045246fceb0de279Timo Sirainen fi
f83fd83f9c6708d198748e714aa947cad9362c02Timo Sirainen
4a7e04d325db0c03f575f98f045246fceb0de279Timo Sirainen result=""
c2bb1764c359ce85a7f7f789ead11dd613ff9769Timo Sirainen visible="unknown"
d9fdacd5fb3e07997e5c389739d2054f0c8441d8Timo Sirainen AC_MSG_CHECKING([type of $1])
d9fdacd5fb3e07997e5c389739d2054f0c8441d8Timo Sirainen
2767104d81e97a109f0aa9758792bfa1da325a97Timo Sirainen if test "x$ac_cv_prog_gcc" = "xyes"; then
0dc7891233a973829f00371b27810f849b987c66Timo Sirainen dnl * try with printf() + -Werror
0dc7891233a973829f00371b27810f849b987c66Timo Sirainen old_CFLAGS="$CFLAGS"
0dc7891233a973829f00371b27810f849b987c66Timo Sirainen CFLAGS="$CFLAGS -Werror"
0dc7891233a973829f00371b27810f849b987c66Timo Sirainen
0dc7891233a973829f00371b27810f849b987c66Timo Sirainen for type in $order; do
0dc7891233a973829f00371b27810f849b987c66Timo Sirainen case "$type" in
0dc7891233a973829f00371b27810f849b987c66Timo Sirainen int)
4eb418849d5c6bf77b2721e4e6aef2e97deaa197Timo Sirainen fmt="%d"
301b1524a822cec7b79856e8c599112c754bc4c0Timo Sirainen ;;
0dc7891233a973829f00371b27810f849b987c66Timo Sirainen long)
b5ff746939712c6a9bef71405fa786d5471cf177Timo Sirainen fmt="%ld"
b5ff746939712c6a9bef71405fa786d5471cf177Timo Sirainen ;;
b5ff746939712c6a9bef71405fa786d5471cf177Timo Sirainen long-long)
d9fdacd5fb3e07997e5c389739d2054f0c8441d8Timo Sirainen fmt="%lld"
d9fdacd5fb3e07997e5c389739d2054f0c8441d8Timo Sirainen ;;
0dc7891233a973829f00371b27810f849b987c66Timo Sirainen *)
0dc7891233a973829f00371b27810f849b987c66Timo Sirainen fmt=""
36af6ff6b0249d0fb98b2c16c2ab8755e9394214Timo Sirainen ;;
3d2fd3816b79caf8048582f1e951019187ee9d9dTimo Sirainen esac
d9fdacd5fb3e07997e5c389739d2054f0c8441d8Timo Sirainen
d9fdacd5fb3e07997e5c389739d2054f0c8441d8Timo Sirainen if test "$fmt" != ""; then
d9fdacd5fb3e07997e5c389739d2054f0c8441d8Timo Sirainen AC_TRY_COMPILE([
d9fdacd5fb3e07997e5c389739d2054f0c8441d8Timo Sirainen #include <sys/types.h>
d9fdacd5fb3e07997e5c389739d2054f0c8441d8Timo Sirainen #include <stdio.h>
d9fdacd5fb3e07997e5c389739d2054f0c8441d8Timo Sirainen ], [
02b32cf39a098edf60981fc228e4b034f11f3b90Timo Sirainen printf("$fmt", ($1)0);
02b32cf39a098edf60981fc228e4b034f11f3b90Timo Sirainen ], [
02b32cf39a098edf60981fc228e4b034f11f3b90Timo Sirainen if test "$result" != ""; then
02b32cf39a098edf60981fc228e4b034f11f3b90Timo Sirainen dnl * warning check isn't working
d9fdacd5fb3e07997e5c389739d2054f0c8441d8Timo Sirainen result=""
d9fdacd5fb3e07997e5c389739d2054f0c8441d8Timo Sirainen visible="unknown"
d9fdacd5fb3e07997e5c389739d2054f0c8441d8Timo Sirainen break
d9fdacd5fb3e07997e5c389739d2054f0c8441d8Timo Sirainen fi
d9fdacd5fb3e07997e5c389739d2054f0c8441d8Timo Sirainen result="`echo $type|sed 's/-/ /g'`"
0dc7891233a973829f00371b27810f849b987c66Timo Sirainen visible="$result"
0dc7891233a973829f00371b27810f849b987c66Timo Sirainen ])
0dc7891233a973829f00371b27810f849b987c66Timo Sirainen fi
0dc7891233a973829f00371b27810f849b987c66Timo Sirainen done
0dc7891233a973829f00371b27810f849b987c66Timo Sirainen CFLAGS="$old_CFLAGS"
0dc7891233a973829f00371b27810f849b987c66Timo Sirainen fi
0dc7891233a973829f00371b27810f849b987c66Timo Sirainen
0dc7891233a973829f00371b27810f849b987c66Timo Sirainen if test "$result" = ""; then
0dc7891233a973829f00371b27810f849b987c66Timo Sirainen for type in $order; do
0dc7891233a973829f00371b27810f849b987c66Timo Sirainen type="`echo $type|sed 's/-/ /g'`"
0dc7891233a973829f00371b27810f849b987c66Timo Sirainen AC_TRY_COMPILE([
0dc7891233a973829f00371b27810f849b987c66Timo Sirainen #include <sys/types.h>
0dc7891233a973829f00371b27810f849b987c66Timo Sirainen typedef $type $1;
0dc7891233a973829f00371b27810f849b987c66Timo Sirainen ],, [
0dc7891233a973829f00371b27810f849b987c66Timo Sirainen if test "$result" != ""; then
d9fdacd5fb3e07997e5c389739d2054f0c8441d8Timo Sirainen dnl * compiler allows redefining to anything
d9fdacd5fb3e07997e5c389739d2054f0c8441d8Timo Sirainen result=""
d9fdacd5fb3e07997e5c389739d2054f0c8441d8Timo Sirainen visible="unknown"
d9fdacd5fb3e07997e5c389739d2054f0c8441d8Timo Sirainen break
0dc7891233a973829f00371b27810f849b987c66Timo Sirainen fi
3d2fd3816b79caf8048582f1e951019187ee9d9dTimo Sirainen result="$type"
d9fdacd5fb3e07997e5c389739d2054f0c8441d8Timo Sirainen visible="$type"
d9fdacd5fb3e07997e5c389739d2054f0c8441d8Timo Sirainen ])
d9fdacd5fb3e07997e5c389739d2054f0c8441d8Timo Sirainen done
d9fdacd5fb3e07997e5c389739d2054f0c8441d8Timo Sirainen fi
d9fdacd5fb3e07997e5c389739d2054f0c8441d8Timo Sirainen
d9fdacd5fb3e07997e5c389739d2054f0c8441d8Timo Sirainen if test "$result" = ""; then
d9fdacd5fb3e07997e5c389739d2054f0c8441d8Timo Sirainen dnl * check with sizes
1ea0aa8e14e843f2776746776a429b0a1aae299dTimo Sirainen
1ea0aa8e14e843f2776746776a429b0a1aae299dTimo Sirainen dnl * older autoconfs don't include sys/types.h, so do it manually
d9fdacd5fb3e07997e5c389739d2054f0c8441d8Timo Sirainen AC_TRY_RUN([
d9fdacd5fb3e07997e5c389739d2054f0c8441d8Timo Sirainen #include <stdio.h>
d9fdacd5fb3e07997e5c389739d2054f0c8441d8Timo Sirainen #include <sys/types.h>
d9fdacd5fb3e07997e5c389739d2054f0c8441d8Timo Sirainen int main() {
d9fdacd5fb3e07997e5c389739d2054f0c8441d8Timo Sirainen FILE *f=fopen("conftestval", "w");
d9fdacd5fb3e07997e5c389739d2054f0c8441d8Timo Sirainen if (!f) exit(1);
0dc7891233a973829f00371b27810f849b987c66Timo Sirainen fprintf(f, "%d\n", sizeof($1));
1ea0aa8e14e843f2776746776a429b0a1aae299dTimo Sirainen exit(0);
0dc7891233a973829f00371b27810f849b987c66Timo Sirainen }
1ea0aa8e14e843f2776746776a429b0a1aae299dTimo Sirainen ], [
1ea0aa8e14e843f2776746776a429b0a1aae299dTimo Sirainen size=`cat conftestval`
1ea0aa8e14e843f2776746776a429b0a1aae299dTimo Sirainen rm -f conftestval
1ea0aa8e14e843f2776746776a429b0a1aae299dTimo Sirainen
1ea0aa8e14e843f2776746776a429b0a1aae299dTimo Sirainen for type in $order; do
1ea0aa8e14e843f2776746776a429b0a1aae299dTimo Sirainen actype="ac_cv_sizeof_`echo $type|sed 's/-/_/g'`"
1ea0aa8e14e843f2776746776a429b0a1aae299dTimo Sirainen if test "$size" = "`eval \"echo \\$$actype\"`"; then
d9fdacd5fb3e07997e5c389739d2054f0c8441d8Timo Sirainen result="`echo $type|sed 's/-/ /g'`"
d9fdacd5fb3e07997e5c389739d2054f0c8441d8Timo Sirainen visible="`expr $size \* 8`bit (using $result)"
d9fdacd5fb3e07997e5c389739d2054f0c8441d8Timo Sirainen break
d9fdacd5fb3e07997e5c389739d2054f0c8441d8Timo Sirainen fi
d9fdacd5fb3e07997e5c389739d2054f0c8441d8Timo Sirainen done
0dc7891233a973829f00371b27810f849b987c66Timo Sirainen if test "$result" = ""; then
d9fdacd5fb3e07997e5c389739d2054f0c8441d8Timo Sirainen visible="`expr $size \* 8`bit (unknown type)"
d9fdacd5fb3e07997e5c389739d2054f0c8441d8Timo Sirainen fi
d9fdacd5fb3e07997e5c389739d2054f0c8441d8Timo Sirainen ])
d9fdacd5fb3e07997e5c389739d2054f0c8441d8Timo Sirainen fi
0dc7891233a973829f00371b27810f849b987c66Timo Sirainen
d9fdacd5fb3e07997e5c389739d2054f0c8441d8Timo Sirainen typeof_$1=$result
d9fdacd5fb3e07997e5c389739d2054f0c8441d8Timo Sirainen AC_MSG_RESULT($visible)
d9fdacd5fb3e07997e5c389739d2054f0c8441d8Timo Sirainen])
d9fdacd5fb3e07997e5c389739d2054f0c8441d8Timo Sirainen
d9fdacd5fb3e07997e5c389739d2054f0c8441d8Timo Sirainendnl * off_t checks, try to make it 64bit
d9fdacd5fb3e07997e5c389739d2054f0c8441d8Timo SirainenAC_DEFINE_UNQUOTED(_FILE_OFFSET_BITS, $preferred_off_t_bits,
d9fdacd5fb3e07997e5c389739d2054f0c8441d8Timo Sirainen [If set to 64, enables 64bit off_t for some systems (eg. Linux, Solaris)])
d9fdacd5fb3e07997e5c389739d2054f0c8441d8Timo Sirainen
d9fdacd5fb3e07997e5c389739d2054f0c8441d8Timo SirainenAC_TYPEOF(off_t, long int long-long)
d9fdacd5fb3e07997e5c389739d2054f0c8441d8Timo Sirainencase "$typeof_off_t" in
d9fdacd5fb3e07997e5c389739d2054f0c8441d8Timo Sirainen int)
d9fdacd5fb3e07997e5c389739d2054f0c8441d8Timo Sirainen offt_max=INT_MAX
d9fdacd5fb3e07997e5c389739d2054f0c8441d8Timo Sirainen uofft_fmt="u"
1ea0aa8e14e843f2776746776a429b0a1aae299dTimo Sirainen AC_DEFINE(UOFF_T_INT,, Define if off_t is int)
d9fdacd5fb3e07997e5c389739d2054f0c8441d8Timo Sirainen offt_bits=`expr 8 \* $ac_cv_sizeof_int`
d9fdacd5fb3e07997e5c389739d2054f0c8441d8Timo Sirainen ;;
d9fdacd5fb3e07997e5c389739d2054f0c8441d8Timo Sirainen long)
4a7e04d325db0c03f575f98f045246fceb0de279Timo Sirainen offt_max=LONG_MAX
f1243d7759a3dddc1c3eaf7eda8a153c8ef0112bTimo Sirainen uofft_fmt="lu"
f1243d7759a3dddc1c3eaf7eda8a153c8ef0112bTimo Sirainen AC_DEFINE(UOFF_T_LONG,, Define if off_t is long)
f1243d7759a3dddc1c3eaf7eda8a153c8ef0112bTimo Sirainen offt_bits=`expr 8 \* $ac_cv_sizeof_long`
f1243d7759a3dddc1c3eaf7eda8a153c8ef0112bTimo Sirainen ;;
f1243d7759a3dddc1c3eaf7eda8a153c8ef0112bTimo Sirainen "long long")
d8d93ecd89efa7c84a3a21264a550449619f715bTimo Sirainen offt_max=LLONG_MAX
d8d93ecd89efa7c84a3a21264a550449619f715bTimo Sirainen uofft_fmt="llu"
d8d93ecd89efa7c84a3a21264a550449619f715bTimo Sirainen AC_DEFINE(UOFF_T_LONG_LONG,, Define if off_t is long long)
d8d93ecd89efa7c84a3a21264a550449619f715bTimo Sirainen offt_bits=`expr 8 \* $ac_cv_sizeof_long_long`
d8d93ecd89efa7c84a3a21264a550449619f715bTimo Sirainen ;;
d8d93ecd89efa7c84a3a21264a550449619f715bTimo Sirainen *)
d8d93ecd89efa7c84a3a21264a550449619f715bTimo Sirainen AC_ERROR([Unsupported off_t type])
d8d93ecd89efa7c84a3a21264a550449619f715bTimo Sirainen ;;
4a7e04d325db0c03f575f98f045246fceb0de279Timo Sirainenesac
4a7e04d325db0c03f575f98f045246fceb0de279Timo Sirainen
4a7e04d325db0c03f575f98f045246fceb0de279Timo Sirainendnl * Do we have OFF_T_MAX?
4a7e04d325db0c03f575f98f045246fceb0de279Timo SirainenAC_TRY_COMPILE([
4a7e04d325db0c03f575f98f045246fceb0de279Timo Sirainen #include <limits.h>
4a7e04d325db0c03f575f98f045246fceb0de279Timo Sirainen #include <sys/types.h>
4a7e04d325db0c03f575f98f045246fceb0de279Timo Sirainen], [
4a7e04d325db0c03f575f98f045246fceb0de279Timo Sirainen off_t i = OFF_T_MAX;
f83fd83f9c6708d198748e714aa947cad9362c02Timo Sirainen], [
f83fd83f9c6708d198748e714aa947cad9362c02Timo Sirainen], [
f83fd83f9c6708d198748e714aa947cad9362c02Timo Sirainen AC_DEFINE_UNQUOTED(OFF_T_MAX, $offt_max, Maximum value of off_t)
f83fd83f9c6708d198748e714aa947cad9362c02Timo Sirainen])
f83fd83f9c6708d198748e714aa947cad9362c02Timo Sirainen
f83fd83f9c6708d198748e714aa947cad9362c02Timo SirainenAC_DEFINE_UNQUOTED(PRIuUOFF_T, "$uofft_fmt", printf() format for uoff_t)
f83fd83f9c6708d198748e714aa947cad9362c02Timo Sirainen
f83fd83f9c6708d198748e714aa947cad9362c02Timo Sirainendnl * make sure size_t isn't signed. we'd probably work fine with it, but
f83fd83f9c6708d198748e714aa947cad9362c02Timo Sirainendnl * it's more likely vulnerable to buffer overflows. Anyway, C99 specifies
f83fd83f9c6708d198748e714aa947cad9362c02Timo Sirainendnl * that it's unsigned and only some old systems define it as signed.
f83fd83f9c6708d198748e714aa947cad9362c02Timo SirainenAC_MSG_CHECKING([whether size_t is signed])
f83fd83f9c6708d198748e714aa947cad9362c02Timo SirainenAC_TRY_RUN([
f83fd83f9c6708d198748e714aa947cad9362c02Timo Sirainen #include <sys/types.h>
f83fd83f9c6708d198748e714aa947cad9362c02Timo Sirainen int main() {
f83fd83f9c6708d198748e714aa947cad9362c02Timo Sirainen /* return 0 if we're signed */
f83fd83f9c6708d198748e714aa947cad9362c02Timo Sirainen exit((size_t)(int)-1 <= 0 ? 0 : 1);
f83fd83f9c6708d198748e714aa947cad9362c02Timo Sirainen }
f83fd83f9c6708d198748e714aa947cad9362c02Timo Sirainen], [
f83fd83f9c6708d198748e714aa947cad9362c02Timo Sirainen AC_MSG_RESULT(yes)
1ea0aa8e14e843f2776746776a429b0a1aae299dTimo Sirainen
1ea0aa8e14e843f2776746776a429b0a1aae299dTimo Sirainen echo
1ea0aa8e14e843f2776746776a429b0a1aae299dTimo Sirainen echo "Your system's size_t is a signed integer, Dovecot isn't designed to"
1ea0aa8e14e843f2776746776a429b0a1aae299dTimo Sirainen echo "support it. It probably works just fine, but it's less resistant to"
1ea0aa8e14e843f2776746776a429b0a1aae299dTimo Sirainen echo "buffer overflows. If you're not worried about this and still want to"
1ea0aa8e14e843f2776746776a429b0a1aae299dTimo Sirainen echo "compile Dovecot, set ignore_signed_size=1 environment."
1ea0aa8e14e843f2776746776a429b0a1aae299dTimo Sirainen
1ea0aa8e14e843f2776746776a429b0a1aae299dTimo Sirainen if test "$ignore_signed_size" = ""; then
1ea0aa8e14e843f2776746776a429b0a1aae299dTimo Sirainen AC_ERROR([aborting])
1ea0aa8e14e843f2776746776a429b0a1aae299dTimo Sirainen fi
1ea0aa8e14e843f2776746776a429b0a1aae299dTimo Sirainen echo "..ignoring as requested.."
1ea0aa8e14e843f2776746776a429b0a1aae299dTimo Sirainen], [
1ea0aa8e14e843f2776746776a429b0a1aae299dTimo Sirainen AC_MSG_RESULT(no)
1ea0aa8e14e843f2776746776a429b0a1aae299dTimo Sirainen])
1ea0aa8e14e843f2776746776a429b0a1aae299dTimo Sirainen
1ea0aa8e14e843f2776746776a429b0a1aae299dTimo SirainenAC_TYPEOF(ssize_t)
1ea0aa8e14e843f2776746776a429b0a1aae299dTimo Sirainencase "$typeof_ssize_t" in
1ea0aa8e14e843f2776746776a429b0a1aae299dTimo Sirainen long)
1ea0aa8e14e843f2776746776a429b0a1aae299dTimo Sirainen ssizet_max=LONG_MAX
1ea0aa8e14e843f2776746776a429b0a1aae299dTimo Sirainen sizet_fmt="lu"
1ea0aa8e14e843f2776746776a429b0a1aae299dTimo Sirainen ;;
1ea0aa8e14e843f2776746776a429b0a1aae299dTimo Sirainen "long long")
1ea0aa8e14e843f2776746776a429b0a1aae299dTimo Sirainen ssizet_max=LLONG_MAX
1ea0aa8e14e843f2776746776a429b0a1aae299dTimo Sirainen sizet_fmt="llu"
1ea0aa8e14e843f2776746776a429b0a1aae299dTimo Sirainen ;;
f83fd83f9c6708d198748e714aa947cad9362c02Timo Sirainen *)
4a7e04d325db0c03f575f98f045246fceb0de279Timo Sirainen dnl older systems didn't have ssize_t, default to int
4a7e04d325db0c03f575f98f045246fceb0de279Timo Sirainen ssizet_max=INT_MAX
4a7e04d325db0c03f575f98f045246fceb0de279Timo Sirainen sizet_fmt="u"
4a7e04d325db0c03f575f98f045246fceb0de279Timo Sirainen
4a7e04d325db0c03f575f98f045246fceb0de279Timo Sirainen if test "$typeof_ssize_t" = ""; then
4a7e04d325db0c03f575f98f045246fceb0de279Timo Sirainen AC_DEFINE(size_t, unsigned int, Define to 'unsigned int' if you don't have it)
4a7e04d325db0c03f575f98f045246fceb0de279Timo Sirainen AC_DEFINE(ssize_t, int, Define to 'int' if you don't have it)
f83fd83f9c6708d198748e714aa947cad9362c02Timo Sirainen fi
f83fd83f9c6708d198748e714aa947cad9362c02Timo Sirainen ;;
f83fd83f9c6708d198748e714aa947cad9362c02Timo Sirainenesac
f83fd83f9c6708d198748e714aa947cad9362c02Timo Sirainen
f83fd83f9c6708d198748e714aa947cad9362c02Timo SirainenAC_DEFINE_UNQUOTED(SSIZE_T_MAX, $ssizet_max, Maximum value of ssize_t)
f83fd83f9c6708d198748e714aa947cad9362c02Timo SirainenAC_DEFINE_UNQUOTED(PRIuSIZE_T, "$sizet_fmt", printf() format for size_t)
f83fd83f9c6708d198748e714aa947cad9362c02Timo Sirainen
f83fd83f9c6708d198748e714aa947cad9362c02Timo SirainenAC_DEFUN(AC_CHECKTYPE2, [
f83fd83f9c6708d198748e714aa947cad9362c02Timo Sirainen AC_MSG_CHECKING([for $1])
f83fd83f9c6708d198748e714aa947cad9362c02Timo Sirainen AC_CACHE_VAL(i_cv_type_$1,
f83fd83f9c6708d198748e714aa947cad9362c02Timo Sirainen [AC_TRY_COMPILE([
4a7e04d325db0c03f575f98f045246fceb0de279Timo Sirainen #include <sys/types.h>
4a7e04d325db0c03f575f98f045246fceb0de279Timo Sirainen $2],
4a7e04d325db0c03f575f98f045246fceb0de279Timo Sirainen [$1 t;],
4a7e04d325db0c03f575f98f045246fceb0de279Timo Sirainen i_cv_type_$1=yes,
4a7e04d325db0c03f575f98f045246fceb0de279Timo Sirainen i_cv_type_$1=no,
4a7e04d325db0c03f575f98f045246fceb0de279Timo Sirainen )])
4a7e04d325db0c03f575f98f045246fceb0de279Timo Sirainen AC_MSG_RESULT($i_cv_type_$1)
])
AC_CHECKTYPE2(uintmax_t, [#include <inttypes.h>])
if test $i_cv_type_uintmax_t = yes; then
AC_DEFINE(HAVE_UINTMAX_T,, Define if you have uintmax_t (C99 type))
fi
dnl use separate check, eg. Solaris 8 has uintmax_t but not uint_fast32_t
AC_CHECKTYPE2(uint_fast32_t, [#include <inttypes.h>])
if test $i_cv_type_uint_fast32_t = yes; then
AC_DEFINE(HAVE_UINT_FAST32_T,, Define if you have uint_fast32_t (C99 type))
fi
AC_CHECKTYPE2(socklen_t, [#include <sys/socket.h>])
if test $i_cv_type_socklen_t = yes; then
AC_DEFINE(HAVE_SOCKLEN_T,, Define to 'int' if you don't have socklen_t)
fi
dnl * memory alignment
if test "$index_align" = "0"; then
if test $offt_bits = 64; then
index_align=8
else
index_align=4
fi
fi
AC_DEFINE_UNQUOTED(MEM_ALIGN_SIZE, $mem_align, Required memory alignment)
AC_DEFINE_UNQUOTED(INDEX_ALIGN_SIZE, $index_align, Required index alignment)
dnl * find random source
AC_MSG_CHECKING([for /dev/urandom])
if test -c /dev/urandom; then
AC_MSG_RESULT(yes)
AC_DEFINE(HAVE_DEV_URANDOM,, Define if you have /dev/urandom)
have_random_source=yes
else
AC_MSG_RESULT(no)
AC_CHECK_HEADER(openssl/rand.h, [
AC_DEFINE(HAVE_OPENSSL_RAND_H,, Define if you have openssl/rand.h)
RAND_LIBS=-lcrypto
])
fi
AC_SUBST(RAND_LIBS)
dnl * do we have tm_gmtoff
AC_MSG_CHECKING([for tm_gmtoff])
AC_CACHE_VAL(i_cv_field_tm_gmtoff,
[AC_TRY_COMPILE([
#include <time.h>],
[struct tm *tm; return tm->tm_gmtoff;],
i_cv_field_tm_gmtoff=yes,
i_cv_field_tm_gmtoff=no,
)])
if test $i_cv_field_tm_gmtoff = yes; then
AC_DEFINE(HAVE_TM_GMTOFF,, Define if you have struct tm->tm_gmtoff)
fi
AC_MSG_RESULT($i_cv_field_tm_gmtoff)
dnl * do we have struct iovec
AC_MSG_CHECKING([for struct iovec])
AC_CACHE_VAL(i_cv_struct_iovec,
[AC_TRY_COMPILE([
#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_TRY_COMPILE([
#include <sys/types.h>
struct test { dev_t a; };
static struct test t = { 0 };
],,, [
AC_DEFINE(DEV_T_STRUCT,, Define if your dev_t is a structure instead of integer type)
dnl we can't initialize structures, so don't warn about them either
if test "x$ac_cv_prog_gcc" = "xyes"; then
CFLAGS=`echo $CFLAGS|sed 's/ -W\b//'`
fi
])
dnl * Do we have RLIMIT_AS?
AC_TRY_COMPILE([
#include <sys/types.h>
#include <sys/time.h>
#include <sys/resource.h>
], [
struct rlimit r;
getrlimit(RLIMIT_AS, &r);
], [
AC_DEFINE(HAVE_RLIMIT_AS,, Define if you have RLIMIT_AS for setrlimit())
])
dnl * Do we have RLIMIT_NPROC?
AC_TRY_COMPILE([
#include <sys/types.h>
#include <sys/time.h>
#include <sys/resource.h>
], [
struct rlimit r;
getrlimit(RLIMIT_NPROC, &r);
], [
AC_DEFINE(HAVE_RLIMIT_NPROC,, Define if you have RLIMIT_NPROC for setrlimit())
])
dnl * Linux compatible mremap()
AC_MSG_CHECKING([Linux compatible mremap()])
AC_TRY_COMPILE([
#include <unistd.h>
#define __USE_GNU
#include <sys/mman.h>
], [
mremap(0, 0, 0, MREMAP_MAYMOVE);
], [
AC_DEFINE(HAVE_LINUX_MREMAP,, Define if you have Linux-compatible mremap())
AC_MSG_RESULT(yes)
], [
AC_MSG_RESULT(no)
])
dnl * Solaris compatible sendfilev()
AC_CHECK_LIB(sendfile, sendfilev, [
LIBS="$LIBS -lsendfile"
AC_DEFINE(HAVE_SOLARIS_SENDFILEV,, Define if you have Solaris-compatible sendfilev())
], [
dnl * Linux compatible sendfile() - don't check if Solaris one was found.
dnl * This seems to pass with Solaris for some reason..
AC_MSG_CHECKING([Linux compatible sendfile()])
AC_TRY_COMPILE([
#undef _FILE_OFFSET_BITS
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/sendfile.h>
], [
sendfile(0, 0, (void *) 0, 0);
], [
AC_DEFINE(HAVE_LINUX_SENDFILE,, Define if you have Linux-compatible sendfile())
AC_MSG_RESULT(yes)
], [
AC_MSG_RESULT(no)
])
dnl * FreeBSD compatible sendfile()
AC_MSG_CHECKING([FreeBSD compatible sendfile()])
AC_TRY_COMPILE([
#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);
], [
AC_DEFINE(HAVE_FREEBSD_SENDFILE,, Define if you have FreeBSD-compatible sendfile())
AC_MSG_RESULT(yes)
], [
AC_MSG_RESULT(no)
])
])
dnl ***
dnl *** va_copy checks (from GLIB)
dnl ***
AC_CACHE_CHECK([for an implementation of va_copy()],lib_cv_va_copy,[
AC_TRY_RUN([
#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_TRY_RUN([
#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_TRY_RUN([
#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 **
dnl ** SSL
dnl **
have_ssl=no
if test $want_gnutls = yes; then
AC_CHECK_LIB(gnutls, gnutls_global_init, [
AC_CHECK_HEADERS(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
])
],, -lgcrypt)
fi
if test "$want_openssl" = "yes" -a "$have_ssl" = "no"; then
AC_CHECK_LIB(ssl, SSL_read, [
AC_CHECK_HEADERS(openssl/ssl.h openssl/err.h, [
AC_DEFINE(HAVE_OPENSSL,, Build with OpenSSL support)
SSL_LIBS="-lssl -lcrypto"
AC_SUBST(SSL_LIBS)
have_ssl="yes (OpenSSL)"
have_openssl=yes
])
],, -lcrypto)
fi
if test "$have_ssl" != "no"; then
AC_DEFINE(HAVE_SSL,, Build with SSL/TLS support)
fi
dnl **
dnl ** userdb and passdb checks
dnl **
need_crypt=no
userdb=""
passdb=""
if test $want_static_userdb = yes; then
need_crypt=yes
AC_DEFINE(USERDB_STATIC,, Build with static userdb support)
userdb="$userdb static"
fi
if test $want_passwd = yes; then
need_crypt=yes
AC_DEFINE(USERDB_PASSWD,, Build with passwd support)
AC_DEFINE(PASSDB_PASSWD,, Build with passwd support)
userdb="$userdb passwd"
passdb="$passdb passwd"
fi
if test $want_passwd_file = yes; then
need_crypt=yes
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"
fi
if test $want_shadow = yes; then
AC_CHECK_FUNC(getspnam, [
AC_CHECK_HEADER(shadow.h, [
need_crypt=yes
AC_DEFINE(PASSDB_SHADOW,, Build with shadow support)
passdb="$passdb shadow"
])
])
fi
if test $want_pam = yes; 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 "$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())
])
fi
])
fi
if test $want_ldap = yes; then
AC_CHECK_LIB(ldap, ldap_init, [
AC_CHECK_HEADER(ldap.h, [
AUTH_LIBS="$AUTH_LIBS -lldap"
AC_DEFINE(USERDB_LDAP,, Build with LDAP support)
AC_DEFINE(PASSDB_LDAP,, Build with LDAP support)
userdb="$userdb ldap"
passdb="$passdb ldap"
])
])
fi
if test $want_pgsql = yes; 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 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
old_LIBS=$LIBS
if test "$PGSQL_LIBDIR" != ""; then
LIBS="$LIBS -L$PGSQL_LIBDIR"
fi
AC_CHECK_LIB(pq, PQconnectdb, [
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
AUTH_CFLAGS="$AUTH_CFLAGS -I$PGSQL_INCLUDE"
fi
if test "$PGSQL_LIBDIR" != ""; then
AUTH_LIBS="$AUTH_LIBS -L$PGSQL_LIBDIR"
fi
AUTH_LIBS="$AUTH_LIBS -lpq"
AC_DEFINE(USERDB_PGSQL,, Build with PostgreSQL support)
AC_DEFINE(PASSDB_PGSQL,, Build with PostgreSQL support)
userdb="$userdb pgsql"
passdb="$passdb pgsql"
])
CPPFLAGS=$old_CPPFLAGS
])
LIBS=$old_LIBS
fi
if test $want_vpopmail = yes; then
vpopmail_home="`echo ~vpopmail`"
vpop_libdeps="$vpopmail_home/etc/lib_deps"
AC_MSG_CHECKING([for vpopmail configuration at $vpop_libdeps])
if test -f $vpop_libdeps; then
need_crypt=yes
AUTH_CFLAGS="$AUTH_CFLAGS `cat $vpopmail_home/etc/inc_deps` $CFLAGS"
AUTH_LIBS="$AUTH_LIBS `cat $vpop_libdeps`"
AC_DEFINE(USERDB_VPOPMAIL,, Build with vpopmail support)
AC_DEFINE(PASSDB_VPOPMAIL,, Build with vpopmail support)
userdb="$userdb vpopmail"
passdb="$passdb vpopmail"
AC_MSG_RESULT(found)
else
want_vpopmail=no
AC_MSG_RESULT(not found)
fi
fi
if test $want_cyrus_sasl2 = yes; then
AC_CHECK_LIB(sasl2, sasl_server_start, [
AC_CHECK_HEADER(sasl/sasl.h, [
AC_DEFINE(USE_CYRUS_SASL2,,
Define if you want to use Cyrus SASL library)
AUTH_LIBS="$AUTH_LIBS -lsasl2"
])
])
fi
if test $need_crypt = yes; then
AC_CHECK_LIB(crypt, crypt, [
AUTH_LIBS="$AUTH_LIBS -lcrypt"
], [
AC_CHECK_FUNC(crypt,, [
AC_ERROR([crypt() wasn't found])
])
])
fi
dnl * dynamic modules?
AC_CHECK_LIB(dl, dlopen, [
AUTH_LIBS="$AUTH_LIBS -ldl"
AC_DEFINE(AUTH_MODULES,, Define if you want to build with dynamic auth modules)
auth_modules=yes
userdb="$userdb (modules)"
passdb="$passdb (modules)"
])
AM_CONDITIONAL(AUTH_MODULES, test "$auth_modules" = "yes")
AC_SUBST(AUTH_CFLAGS)
AC_SUBST(AUTH_LIBS)
dnl **
dnl ** Index file compatibility flags
dnl **
dnl * currently just checking for endianess
AC_C_BIGENDIAN
if test $ac_cv_c_bigendian = yes; then
flags=0
else
flags=1
fi
AC_DEFINE_UNQUOTED(MAIL_INDEX_COMPAT_FLAGS, $flags, Index file compatibility flags)
dnl **
dnl ** IPv6 support
dnl **
if test "x$want_ipv6" = "xyes"; then
AC_MSG_CHECKING([for IPv6])
AC_CACHE_VAL(i_cv_type_in6_addr,
[AC_TRY_COMPILE([
#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)
fi
AC_MSG_RESULT($i_cv_type_in6_addr)
fi
dnl **
dnl ** capabilities
dnl **
capability="IMAP4rev1 SORT THREAD=REFERENCES MULTIAPPEND UNSELECT LITERAL+ IDLE CHILDREN LISTEXT LIST-SUBSCRIBED"
AC_DEFINE_UNQUOTED(CAPABILITY_STRING, "$capability", IMAP capabilities)
CFLAGS="$CFLAGS $EXTRA_CFLAGS"
AC_OUTPUT(
Makefile
doc/Makefile
src/Makefile
src/lib/Makefile
src/lib-charset/Makefile
src/lib-imap/Makefile
src/lib-index/Makefile
src/lib-index/maildir/Makefile
src/lib-index/mbox/Makefile
src/lib-mail/Makefile
src/lib-settings/Makefile
src/lib-storage/Makefile
src/lib-storage/index/Makefile
src/lib-storage/index/maildir/Makefile
src/lib-storage/index/mbox/Makefile
src/lib-storage/subscription-file/Makefile
src/lib-storage/register/Makefile
src/auth/Makefile
src/imap/Makefile
src/imap-login/Makefile
src/login-common/Makefile
src/master/Makefile
src/pop3/Makefile
src/pop3-login/Makefile
stamp.h)
dnl **
dnl ** register the storage classes
dnl **
dnl * do it after AC_OUTPUT(), so we know that the directory exists.
dnl * it doesn't when building in different directory
STORAGE="maildir mbox"
file="src/lib-storage/register/mail-storage-register.c"
echo "/* this file is generated by configure */" > $file
echo '#include "lib.h"' >> $file
echo '#include "mail-storage.h"' >> $file
for storage in $STORAGE; do
echo "extern struct mail_storage ${storage}_storage;" >> $file
done
echo "void mail_storage_register_all(void) {" >> $file
for storage in $STORAGE; do
echo "mail_storage_class_register(&${storage}_storage);" >> $file
done
echo "}" >> $file
echo
echo "Install prefix ...................... : $prefix"
echo "File offsets ........................ : ${offt_bits}bit"
echo "Building with SSL support ........... : $have_ssl"
echo "Building with IPv6 support .......... : $want_ipv6"
echo "Building with pop3 server ........... : $want_pop3d"
echo "Building with user database modules . :$userdb"
echo "Building with password lookup modules :$passdb"