@c -*-texinfo-*-
@node Building, Applications, Introduction, Top
@chapter Building and Installing
This chapter explains how to build and install Crystal Entity Layer.

@menu
* Directory Hierarchy::
* Requirements::
* External Libraries::
* CEL Environment Variable::
@end menu

It will describe the pre-requisites for building and installing on each
platform along with specific instructions on how to do this.

If you have used Crystal Entity Layer on a platform which is not described
please let us know via the mailing list so we can add instructions.

@node Directory Hierarchy, Requirements, Building, Building
@section Directory Hierarchy
This section will explain the layout of the directory hierarchy within
Crystal Entity Layer.  

@table @code
@item cel         
            This is the main directy for Crystal Entity Layer. This can be any
            path supported by your operating system. 
            This folder also currently contains the configure scripts and
            Microsoft Visual C++ workspace and project files.

@item cel/apps    
            This is where all the applications shipped with Crystal Entity
            layer reside.  Please see the manual section entitled Applications
            for more information on these.

@item cel/data    
            This is where data for the Crystal Entity Layer applications,
            as well as any applications you build yourself within the
            Crystal Entity Layer source tree, reside.

@item cel/docs    
            This is where the Crystal Entity Layer documentation resides.
            It is currently available in HTML and TexInfo formats.

@item cel/include 
            This is where the header files for the various Crystal Entity
            Layer modules reside.  

@table @code            
            @item cel/include/behaviourlayer
            This directory contains the definitions of the Behaviour Layer
            interfaces.

            @item cel/include/physicallayer
            This directory contains the definitions of the Physical Layer
            interfaces.  Including such things as entities, property classes,
            messaging and persistence.

            @item cel/include/propclass
            This directory contains the definitions of the various property
            class interfaces.

            @item cel/include/tools
            This directory contains definitions for interfaces for various
            utility classes.
@end table            

@item cel/mk      
            This directory includes various makefiles and build
            configurations for various platforms.

@item cel/msvc    
            This directory contains the project files and resource
            scripts for building under Microsoft Windows using Microsoft
            Visual C++.

@item cel/plugins 
            This is where the implementations of the plugins that make up
            Crystal Entity Layer reside.

@table @code            
            @item cel/plugins/addons
            These are various additional, and optional, Crystal Space plugins.

            @table @code
                @item cel/plugins/addons/celentity
                @item cel/plugins/addons/xmlscript
                These plugins allow the loading of Crystal Entity Layer
                entities from a standard Crystal Space map file.
            @end table

            @item cel/plugins/behaviourlayer
            These are the various behaviour layers which have been already
            implemented for use with Crystal Entity Layer.

            @table @code    
                @item cel/plugins/behaviourlayer/python
                This is a behaviour layer that allows entity behaviours
                to be implemented using the Python scripting language.

                @item cel/plugins/behaviourlayer/test
                This is the test behaviourlayer implemented in C++.

                @item cel/plugins/behaviourlayer/xml
                This is a behaviour layer that allows entity behavours
                to be implemented using scripts stored as XML.
            @end table    

            @item cel/plugins/persist
            These are the various persistence layers which have already
            been implemented for use with Crystal Entity Layer.

            @table @code
                @item cel/plugins/persist/classic
                This is the Crystal Entity Layer Classic Persistence Module.
                This allows the persisting of Crystal Entity Layer entities
                to a Crystal Space VFS file.
            @end table                

            @item cel/plugins/propclass
            These are the various property classes which have already
            been implemented for use with Crystal Entity Layer.  For more
            information on these please see the section entitled Property
            Classes

            @item cel/plugins/stdphyslayer
            This is the Crystal Entity Layer's Standard Physical Layer.
@end table            

@item cel/scripts 
            This is where scripts used by the Crystal Entity Layer
            applications and examples reside.
@end table
            
@node Requirements, External Libraries, Directory Hierarchy, Building
@section Requirements

In order to be able to build and install Crystal Entity Layer your
development environment must meet the requirements for Crystal Space.

For more information on these please see the Crystal Space documentation.

If you are planning to use any form of scripting language in conjunction
with Crystal Entity Layer (currently only Python is supported) then you
will also need to have this scripting language installed.

TODO: Document requirement for Jam, where and how to get it.

@node External Libraries, CEL Environment Variable, Requirements, Building
@section External Libraries
Crystal Entity Layer currently has two external dependencies, the first of 
these of course being Crystal Space.

You may obtain Crystal Space from:@*
@uref{http://www.crystalspace3d.org/}

The second dependency is Python.  Python is a scripting language which is 
used by the Python Behaviour Layer.  This is not required in order to build
Crystal Entity Layer (it is an optional module), however if you wish to use
Python in your own Behaviour Layer, or build the blpython example, then you
will need to download Python from:@*
@uref{http://www.python.org/}

@node CEL Environment Variable, , External Libraries, Building
@section CEL Environment Variable
Crystal Entity Layer applications may use the CEL environment variable in 
order to locate your Crystal Entity Layer installation.

Please ensure this environment variable points to your CEL installation.

