Thrift (Thrift IDL and RPC tool)

Mark Slee (mcslee@facebook.com)
Marc Kwiatkowski (marc@facebook.com)
Aditya Agarwal (aditya@facebook.com)

Thrift is distributed under the Thrift open source software license.
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.

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 a 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/
    ruby/

  test/

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


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/

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://developers.facebook.com/thrift

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

Thrift was inspired by pillar, a lightweight RPC tool written by Adam D'Angelo.

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

If you are building from the first time out of the source repository, you will
need to generate the configure scripts.  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='-g -O2'

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

Make thrift 

	make

From the top directory, become superuser and do:

	make install

Note that some language packages must be installed manually (i.e. Java, Ruby).
Look for the README file in the lib/<language>/ folder for more details on the
installation of each language library package.
