Installation instructions
=========================

The Avro library is written in ANSI C.  It uses CMake [1] as its build
manager.

[1] http://www.cmake.org/


Prerequisites
-------------

Avro uses CMake [1] as its build manager.  You must have this installed,
along with a C compiler (such as gcc) to build the library.

Avro depends on the Jansson JSON parser [2], version 2.3 or higher.  On
many operating systems this library is available through your package
manager (for example, `apt-get install libjansson-dev` on Ubuntu/Debian,
and `brew install jansson` on Mac OS).  If not, please download and
install it from source [2].

To build the documentation you need asciidoc [3] and source-highlight [4]
installed.  The build scripts will automatically detect whether these
tools are installed, and will skip the documentation if they're not.

[1] http://www.cmake.org/
[2] http://www.digip.org/jansson/
[3] http://www.methods.co.nz/asciidoc
[4] http://www.gnu.org/software/src-highlite/


Building from source
--------------------

The Avro C library uses CMake as its build manager.  In most cases, you
should be able to build the source code by running the following:

    $ mkdir build
    $ cd build
    $ cmake .. \
        -DCMAKE_INSTALL_PREFIX=$PREFIX \
        -DCMAKE_BUILD_TYPE=RelWithDebInfo
    $ make
    $ make test
    $ make install

You might have to run the last command using sudo, if you need
administrative privileges to write to the $PREFIX directory.

The "RelWithDebInfo" build type will build an optimized copy of the
library, including debugging symbols.  Use the "Release" build type if
you don't want debugging symbols.  Use the "Debug" build type if you
want a non-optimized library, with debugging symbols.

On Mac OS X, you can build a universal binary by setting the
CMAKE_OSX_ARCHITECTURES option when running cmake.  Just add something
like the following:

        -DCMAKE_OSX_ARCHITECTURES=i386;x86_64

to the cmake command given above.  The set of architectures that you can
choose from differs depending on which version of OS X you're running;
common possibilities include "i386", "x86_64", "ppc", and "ppc64".

On Unix, you can request thread-safe versions of the Avro library's
global functions by defining the THREADSAFE cmake variable.  Just add
the following to your cmake invokation:

        -DTHREADSAFE=true
