FLAIM README file
=================

NOTE: This README file covers platform-independant, and GNU/Linux and
Unix specific information. For information on building and installing
on Windows platforms, please see the README.W32 file.

Contents
--------
1. What is FLAIM?
2. Building FLAIM
3. Installing FLAIM

What is FLAIM?
--------------

FLAIM is an acronym that stands for FLexible Adaptable Information 
Management. The FLAIM library provides a very fast and easy to use 
embedded DBMS system, which can be linked statically or dynamically 
into your application.

The FLAIM library forms the basis for two very successful commercial 
products:

  1. Novell eDirectory - a powerful LDAP compliant directory
  2. Novell GroupWise - a world-class email and calendaring solution

Besides these commercial offerings, FLAIM has been used successfully in 
several smaller Novell projects, including Novell's open source iFolder
project.

The FLAIM package provides source code for the FLAIM libraries in the "src" 
directory, and several useful utilities in the "util" directory:

  1. flmdbcheck - checks the integrity of a flaim database and indices
  2. flmrebuild - rebuilds flaim database index files
  3. flmview - view the contents of a flaim database
  4. flmdbshell - perform DB operations from a shell-like command prompt
  5. flmgigatest - load a FLAIM database with _billions_ of entries

These utilities have been used by Novell engineers to test the features of 
FLAIM and the integrity of FLAIM databases for both eDirectory and GroupWise.

Additionally, the "util" directory supplies a unit test for the FLAIM library 
called "ut_basictest", which is built and executed during "make check".

Building FLAIM
--------------

IMPORTANT: You must have installed Autoconf version 2.62, Automake version 
1.10 and Libtool version 2.2. These are the latest versions of these three
tools, as of this writing (July 2, 2008).

Building FLAIM on Unix and Linux systems is as simple as with any other
Autotools-based project. If you're building from an SVN working directory,
enter the following command first, immediately after a clean check-out:

  $ autoreconf -i

This command will generate a configure script and Makefile.in templates. 
If you find yourself modifying the FLAIM build system (eg., configure.ac
and Makefile.am files), then you may omit the "-i" option in later 
executions of the autoreconf utility. 

If you're building from a tarball, you may skip the "autoreconf" step above
and move right to the following steps:

  $ ./configure
  $ make all check 

The FLAIM build system provides all the default functionality provided by 
any Autotools build system, including VPATH build support. To build from 
outside the source directory, enter the following commands (for example):

  $ mkdir build
  $ cd build
  $ ../configure
  $ make all check
 
FLAIM depends on the FLAIM tool kit (ftk) library, which is another sub-
project in the flaim-projects repository. To build FLAIM from the flaim 
directory within the flaim-projects hierarchy, or from an flaim tarball, 
you will need to do one of three things to make the FLAIM tool kit available
to the FLAIM build system:

  1. Install the ftk project source in a sub-directory beneath flaim.
  2. Build ftk separately and provide FTKLIB & FTKINC variables to configure.
  3. Install the ftk project libraries and header files on your build host.

Either one of these solutions will work fine. Building ftk as a sub-project
will provide more flexibility, but will cause the build to take longer as you
are effectively building the FLAIM tool kit along with FLAIM.

If you choose the third option, the FLAIM build system will automatically
locate and use the libflaimtk.la and flaimtk.h files on your system.
 
Installing FLAIM
----------------

To install FLAIM libraries and header files, you may type the following 
command after building FLAIM:

  $ sudo make install

The default prefix for the FLAIM Autotools build system is "/usr/local".
If you wish to install in a different location, then use either one of the
following commands:

  $ ./configure PREFIX=/usr
  $ make all check
  $ sudo make install

or 

  $ ./configure
  $ make prefix=/usr 
  $ sudo make prefix=/usr install

If you have questions or feedback, please send mail to one of the two user-
writeable flaim mailing lists:

  1. flaim-users@forge.novell.com
  2. flaim-devel@forge.novell.com

The flaim-announce list may be subscribed to for occasional notifications of
updates to the FLAIM projects.

Enjoy!

