Overview of the build system of Composite
-----------------------------------------

Preliminary:
------------

Before making the source tree, you must update the Makefile.src file
in the src directory.  The first four make variables must be set to
appropriate directories for your system.  The build pattern involves

1) compiling a patched (with src/platform/linux/patches/*) linux
version,
2) compiling the code (first using "make init"),
3) copying relevant objects and executables to a single "transfer"
directory (using "make cp"),
4) logging in as root, moving to a directory that root can manipulate
(e.g. "cd ~; mkdir experiments ; cd experiments" as root), 
5) copying the Makefile from the transfer directory to this directory
and executing first "make init", then "make", and
6) running the script to install all components and execute Composite:
"sh lpp.sh" (which was copied into the root directory by the
Makefile).

Correspondingly the four variables in src/Makefile.src are:
TOP_DIR: the path up to and including src/
LDIR: the path to the directory of the Linux source directory
TRANS_DIR: the transfer directory into which all objects/executables
will be copied
TEST_DIR: the directory where root will execute Composite

On my system, I have:
TOP_DIR=/home/gparmer/research/composite/src/
LDIR=/home/gparmer/research/linux-2.6.33
TRANS_DIR=/home/gparmer/transfer
TEST_DIR=/root/experiments/

and I have a terminal in src/ to compile/copy the code with "make;
make cp", and a terminal with root in /root/experiments/ that will run
"make; sh ./run.sh".


Commands:
---------

Valid make commands are:

init: this is the necessary first command to build _all_ source files.
This will include cleaning and building external library directories
such as dietlibc and lwip which the following command will not.  This
is required to compile most components.

all (or a blank "make" command): to attempt to compile and ready all
objects.

clean: to remove all of the objects, executables, dependency files,
etc... from the source directory.

cp: to copy all objects and files necessary to run the system into the
transfer directory (TRANS_DIR in Makefile.src).


General:
--------

Makefiles are scattered throughout the source directories.  The only
directories in which you can reliability run make are in src,
src/components/lib/dietlibc-0.29, and src/components/lib/lwip/cos.
This is because for all other Makefiles, the Makefiles of the parent
directory set up the proper make includes.  If these include
directories are not setup, then any particular Makefile will fault
when it reaches "include".

Either just run the make commands from the src directory, or look a
the parent Makefiles to ensure you are setting up the correct make
directories.

