configure.in revision 53f7fdb513cde5319e76444c03923041f1c48fef
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen GallagherAC_INIT(src)
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher
ee359fe1384507fed6c2274e7bfe81d288de4542Stephen GallagherAM_CONFIG_HEADER(config.h)
33396dc46ea52c18f47db1b5d590880806521005Sumit BoseAM_INIT_AUTOMAKE(dovecot, 0.99.4)
ee359fe1384507fed6c2274e7bfe81d288de4542Stephen Gallagher
33396dc46ea52c18f47db1b5d590880806521005Sumit BoseAM_MAINTAINER_MODE
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher
324fb26ba803a999bedc29e93c46c84f27abf5b7Sumit BoseAC_ISC_POSIX
324fb26ba803a999bedc29e93c46c84f27abf5b7Sumit BoseAC_PROG_CC
324fb26ba803a999bedc29e93c46c84f27abf5b7Sumit BoseAC_PROG_CPP
324fb26ba803a999bedc29e93c46c84f27abf5b7Sumit BoseAC_STDC_HEADERS
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen GallagherAC_C_INLINE
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen GallagherAC_ARG_PROGRAM
84ae5edab16ad6be5e3be956cb6fa031c1428eb5Stephen GallagherAM_PROG_LIBTOOL
84ae5edab16ad6be5e3be956cb6fa031c1428eb5Stephen Gallagher
84ae5edab16ad6be5e3be956cb6fa031c1428eb5Stephen GallagherAC_CHECK_HEADERS(string.h stdlib.h stdint.h unistd.h dirent.h iconv.h)
e65df5b966b27e13283c65f59f99ac44781e0333Simo SorceAC_CHECK_HEADERS(sys/uio.h sys/sysmacros.h sys/resource.h linux/mman.h)
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen GallagherAC_CHECK_HEADERS(sys/select.h)
672f430c2e5d55226261a281bc3fa77311ace5a4Jakub Hrozek
672f430c2e5d55226261a281bc3fa77311ace5a4Jakub Hrozek# check posix headers
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen GallagherAC_CHECK_HEADERS(sys/time.h)
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen GallagherAC_ARG_ENABLE(ipv6,
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher[ --enable-ipv6 Enable IPv6 support (default)],
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher if test x$enableval = xno; then
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher want_ipv6=no
84ae5edab16ad6be5e3be956cb6fa031c1428eb5Stephen Gallagher else
cc98edd9479d4622634a1275c98058916c14059aStephen Gallagher want_ipv6=yes
ee359fe1384507fed6c2274e7bfe81d288de4542Stephen Gallagher fi,
cc98edd9479d4622634a1275c98058916c14059aStephen Gallagher want_ipv6=yes)
d3da1c165cdb4c1ec126a8f4b6b544ca415b9d20Pavel Březina
d3da1c165cdb4c1ec126a8f4b6b544ca415b9d20Pavel BřezinaAC_ARG_ENABLE(debug,
d3da1c165cdb4c1ec126a8f4b6b544ca415b9d20Pavel Březina[ --enable-debug Enable some extra checks for debugging],
1183d29d87c5c7439cf2364b7d7324d4a13b6e35Stephen Gallagher if test x$enableval = xyes; then
1183d29d87c5c7439cf2364b7d7324d4a13b6e35Stephen Gallagher AC_DEFINE(DEBUG,, Build with extra debugging checks)
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher fi)
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen GallagherAC_ARG_ENABLE(asserts,
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher[ --enable-asserts Enable asserts (default)],
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher if test x$enableval = xno; then
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher AC_DEFINE(DISABLE_ASSERTS,, Disable asserts)
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher fi)
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen GallagherAC_ARG_WITH(file-offset-size,
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher[ --with-file-offset-size=BITS Set size of file offsets. Usually 32 or 64.
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher (default: 64 if available)],
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher preferred_off_t_bits=$withval,
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher preferred_off_t_bits=64)
c89589fa349f38214c9cb8d9389c0fd557e5dca2Simo Sorce
c89589fa349f38214c9cb8d9389c0fd557e5dca2Simo SorceAC_ARG_WITH(mem-align,
c89589fa349f38214c9cb8d9389c0fd557e5dca2Simo Sorce[ --with-mem-align=BYTES Set the memory alignment (default: 8)],
86b61156743b7ebdc049450a6f88452890fd9a61Jakub Hrozek mem_align=$withval,
86b61156743b7ebdc049450a6f88452890fd9a61Jakub Hrozek mem_align=8)
86b61156743b7ebdc049450a6f88452890fd9a61Jakub Hrozek
c89589fa349f38214c9cb8d9389c0fd557e5dca2Simo SorceAC_ARG_WITH(passwd,
c89589fa349f38214c9cb8d9389c0fd557e5dca2Simo Sorce[ --with-passwd Build with /etc/passwd support (default)],
86b61156743b7ebdc049450a6f88452890fd9a61Jakub Hrozek if test x$withval = xno; then
86b61156743b7ebdc049450a6f88452890fd9a61Jakub Hrozek want_passwd=no
86b61156743b7ebdc049450a6f88452890fd9a61Jakub Hrozek else
86b61156743b7ebdc049450a6f88452890fd9a61Jakub Hrozek want_passwd=yes
86b61156743b7ebdc049450a6f88452890fd9a61Jakub Hrozek fi,
86b61156743b7ebdc049450a6f88452890fd9a61Jakub Hrozek want_passwd=yes)
86b61156743b7ebdc049450a6f88452890fd9a61Jakub Hrozek
86b61156743b7ebdc049450a6f88452890fd9a61Jakub HrozekAC_ARG_WITH(passwd-file,
86b61156743b7ebdc049450a6f88452890fd9a61Jakub Hrozek[ --with-passwd-file Build with passwd-like file support (default)],
86b61156743b7ebdc049450a6f88452890fd9a61Jakub Hrozek if test x$withval = xno; then
86b61156743b7ebdc049450a6f88452890fd9a61Jakub Hrozek want_passwd_file=no
48130eef6c5c64a07094b9e8582ba358b2048f24Jakub Hrozek else
48130eef6c5c64a07094b9e8582ba358b2048f24Jakub Hrozek want_passwd_file=yes
48130eef6c5c64a07094b9e8582ba358b2048f24Jakub Hrozek fi,
48130eef6c5c64a07094b9e8582ba358b2048f24Jakub Hrozek want_passwd_file=yes)
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen GallagherAC_ARG_WITH(shadow,
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher[ --with-shadow Build with shadow password support (default)],
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher if test x$withval = xno; then
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher want_shadow=no
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher else
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher want_shadow=yes
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher fi,
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher want_shadow=yes)
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen GallagherAC_ARG_WITH(pam,
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher[ --with-pam Build with PAM support (default)],
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher if test x$withval = xno; then
d921c1eba437662437847279f251a0a5d8f70127Maxim want_pam=no
d921c1eba437662437847279f251a0a5d8f70127Maxim else
d921c1eba437662437847279f251a0a5d8f70127Maxim want_pam=yes
d921c1eba437662437847279f251a0a5d8f70127Maxim fi,
d921c1eba437662437847279f251a0a5d8f70127Maxim want_pam=yes)
d921c1eba437662437847279f251a0a5d8f70127Maxim
d921c1eba437662437847279f251a0a5d8f70127MaximAC_ARG_WITH(vpopmail,
327127bb7fcc07f882209f029e14026de1b23c94Maxim[ --with-vpopmail Build with vpopmail support (default)],
327127bb7fcc07f882209f029e14026de1b23c94Maxim if test x$withval = xno; then
327127bb7fcc07f882209f029e14026de1b23c94Maxim want_vpopmail=no
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher else
d3da1c165cdb4c1ec126a8f4b6b544ca415b9d20Pavel Březina want_vpopmail=yes
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher fi,
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher want_vpopmail=yes)
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen GallagherAC_ARG_WITH(rawlog,
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher[ --with-rawlog Build support for logging user traffic],
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher if test x$withval = xyes; then
eb2e21b764d03544d8161e9956d7f70b07b75f77Simo Sorce AC_DEFINE(BUILD_RAWLOG,, Build with rawlogging feature)
bc9235cfb80bd64a3bfa959e8d26d5ad1be0bdf4Jakub Hrozek fi)
bc9235cfb80bd64a3bfa959e8d26d5ad1be0bdf4Jakub Hrozek
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen GallagherAC_ARG_WITH(ssl,
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher[ --with-ssl=[gnutls|openssl] Build with GNUTLS (default) or OpenSSL],
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher if test x$withval = xno; then
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher want_gnutls=no
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher want_openssl=no
4b6a0d0b3d42e5fdb457f47d9adfa5e66b160256Stephen Gallagher elif test x$withval = xgnutls; then
90fd1bbd6035cdab46faa3a695a2fb2be6508b17Sumit Bose want_gnutls=yes
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher want_openssl=no
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher elif test x$withval = xopenssl; then
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher want_gnutls=no
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher want_openssl=yes
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher else
068dbee9ca7bf5b37330eff91c94ae10f288d09fJakub Hrozek want_gnutls=yes
98ce3c3e85a4bb2e1822bf8ab2a1c2ab9e3dd61dJakub Hrozek want_openssl=yes
be65f065fef1d387281096ef095a2acef39ecc12Jakub Hrozek fi, [
e124844907ed6973915e4d56f5442ecd07535a12Jakub Hrozek want_gnutls=yes
f36078af138f052cd9a30360867b0ebd0805af5eJakub Hrozek want_openssl=yes
34c78b745eb349eef2b0f13ef2b722632aebe619Jan Cholasta ])
e07a94a66985b674c5df11ca466792902164c4e2George McCollister
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen GallagherAC_ARG_WITH(ssldir,
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher[ --with-ssldir=DIR SSL base directory for certificates (/etc/ssl)],
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher ssldir="$withval",
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher ssldir=/etc/ssl
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher)
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen GallagherAC_SUBST(ssldir)
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagherdnl * gcc specific options
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagherif test "x$ac_cv_prog_gcc" = "xyes"; then
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher # -Wcast-qual -Wcast-align -Wconversion -Wstrict-prototypes
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher CFLAGS="$CFLAGS -Wall -W -Wmissing-prototypes -Wmissing-declarations -Wpointer-arith -Wchar-subscripts"
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagherfi
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagherdnl **
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagherdnl ** just some generic stuff...
a5077712fc8c24e8cad08207b7b5a6603bde6a7cJakub Hrozekdnl **
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen GallagherAC_CHECK_FUNC(socket, [], [
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher AC_CHECK_LIB(socket, socket, [
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher LIBS="$LIBS -lsocket"
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher ])
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher])
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen GallagherAC_CHECK_FUNC(inet_addr, [], [
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher AC_CHECK_LIB(nsl, inet_addr, [
2a5790216f57e9bdfb2930d52860bb5300366536Jakub Hrozek LIBS="$LIBS -lnsl"
b9e5bd09a5ff7009537a18914dbebcf10498f592Sumit Bose ])
6b0a7c72bb841d6885a620c68bd51d55109b66c7Jakub Hrozek])
b32159300fea63222d8dd9200ed634087704ea74Stephen Gallagher
b32159300fea63222d8dd9200ed634087704ea74Stephen GallagherAC_CHECK_FUNC(fdatasync, [
b32159300fea63222d8dd9200ed634087704ea74Stephen Gallagher have_fdatasync=yes
b32159300fea63222d8dd9200ed634087704ea74Stephen Gallagher], [
b32159300fea63222d8dd9200ed634087704ea74Stephen Gallagher AC_CHECK_LIB(rt, fdatasync, [
b32159300fea63222d8dd9200ed634087704ea74Stephen Gallagher have_fdatasync=yes
b32159300fea63222d8dd9200ed634087704ea74Stephen Gallagher LIBS="$LIBS -lrt"
b32159300fea63222d8dd9200ed634087704ea74Stephen Gallagher ])
b32159300fea63222d8dd9200ed634087704ea74Stephen Gallagher])
b32159300fea63222d8dd9200ed634087704ea74Stephen Gallagher
b32159300fea63222d8dd9200ed634087704ea74Stephen Gallagherif test "$have_fdatasync" = "yes"; then
b32159300fea63222d8dd9200ed634087704ea74Stephen Gallagher AC_DEFINE(HAVE_FDATASYNC,, Define if you have fdatasync())
b32159300fea63222d8dd9200ed634087704ea74Stephen Gallagherfi
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher
2a5790216f57e9bdfb2930d52860bb5300366536Jakub Hrozekdnl * after -lsocket and -lnsl tests, inet_aton() may be in them
e6e26182d58c05d896f72f2925426658a6dc70b5Jakub HrozekAC_CHECK_FUNCS(fcntl flock inet_aton sigaction getpagesize madvise \
e6e26182d58c05d896f72f2925426658a6dc70b5Jakub Hrozek strcasecmp stricmp vsnprintf memmove vsyslog writev setrlimit \
e6e26182d58c05d896f72f2925426658a6dc70b5Jakub Hrozek setproctitle)
2a5790216f57e9bdfb2930d52860bb5300366536Jakub Hrozek
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagherdnl * poll/select?
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen GallagherAC_CHECK_FUNC(poll, [
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher AC_DEFINE(IOLOOP_POLL,, Implement I/O loop with poll())
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher], [
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher AC_DEFINE(IOLOOP_SELECT,, Implement I/O loop with select())
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher])
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagherdnl * memory alignment
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen GallagherAC_DEFINE_UNQUOTED(MEM_ALIGN_SIZE, $mem_align, Required memory alignment)
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagherdnl * OS specific options
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallaghercase "$host_os" in
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher hpux*)
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher CFLAGS="$CFLAGS -D_XOPEN_SOURCE_EXTENDED"
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher ;;
b50dffea929ee5cd0c59ba3c4822337cc162ff92Kamil Dudka *)
b50dffea929ee5cd0c59ba3c4822337cc162ff92Kamil Dudka ;;
b50dffea929ee5cd0c59ba3c4822337cc162ff92Kamil Dudkaesac
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen GallagherAC_CHECK_SIZEOF(int)
4d81fe27ced3d2e96866aeaf61661a925cb8edf1Jakub HrozekAC_CHECK_SIZEOF(long)
4d81fe27ced3d2e96866aeaf61661a925cb8edf1Jakub HrozekAC_CHECK_SIZEOF(void *)
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen GallagherAC_CHECK_SIZEOF(long long)
4d81fe27ced3d2e96866aeaf61661a925cb8edf1Jakub Hrozek
4d81fe27ced3d2e96866aeaf61661a925cb8edf1Jakub HrozekAC_DEFUN(AC_TYPEOF, [
4d81fe27ced3d2e96866aeaf61661a925cb8edf1Jakub Hrozek dnl * first check if we can get the size with redefining typedefs
4d81fe27ced3d2e96866aeaf61661a925cb8edf1Jakub Hrozek
4d81fe27ced3d2e96866aeaf61661a925cb8edf1Jakub Hrozek order="$2"
4d81fe27ced3d2e96866aeaf61661a925cb8edf1Jakub Hrozek if test "$2" = ""; then
4d81fe27ced3d2e96866aeaf61661a925cb8edf1Jakub Hrozek order="int long long-long"
4d81fe27ced3d2e96866aeaf61661a925cb8edf1Jakub Hrozek fi
4d81fe27ced3d2e96866aeaf61661a925cb8edf1Jakub Hrozek
4d81fe27ced3d2e96866aeaf61661a925cb8edf1Jakub Hrozek result=""
4d81fe27ced3d2e96866aeaf61661a925cb8edf1Jakub Hrozek visible="unknown"
4d81fe27ced3d2e96866aeaf61661a925cb8edf1Jakub Hrozek AC_MSG_CHECKING([type of $1])
4d81fe27ced3d2e96866aeaf61661a925cb8edf1Jakub Hrozek
4d81fe27ced3d2e96866aeaf61661a925cb8edf1Jakub Hrozek if test "x$ac_cv_prog_gcc" = "xyes"; then
6f51c802311fd81a409a26763ed45b28a3234d0dJakub Hrozek dnl * try with printf() + -Werror
4d81fe27ced3d2e96866aeaf61661a925cb8edf1Jakub Hrozek old_CFLAGS="$CFLAGS"
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher CFLAGS="$CFLAGS -Werror"
4d81fe27ced3d2e96866aeaf61661a925cb8edf1Jakub Hrozek
8b1f525acd20f36c836e827de3c251088961c5d9Stephen Gallagher for type in $order; do
f5b6f977d4144c28e9c66f3f1c9d634d595d1117Marko Myllynen case "$type" in
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher int)
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher fmt="%d"
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher ;;
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher long)
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher fmt="%ld"
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher ;;
72e60fd4eabcfbcdbfe01e8c38b94052bc6c2067Jakub Hrozek long-long)
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher fmt="%lld"
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher ;;
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher *)
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher fmt=""
3d038d2e0dc7af04ec2f7c85ae325accb39f6237Jakub Hrozek ;;
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher esac
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher if test "$fmt" != ""; then
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher AC_TRY_COMPILE([
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher #include <sys/types.h>
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher #include <stdio.h>
5352c9b3609bca63814f9f6f03dbbbadf6c6333aStephen Gallagher ], [
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher printf("$fmt", ($1)0);
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher ], [
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher if test "$result" != ""; then
2a5790216f57e9bdfb2930d52860bb5300366536Jakub Hrozek dnl * warning check isn't working
2a5790216f57e9bdfb2930d52860bb5300366536Jakub Hrozek result=""
2a5790216f57e9bdfb2930d52860bb5300366536Jakub Hrozek visible="unknown"
2a5790216f57e9bdfb2930d52860bb5300366536Jakub Hrozek break
e07a94a66985b674c5df11ca466792902164c4e2George McCollister fi
e07a94a66985b674c5df11ca466792902164c4e2George McCollister result="`echo $type|sed 's/-/ /g'`"
e07a94a66985b674c5df11ca466792902164c4e2George McCollister visible="$result"
e07a94a66985b674c5df11ca466792902164c4e2George McCollister ])
e07a94a66985b674c5df11ca466792902164c4e2George McCollister fi
e07a94a66985b674c5df11ca466792902164c4e2George McCollister done
172c07013d1ea99447a780fd36f49d5c3a76981bJakub Hrozek CFLAGS="$old_CFLAGS"
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher fi
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher if test "$result" = ""; then
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher for type in $order; do
336879aabae137f9a81304f147fb0d43001654b0Simo Sorce type="`echo $type|sed 's/-/ /g'`"
336879aabae137f9a81304f147fb0d43001654b0Simo Sorce AC_TRY_COMPILE([
336879aabae137f9a81304f147fb0d43001654b0Simo Sorce #include <sys/types.h>
336879aabae137f9a81304f147fb0d43001654b0Simo Sorce typedef $type $1;
336879aabae137f9a81304f147fb0d43001654b0Simo Sorce ],, [
336879aabae137f9a81304f147fb0d43001654b0Simo Sorce if test "$result" != ""; then
336879aabae137f9a81304f147fb0d43001654b0Simo Sorce dnl * compiler allows redefining to anything
336879aabae137f9a81304f147fb0d43001654b0Simo Sorce result=""
336879aabae137f9a81304f147fb0d43001654b0Simo Sorce visible="unknown"
336879aabae137f9a81304f147fb0d43001654b0Simo Sorce break
336879aabae137f9a81304f147fb0d43001654b0Simo Sorce fi
336879aabae137f9a81304f147fb0d43001654b0Simo Sorce result="$type"
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher visible="$type"
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher ])
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher done
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher fi
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher if test "$result" = ""; then
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher dnl * check with sizes
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher dnl * older autoconfs don't include sys/types.h, so do it manually
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher AC_TRY_RUN([
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher #include <stdio.h>
50fe3d79ab12b795a687b676761bef265701626aStephen Gallagher #include <sys/types.h>
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher int main() {
8c294c1cd4d721818a59684cf7f2b36123f79163Stephen Gallagher FILE *f=fopen("conftestval", "w");
8c294c1cd4d721818a59684cf7f2b36123f79163Stephen Gallagher if (!f) exit(1);
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher fprintf(f, "%d\n", sizeof($1));
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher exit(0);
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher }
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher ], [
96c73559adfbdac96720008fc022cb1d540b53c3Jakub Hrozek size=`cat conftestval`
4dd615c01357b8715711aad6820ba9595d3ad377Stephen Gallagher rm -f conftestval
70e59ed31c5a9c9ed02d9065ddf92be87c887efbJakub Hrozek
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bose for type in $order; do
f1ce53a3b5656361557f80f61dfd42a371230c65Stephen Gallagher actype="ac_cv_sizeof_`echo $type|sed 's/-/_/g'`"
f1ce53a3b5656361557f80f61dfd42a371230c65Stephen Gallagher if test "$size" = "`eval \"echo \\$$actype\"`"; then
f1ce53a3b5656361557f80f61dfd42a371230c65Stephen Gallagher result="`echo $type|sed 's/-/ /g'`"
84ae5edab16ad6be5e3be956cb6fa031c1428eb5Stephen Gallagher visible="`expr $size \* 8`bit (using $result)"
break
fi
done
if test "$result" = ""; then
visible="`expr $size \* 8`bit (unknown type)"
fi
])
fi
typeof_$1=$result
AC_MSG_RESULT($visible)
])
dnl * off_t checks, try to make it 64bit
AC_DEFINE_UNQUOTED(_FILE_OFFSET_BITS, $preferred_off_t_bits,
[If set to 64, enables 64bit off_t for some systems (eg. Linux, Solaris)])
AC_TYPEOF(off_t, long int long-long)
case "$typeof_off_t" in
int)
offt_max=INT_MAX
uofft_fmt="u"
AC_DEFINE(UOFF_T_INT,, Define if off_t is int)
offt_bits=`expr 8 \* $ac_cv_sizeof_int`
;;
long)
offt_max=LONG_MAX
uofft_fmt="lu"
AC_DEFINE(UOFF_T_LONG,, Define if off_t is long)
offt_bits=`expr 8 \* $ac_cv_sizeof_long`
;;
"long long")
offt_max=LLONG_MAX
uofft_fmt="llu"
AC_DEFINE(UOFF_T_LONG_LONG,, Define if off_t is long long)
offt_bits=`expr 8 \* $ac_cv_sizeof_long_long`
;;
*)
AC_ERROR([Unsupported off_t type])
;;
esac
AC_DEFINE_UNQUOTED(OFF_T_MAX, $offt_max, Maximum value of off_t)
AC_DEFINE_UNQUOTED(PRIuUOFF_T, "$uofft_fmt", printf() format for uoff_t)
dnl * make sure size_t isn't signed. we'd probably work fine with it, but
dnl * it's more likely vulnerable to buffer overflows. Anyway, C99 specifies
dnl * that it's unsigned and only some old systems define it as signed.
AC_MSG_CHECKING([whether size_t is signed])
AC_TRY_RUN([
#include <sys/types.h>
int main() {
/* return 0 if we're signed */
exit((size_t)(int)-1 <= 0 ? 0 : 1);
}
], [
AC_MSG_RESULT(yes)
echo
echo "Your system's size_t is a signed integer, Dovecot isn't designed to"
echo "support it. It probably works just fine, but it's less resistant to"
echo "buffer overflows. If you're not worried about this and still want to"
echo "compile Dovecot, set ignore_signed_size=1 environment."
if test "$ignore_signed_size" = ""; then
AC_ERROR([aborting])
fi
echo "..ignoring as requested.."
], [
AC_MSG_RESULT(no)
])
AC_TYPEOF(ssize_t)
case "$typeof_ssize_t" in
long)
ssizet_max=LONG_MAX
sizet_fmt="lu"
;;
"long long")
ssizet_max=LLONG_MAX
sizet_fmt="llu"
;;
*)
dnl older systems didn't have ssize_t, default to int
ssizet_max=INT_MAX
sizet_fmt="u"
if test "$typeof_ssize_t" = ""; then
AC_DEFINE(size_t, unsigned int, Define to 'unsigned int' if you don't have it)
AC_DEFINE(ssize_t, int, Define to 'int' if you don't have it)
fi
;;
esac
AC_DEFINE_UNQUOTED(SSIZE_T_MAX, $ssizet_max, Maximum value of ssize_t)
AC_DEFINE_UNQUOTED(PRIuSIZE_T, "$sizet_fmt", printf() format for size_t)
AC_DEFUN(AC_CHECKTYPE2, [
AC_MSG_CHECKING([for $1])
AC_CACHE_VAL(i_cv_type_$1,
[AC_TRY_COMPILE([
#include <sys/types.h>
$2],
[$1 t;],
i_cv_type_$1=yes,
i_cv_type_$1=no,
)])
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
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 * 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 * 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 * Linux compatible sendfile()
AC_MSG_CHECKING([Linux compatible sendfile()])
AC_TRY_COMPILE([
#undef _FILE_OFFSET_BITS
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/uio.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 ** 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 ** shadow/pam support
dnl **
need_crypt=no
auths=""
if test $want_passwd = yes; then
need_crypt=yes
AC_DEFINE(USERINFO_PASSWD,, Build with passwd support)
auths="$auths passwd"
fi
if test $want_passwd_file = yes; then
need_crypt=yes
AC_DEFINE(USERINFO_PASSWD_FILE,, Build with passwd-file support)
auths="$auths passwd-file"
fi
if test $want_shadow = yes; then
AC_CHECK_FUNC(getspnam, [
need_crypt=yes
AC_DEFINE(USERINFO_SHADOW,, Build with shadow support)
auths="$auths 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
USERINFO_LIBS="$USERINFO_LIBS -lpam"
AC_DEFINE(USERINFO_PAM,, Build with PAM support)
auths="$auths pam"
AC_CHECK_LIB(pam, pam_setcred, [
AC_DEFINE(HAVE_PAM_SETCRED,,
Define if you have pam_setcred())
])
fi
])
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
VPOPMAIL_CFLAGS="`cat $vpopmail_home/etc/inc_deps` $CFLAGS"
VPOPMAIL_LIBS="`cat $vpop_libdeps`"
AC_DEFINE(USERINFO_VPOPMAIL,, Build with vpopmail support)
auths="$auths vpopmail"
AC_MSG_RESULT(found)
else
want_vpopmail=no
AC_MSG_RESULT(not found)
fi
fi
AC_SUBST(VPOPMAIL_CFLAGS)
AC_SUBST(VPOPMAIL_LIBS)
if test $need_crypt = yes; then
AC_CHECK_LIB(crypt, crypt, [
USERINFO_LIBS="$USERINFO_LIBS -lcrypt"
], [
AC_CHECK_FUNC(crypt,, [
AC_ERROR([crypt() wasn't found])
])
])
fi
AC_SUBST(USERINFO_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"
if test "$have_ssl" != "no"; then
capability="$capability STARTTLS"
fi
AC_DEFINE_UNQUOTED(CAPABILITY_STRING, "$capability", IMAP capabilities)
dnl **
dnl ** register the storage classes
dnl **
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 MailStorage ${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
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-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/login/Makefile
src/master/Makefile
stamp.h)
echo
echo "Install prefix ............. : $prefix"
echo "File offsets ............... : ${offt_bits}bit"
echo "Building with auth modules . :$auths"
echo "Building with SSL support .. : $have_ssl"
echo "Building with IPv6 support . : $want_ipv6"