Apache Thrift (an Apache Incubator project)

Last Modified: 2009-Jan-30

Thrift is distributed under the Apache License, v2.0. Please see the
included LICENSE file.

Introduction
============

Thrift is a lightweight, language-independent software stack with an
associated code generation mechanism for RPC. Thrift provides clean
abstractions for data transport, data serialization, and application
level processing. The code generation system takes a simple definition
language as its input and generates code across programming languages that
uses the abstracted stack to build interoperable RPC clients and servers.

Thrift is specifically designed to support non-atomic version changes
across client and server code.

For more details on Thrift's design and implementation, take a gander at
the Thrift whitepaper included in this distribution or at the README files
in your particular subdirectory of interest.

Heirarchy
=========

thrift/

  compiler/
    Contains the Thrift compiler, implemented in C++.

  lib/
    Contains the Thrift software library implementation, subdivided by
    language of implementation.

    cpp/
    java/
    php/
    py/
    rb/

  test/

    Contains sample Thrift files and test code across the target programming
    languages.

  tutorial/

    Contains a basic tutorial that will teach you how to develop software
    using Thrift.

Requirements
============

Thrift requires boost shared pointers from boost-1.33.1 or greater, see:
http://www.boost.org/libs/smart_ptr/smart_ptr.htm

Some portions of Thrift also depend upon libevent, see:
http://monkey.org/~provos/libevent/

Some portions of Thrift also depend upon zlib, see:
http://www.zlib.net/

These libraries are open source and may be freely obtained, but they are not
provided as a part of this distribution.

Resources
=========

More information about Thrift can be obtained on the Thrift webpage at:

     http://incubator.apache.org/thrift

Acknowledgments
===============

Thrift was inspired by pillar, a lightweight RPC tool written by Adam D'Angelo,
and also by Google's protocol buffers.

Installation
============

If you are building from the first time out of the source repository, you will
need to generate the configure scripts.  (This is not necessary if you
downloaded a tarball.)  From the top directory, do:

	./bootstrap.sh

Once the configure scripts are generated, thrift can be configured.
From the top directory, do:

	./configure

You may need to specify the location of the boost files explicitly.
If you installed boost in /usr/local, you would run configure as follows:

	./configure --with-boost=/usr/local

Note that by default the thrift C++ library is typically built with debugging
symbols included. If you want to customize these options you should use the
CXXFLAGS option in configure, as such:

        ./configure CXXFLAGS='-g -O2'
        ./configure CFLAGS='-g -O2'
        ./configure CPPFLAGS='-DDEBUG_MY_FEATURE'

Run ./configure --help to see other configuration options

Please be aware that the Python library will ignore the --prefix option
and just install wherever Python's distutils puts it (usually along
the lines of /usr/lib/pythonX.Y/site-packages/).  If you need to control
where the Python modules are installed, set the PY_PREFIX variable.
(DESTDIR is respected for Python and C++.)

Make thrift:

	make

From the top directory, become superuser and do:

	make install

Note that some language packages must be installed manually using build tools
better suited to those languages (at the time of this writing, this applies
to Java, Ruby, PHP).

Look for the README file in the lib/<language>/ folder for more details on the
installation of each language library package.
