
Mandatory build-time dependencies and their minimum versions (if any):

	* C++14 compiler: g++ 5.x or clang++ 3.8
	* binutils 2.22
	* pkg-config
	* gsoap 2.8.73, generator and library
	* ICU 52 (C++ library)
	* libcrypt with crypt_r
	* libgettext (where separate from libc)
	* libical 0.9.x
	* libiconv (where separate from libc)
	* libcrypto and libssl from LibreSSL or OpenSSL 0.9.8
	* libncurses 5
	* libuuid from util-linux or BSD
	* libvmime 0.9.2k1 (github.com/kopano-dev/vmime)
	  or libvmime 0.9.2-56-gf173b0a (github.com/kisli/vmime; see below)
	* libxml2 2.6
	* MariaDB Connector/C 3.0 or MySQL Connector/C 5.1
	* zlib 1.2

Optional build-time dependencies and their minimum versions:

	* google-perftools libtcmalloc 2.0
	* MIT Kerberos libkrb5
	* libcurl 7
	* libs3 4.1 (for Amazon S3 attachment storing)
	* Linux-PAM 1.1
	* OpenLDAP libldap_r 2.4
	* PHP 7.0
	* Python 3.5 & swig 2.x
	* rrdtool librrd 1.3

Mandatory components during runtime:

	* MySQL server 5.1.73 or higher, or MariaDB server

Optional components during runtime:

	* libtcmalloc or jemalloc as an alternate allocator
          (preload declarable in server.cfg)
	* libs3 (dlopened)

The following additional developer options are available:

	* --with-asan: shorthand for enabling Address Sanitizer
	* --with-ubsan: shorthand for enabling UB Sanitizer
	* --disable-release: disable workarounds for known issues
	* Some ASAN features (e.g. Leak Sanitizer and double-free) are
	  available through LD_PRELOAD-ing libasan.so, even when not enabled
	  during build.

Special developer-only treats:

	* CPPFLAGS=-DKC_DISALLOW_OBJECTPTR_REFMOD:
	  Amends the API/ABI such that calling AddRef() and Release()
	  on an object_ptr<T> is disallowed.


== Building ==

As is common for autotools-based projects, if there is no "configure" file
in your download, it has to be created with `autoreconf -fi`. There is a
`bootstrap.sh` file in KC that can also be used.


== About VMIME ==

Upstream VMIME is presently not doing regular releases and there is no trivial
way to enforce a particular version. Therefore, Kopano's VMIME repository
updates the Version tag itself and uses that as a minimum requirement for the
PKG_CHECK_MODULE check.

To use a non-Kopano vmime, the version check needs to be overridden with:

	./configure vmime_CFLAGS="$(pkg-config vmime --cflags)" \
		vmime_LIBS="$(pkg-config vmime --libs)"


== Testsuite ==

	./setupenv make -C tests/ check
