
Quick guide for the patience-impaired
-------------------------------------

At the top level directory, run:

 $ make BACKEND=qdbm ENABLE_TIPC=0 ENABLE_SCTP=0 install

to build and install the server without TIPC and SCTP support, and to use the
qdbm backend.


How to compile and install
--------------------------

The only mandatory requisite to build nmdb is libevent
(http://www.monkey.org/~provos/libevent/).

There are several build-time options, in two groups: supported network
protocols, and backend databases.

The network protocols can all be enabled at the same time:
 * TCP and UDP, the well-known network protocols.
 * TIPC (http://tipc.sf.net/), a cluster-oriented network protocol. You will
	need a Linux kernel >= 2.6.16 with TIPC support (most distributions
	enable it by default).
 * SCTP, a network protocol similar to UDP and TCP, offering reliable message
 	passing over IP, among other very useful things. You will need the
	lksctp-tools package.

The backends, on the other hand, are mutually exclusive and only one can be
selected:
 * qdbm (http://qdbm.sf.net/).
 * bdb (http://www.oracle.com/database/berkeley-db/).
 * null backend, if you don't need a real one.

By default, all network protocols are enabled, and the qdbm backend is
selected.

You can change the defaults by passing parameters to make, like this:

 $ make BACKEND=[qbdm|bdb|null] ENABLE_$PROTO=[1|0]

Where $PROTO can be TCP, UDP, TIPC or SCTP.

For instance, to build with bdb backend and without TIPC and UDP support, use:

 $ make BACKEND=bdb ENABLE_TIPC=0


Tests
-----

To run some tests, start the server and then go to the "tests/c/" directory.
Run "make.sh build" and then run any of the generated tests.


Bindings
--------

To compile the Python bindings, you need to have the library already
installed. Use "make python_install" at the top level directory to build and
install the modules. The module will be named "nmdb". The same goes for Python
3, use "make python3_install".

The other bindings do not have a properly defined install procedure, and
you'll need knowledge of the language to install them.


