			BACKENDS

This is a meta-project and each of the wrappers/backends are 
complete and independent projects in their own right and will build 
separately of each other's source (provided any necessary dependencies are 
met of course).  This project and its subprojects depend upon pkgconfig 
(http://pkgconfig.freedesktop.org/wiki/) being installed on the developers' 
system to allow these projects to detect their dependencies to discover build 
and linking flags and decide what to build. If you do not have pkgconfig then 
you will only be able to build the engine "out of the box".

Building this project will build as many wrappers as the host 
system can support (e.g. if you don't have freetype developer headers 
installed it will skip building any wrappers which depend of freetype).

When configuring the project you can exclude specific backends that would 
otherwise be built by using --without-BACKEND where BACKEND is the name 
of the backend you don't want to build.


                        BUILDING
                        
The *nix build system uses autoconf and automake including all the 
conventions of those tools. This includes extended support for debug, 
maintenance mode, etc. See INSTALL for more information on using the
build system.

If you have checked this source out of our Subversion repository or a similar 
version control system you will need to generate the autotools scripts and 
files (configure, Makefile.in etc) to do this run:

    autoreconf --install
        
Please see INSTALL for information on building


                       DEVELOPERS

If you modify any configure.in or Makefile.am file you will need rerun 
autoreconf like so:

    autoreconf
    
For those changes to affect the configure script and makefiles.

To add new backends/wrappers place you project as a subdirectory in this 
one and then add checks for your required dependencies to the 
configure.in script to allow it to decide wether to build it or not.
There is a convenience autoconf macro included in the configure.in file 
AUTO_SELECT_BACKEND which can be used to generate a --with-BACKEND option 
and help text, check for dependencies, and add you directory to the build 
list for the configure and Makefile chaining and ensure it gets distributed 
by make dist when not built. It is used like so:

    AUTO_SELECT_BACKEND(subproj, deps)

    subproject - the directory in which your backend/wrapper lives
                 also the name used for the --with flag
    deps       - a space-separated list of pkg-config style dependencies

For example the pango graphite integration module is described like so:

    AUTO_SELECT_BACKEND(pangographite, pango pangoft2 pangoxft fontconfig)
    adding pangographite to the build_backends variable and the 
    dist_backends variable when not built.

Internally it uses PKG_CHECK_EXISTS.  If your subproject is intended to be 
a dependency of other wrappers then you need to make sure that its 
AUTO_SELECT_BACKEND call is declared before those wrappers dependent upon it.
You will also need to provide an -uninstalled version of it's pc file to allow
later packages to find the uninstalled (i.e. build time) headers and libs.
See the freetype wrapper for a good example of this.
                       

