Thrift (Thrift IDL and RPC tool)                   Version 1.0  (22 August 2006)

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

$Header$

Copyright (c) 2006, acebook, Inc.
All rights reserved.

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

* Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
* Neither the name of Facebook, inc. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Copyright (C) 2001-2006  Facebook

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

Thrift is a lightweight, language-independent RPC mechanism.  

Requirements
============
Thrift requires Python 2.4 or greater and PLY, the python LALR generator tool, 1.7 or greater.
See python.org for source and binary distributions for python
See http://www.dabeaz.com/ply/ply.html for the PLY distribution and documentation 

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

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 locacation of the boost files explicitly:   If you installed boost in  /usr/local, you would run configure as follows:

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

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

Make thrift 

	make

From the top directory, become superuser and do:

	make install


