/*! @page build-posix Building and installing WiredTiger on POSIX

@section posix_github Building using Git and GitHub

Skip this step if you are building from a WiredTiger release package,
and proceed with @ref posix_building.

To build from the WiredTiger GitHub repository requires
<a href="http://git-scm.com/">git</a>,
<a href="http://www.gnu.org/software/autoconf/autoconf.html">autoconf</a>,
<a href="http://www.gnu.org/software/autoconf/automake.html">automake</a>,
<a href="http://www.gnu.org/software/libtool/libtool.html">libtool</a> and
related tools.  The standard options for those tools can be specified
when configuring and building WiredTiger.

First, clone the repository:

@code
git clone git://github.com/wiredtiger/wiredtiger.git
@endcode

Second, run \c autogen.sh to create the \c configure script:

@code
cd wiredtiger
sh autogen.sh
@endcode

Now proceed with @ref posix_building.

@section posix_building Building WiredTiger

To build the WiredTiger software on a POSIX system, change directory to
the top-level directory, then configure and build the software:

@code
cd wiredtiger
./configure && make
@endcode

To rebuild from scratch, discard any previous configuration by cleaning
out the build area:

@code
make distclean
@endcode

To see additional configuration options, run:

@code
./configure --help
@endcode

WiredTiger uses
<a href="http://www.gnu.org/software/autoconf/autoconf.html">autoconf</a>
<a href="http://www.gnu.org/software/autoconf/automake.html">automake</a>,
and <a href="http://www.gnu.org/software/libtool/libtool.html">libtool</a>
to create the configure script and Makefiles.  The standard options for those
tools can be specified when configuring and building WiredTiger.

@section posix_installing Installing WiredTiger

The WiredTiger software consists of a library and a single standalone
utility.

WiredTiger's distribution follows the GNU Coding Standards installation
guidelines, and by default WiredTiger builds and installs four versions
of the library in <code>/usr/local/lib</code>.  For example:

@code
file /usr/local/lib/libwiredtiger*
/usr/local/lib/libwiredtiger-1.0.0.so: ELF 64-bit LSB shared object, x86-64, version 1 (FreeBSD), dynamically linked, not stripped
/usr/local/lib/libwiredtiger.a:        current ar archive
/usr/local/lib/libwiredtiger.la:       libtool library file
/usr/local/lib/libwiredtiger.so:       symbolic link to `libwiredtiger-1.0.0.so'
@endcode

WiredTiger uses
<a href="http://www.gnu.org/software/libtool/libtool.html">libtool</a> to
build the libraries.  By default, both shared and static libraries are built.
To build only static libraries, configure WiredTiger using the
\c --disable-shared argument. To build only shared libraries, configure using
WiredTiger using the \c --disable-static argument.

In addition, WiredTiger installs a standalone utility program named
<code>wt</code>.  By default, this utility is installed in
<code>/usr/local/bin/wt</code>.

To install WiredTiger:

@code
make install
@endcode

To uninstall WiredTiger:

@code
make uninstall
@endcode

To install WiredTiger's libraries or binaries into alternate locations,
use the configuration or installation options described in the
<a href="http://www.gnu.org/prep/standards/">GNU coding standards</a>
documentation.  For example, to install the libraries and binaries into
a different location:

@code
./configure --prefix=/c/wiredtiger
@endcode

@section posix_configure Configuring WiredTiger

The WiredTiger software supports some additional configuration options:

@par \c --enable-attach
Configure WiredTiger to sleep and wait for a debugger to attach on failure.
<b>DO NOT</b> configure this option in production environments.

@par \c --enable-bzip2
Configure WiredTiger for <a href="http://www.bzip.org/">bzip2</a>
compression; see @ref compression for more information.

@par \c --enable-diagnostic
Configure WiredTiger to perform various run-time diagnostic tests.
<b>DO NOT</b> configure this option in production environments.

@par \c --enable-java
Build the WiredTiger Java API.

@par \c --enable-leveldb[=basho, hyper, rocksdb]
Include a Google, Inc. compatible LevelDB API. Optionally, specify \c basho
to build a version of the LevelDB API compatible with Basho's Riak
product, specify \c hyper to build a version of the LevelDB API compatible
with the HyperDex product, and specify \c rocksdb to build a version of the
LevelDB API compatible with applications using Facebook's RocksDB
engine. See @ref leveldb for more information.

@par \c --enable-lz4
Configure WiredTiger for <a href="https://github.com/Cyan4973/lz4">LZ4</a>
compression; see @ref compression for more information.

@par \c --enable-python
Build the WiredTiger <a href="http://www.python.org">Python</a> API.

@par \c --enable-snappy
Configure WiredTiger for <a href="http://code.google.com/p/snappy/">snappy</a>
compression; see @ref compression for more information.

@par \c --enable-verbose
Configure WiredTiger to support the \c verbose configuration string to
::wiredtiger_open.

@par \c --enable-zlib
Configure WiredTiger for <a href="http://www.zlib.net/">zlib</a>
compression; see @ref compression for more information.

@par <code>--with-builtins</code>
Configure WiredTiger to include support for extensions in the main library.
This avoids requiring additional libraries for supported extensions. Currently
supported options are \c lz4, \c snappy and \c zlib.

@par <code>--with-python-prefix</code>
Configure WiredTiger to install Python libraries to a non-standard Python
install location.

@par <code>--with-spinlock[=pthread, pthread_adaptive, gcc]</code>
Configure WiredTiger to use a specific mutex type for serialization;
options are \c pthread (the default, which configures WiredTiger to use
POSIX 1003.1c pthread mutexes), \c pthread_adaptive (which configures
WiredTiger to use POSIX 1003.1c pthread mutexes configured to be
adaptive (where that functionality is available), or \c gcc (which
configures WiredTiger to use gcc-based spinlocks).

@section posix_compiler Changing compiler or loader options

To change the compiler or loader behavior during the build, use the
<code>CC</code>, <code>CFLAGS</code>, <code>LDFLAGS</code>, or
<code>LIBS</code> environment variables:

@par \c CC
The compiler.
@par \c CFLAGS
Compiler flags.
@par \c LDFLAGS
Loader flags.
@par \c LIBS
Additional libraries.

For example, to specify a different compiler:

@code
env CC=mygcc ./configure
@endcode

By default, WiredTiger builds with the \c -O3 compiler optimization flag
unless the \c --enable-debug configuration option is specified, in which
case the \c -g compiler flag is used instead.  For example, to specify
a different level of optimization:

@code
env CFLAGS=-Os ./configure
@endcode

To specify a different set of include files:

@code
env CFLAGS=-I/usr/local/include ./configure
@endcode

To specify an additional library:

@code
env LIBS="-lrtf -lmin" LDFLAGS=-L/usr/local/lib ./configure
@endcode
 */
