********************************************
*
* Clearsilver INSTALL
*
* http://www.clearsilver.net
*
* Brandon Long, David Jeske
*
********************************************

1) Compile  ------------------------------------------------

Simplest case:

# ./configure
# make
 
Options to configure:
  --disable-compression         Disables HTML Compression support
  --enable-remote-debugger      Enables remote X CGI debugging
  --disable-apache              Disables building of apache 1.3.x module
  --with-apache=path            Set location of Apache installation
  --disable-python              Disables building of python module
  --with-python=path            Set location of Python Includes
  --disable-perl                Disables building of perl module
  --with-perl=path              Set location of Perl binary
  --disable-ruby                Disables building of ruby module
  --with-ruby=path              Set location of Ruby binary
  --disable-java                Disables building of java module
  --with-java=path              Set location of J2SDK
  --disable-csharp      	Disables building of csharp module
  --with-csharp=path    	Set location of csharp
  --enable-gettext		Enable gettext message translation
 
--disable-compression:  Currently, the CGI output code in the cgi
kit automatically attempts to detect whether the remote browser can
handle compressed data, and if it does, compresses the output for
text/html.  This is run-time configurable via Config.CompressionEnabled.
Disabling it at compile time eliminates the dependency on libz.
 
--enable-remote-debugger: The CGI kit contains code for remotely
debuggin CGI programs by launching an X based debugger (such as xxgdb or
ddd) at the X display you specify in the HTTP request.  There are
controls such as a configurable list of allowed displays, but remote
debugging is disabled by default.
 
--enable-gettext: Enables gettext message translation. Once enabled
you have a new builtin function "_(<message>)". This function calls the
function gettext (man 3 gettext).

The rest of the --disable/--with either disable a specific module, or
point ClearSilver at the right program to enable it.  The configure
script will simple not build any module it can't find the right versions
of programs to build against.  Alternatively, if you are making
ClearSilver part of your build environment, you can simple delete
whichever module directory you don't want, and the build will ignore it.

For information about compiling on Windows under MingW and MSYS, see
python/README.txt

The csharp wrapper was built with Mono (www.go-mono.com) and should work
with v0.24 and later (give or take).  In theory, it should be fairly
simple to get this working on MS.Net as well.

2) Install  ------------------------------------------------

# make install

The make install is relatively new, and just installs the
libraries/header files (and probably the perl and python modules, but
that's a guess)

3) Example 1, Apache static.cgi  ----------------------------------

"static.cgi" is a simple binary which will allow you to write static
HDF files, static ClearSilver templates, and render them. This is a
good way to get started and learn the clearsilver model and
syntax. Follow the steps below to install static.cgi into your Apache
configuration and then read the documentation while playing with
static files.

   http://www.clearsilver.net/docs/man_hdf.hdf

Add the following to your Apache configuration and copy the
Clearsilver static.cgi binary from cgi/static.cgi into your Apache
cgi-bin directory.

   AddHandler cgi-script .cgi
   Action cs-handler /cgi-bin/static.cgi
   AddHandler cs-handler .cs

Since any html file is a valid CS file, I also run with:

   AddHandler cs-handler .html

* About static.cgi:

static.cgi works by assuming that whatever file it was pointed at is a
CS template. It first tries to load common.hdf in the same directory,
then it tries to load some other hdf files, and then it parses and
displays the template file.

Ie, if its pointed at foo.cs, it will load common.hdf, try to load
foo.cs.hdf, if that fails, it tries foo.hdf. If the hdf defines
CGI.StaticContent, it will assume that's the real template file (which
is how we use it on www.clearsilver.net, we just point at he .hdf files,
which define StaticContent as a wrapper.cs, which includes another file
defined in the .hdf file).

4) Example 2, imd image server ------------------------------------

"imd" is a simple image server written with C and clearsilver. The imd
directory has a README on how to set up imd with Apache.

5) Example 3, using with Python -----------------------------------

The clearsilver python wrapper comes with CSPage.py. This file
contains the CSPage superclass, and this file gives some pointers on
how to use the cs handler via python. A much more thorough example
is Scott Hassan's image_server, available from

  http://www.dotfunk.com/projects/image_server


