This is the initial release of the PTP Scalable Debug Manager (SDM). The SDM is an 
client/server framework for controlling multiple distributed processes. The 
primary purpose of this framework is to attach backend debuggers to the processes being 
debugged, and to provide a library interface to control the debugging of these processes.

Basic Installation
==================

The following steps are used to set up your build environment so that the executable
 will be correctly built and installed. In order to use the server binary, it needs to 
be installed in a fragment that corresponds to the architecture of the machine 
it will be run on. 

1. Run the following command to configure, build and install the executable:
   
   		sh BUILD

2. Once you've run the BUILD script once, you can also use 'make' and 'make install',
   either from the command line, or from the 'Make Targets' view in Eclipse to 
   build and install the executable.

3. If any of the automake/autoconf files changes, you should just need to
   run 'make' and it will automatically regenerate the appropriate files.

