Proton is library for speaking AMQP, including:

  + The AMQP Messenger API, a simple but powerful interface to send
    and receive messages over AMQP.

  + The AMQP Protocol Engine, a succinct encapsulation of the full
    AMQP protocol machinery.

Proton is designed for maximum embeddability:

  + minimal dependencies

  + minimal assumptions about application threading model

Proton is designed to scale up and down:

  + transparently supports both simple peer to peer messaging and
    complex globally federated topologies

Proton is multi-lingual:

  + designed for easy language bindings
     - includes full fidelity data exchange:
         maps, lists, strings, custom data structures, and more

Please see http://qpid.apache.org/proton for a more info.

== Build Instructions (Linux) ==

The following prerequesuites are required to do a full build. If you
do not wish to build a given language binding you can ommit the -devel
package for that language:

  # required dependencies
  yum install gcc cmake libuuid-devel

  # dependencies needed for ssl support
  yum install openssl-devel

  # dependencies needed for bindings
  yum install swig python-devel ruby-devel php-devel

  # dependencies needed for python docs
  yum install epydoc

From the directory where you found this README file:

  mkdir build
  cd build

  # Set the install prefix. You may need to adjust depending on your
  # system.
  cmake -DCMAKE_INSTALL_PREFIX=/usr ..

  # Omit the docs target if you do not wish to build or install
  # documentation.
  make all docs

  # Note that this step will require root privileges.
  make install

Note that all installed files are stored in the install_manifest.txt
file.


== Build Instructions (Windows) ==

This describes how to build the Proton library on Windows using Microsoft Visual C++ 2010
Express (VC10).

The Proton build uses the cmake tool to generate the Visual Studio project files.  These
project files can then be loaded into Express and used to build the Proton library.

Note that these instructions were created using a 32 bit version of Windows 7
Professional. These instructions assume use of a command shell.

The following packages must be installed:

    Visual Studio 2010 Express (or equivalent)
    Python (www.python.org)
    Cmake (www.cmake.org)

    Notes:
        - Be sure to install MSVC Express 2010 Service Pack 1 also!
        - python.exe _must_ be in your path
        - cmake.exe _must_ be in your path


Step 1: Create a 'build' directory - this must be at the same level as the 'src'
        directory.  Example:

     $ cd proton-c
     $ mkdir build

Step 2: cd into the build directory

     $ cd build

Step 3: Generate the Visual Studio project files using cmake.  You must provide:

        1) the name of the compiler you are using [see cmake documentation],
        2) the path to the _directory_ that contains the "CMakeLists.txt"
           file (the parent directory, in this case).
     Example:

     $ cmake -G "Visual Studio 10" ..

     Refer to the cmake documentation for more information.

Step 4: Load the ALL_BUILD project into Visual C++ Express.

     4a: Run the Microsoft Visual C++ Express IDE
     4b: From within the IDE, open the ALL_BUILD project file - it should be in the
         'build' directory you created above.

Step 5: Build the ALL_BUILD project.



