<?xml version="1.0" ?>
<notes>
<p>
The following diagram illustrates the data flow when working with
<em>CScout</em>.
<br /><img src="flow.gif" alt="Data flow in a CScout project" /><br />
The thick-lined objects depict active processes;
the thin-lined objects depict data.
<em>CScout</em> will analyze and process C source code under the directions
of a processing script.
After some user interactions through a web browser <em>CScout</em> can
write out the modified source code.
<em>CScout</em> can also convert the C source code
into an SQL script that can be further analyzed and processesed through
an RDBMS.
</p>
<p>
There are three ways to generate the processing script:
<ol>
<li> <a href="wsp.html">Through a workspace definition file</a>, processed by the workspace compiler <em>cswc</em>.</li>
<li> <a href="csmake.html">By having the <em>csmake</em> command monitor the build process</a>.  </li>
<li> <a href="pragma.html">By tailoring a project's build process</a> to generate a processing script.  </li>
</ol>
Each method has different advantages and disadvantages.
Therefore, you should probably select the method that better suits your needs,
and not bother with the others.
</p><p>
Workspace definition files offer by far the most readable and transparent
way to setup a <em>CScout</em> workspace.
They are declarative and express exactly the operations that <em>CScout</em>
will perform.
On the other hand, they can be difficult to specify for an existing large
project and they must be kept in sync with the project's build process.
</p><p>
Running your <em>make</em> process under the <em>csmake</em> command is a
very easy way to generate a <em>CScout</em> processing script.
This method however only works if the essentials of your make process
aren't too contrived.
<em>csmake</em> can handle builds implemented through the Unix-related
<em>make</em>,
<em>gcc</em>, <em>ld</em>, <em>ar</em>, and <em>mv</em> commands.
It has been successfuly tested on the Linux and FreeBSD kernels and the Apache
web server.
If <em>csmake</em> can deal with your project, you will be up and running
in minutes; if not, you will only have lost those few minutes.
Another advantage of the <em>csmake</em> method
is that <em>csmake</em> will obtain from
the compiler the predefined macros and the include file path.
As a result you often don't have to tailor the files
<code>host-incs.h</code> and <code>host-defs.h</code>
to match you environment;
you can directly use the supplied file <code>gcc-defs.h</code>,
which provides workarounds for GCC extensions.
</p><p>
Tailoring your project's build process to generate a <em>CScout</em>
processing script is a final possibility.
Here you gain maximum flexibility and integration with the project
build system at the expense of having to modify the project's
build procedure.
If the project is relatively large and the build procedure is under your
control, this may be an option worth investigating.
</p>
</notes>
