This file contains a short introduction into the Reflex C++ reflection package 
and installation instructions. 

INTRODUCTION
============

Reflex is a package which enhances C++ with reflection capabilities. It consists 
of two different parts:

- the Reflex library which provides an API for loading dictionary information
  and providing this information to the user 

- the genreflex script which which produces dictionary information from arbitrary
  C++ definitions (typically contained in header files)

Reflex was developed and implemented with the ISO/IEC C++ standard as main 
guideline. The library itself has no external dependencies and is implemented in 
a light, standalone way and can be built on multiple platforms/compilers.

For more information about the package and its features please go to

                       http://cern.ch/reflex


INSTALLATION:
=============

Reflex can be built in two different modes.

1) as a sub-package of the ROOT data analysis framework. Building only reflex 
   inside ROOT can be done with 

     [~/root] % make all-reflex

   For more information about ROOT please go to 

                       http://root.cern.ch

2) using the GNU autoconf/automake/libtool build suite. In order to build this
   way you may follow this procedure:

   a) If you have received this package as a tar ball you may proceed with b)
      otherwise go to the reflex root directory and run the 

      [~/reflex] % build/autogen 

      script. This shall setup the proper build environment

   b) Configuration with standard 

      [~/reflex] % ./configure 

      It is also possible to build an run a unit test suite with

      [~/reflex] % ./configure --enable-tests GCCXMLROOT=/usr/local/gccxml
                   CPPUNITROOT=/usr/local/cppunit

      where the GCCXMLROOT and CPPUNITROOT environment variables point to the
      root directories of the corresponding packages (one level up from /lib etc)

      CppUnit is a C++ unit testing framework and can be downloaded from 
      http://cppunit.sourceforge.net

      Gccxml is a frontend to the gcc compiler which is needed for producing 
      dictionary source code. For information how to get the proper version
      you may go to http://cern.ch/reflex (or http://root.cern.ch - coming soon)

      Other maybe useful configure options:

        --disable-static (inhibits building of the static version of the Reflex lib)

        --prefix=/my/preferred/installation/directory

   c) Build the Reflex library with

      [~/reflex] % make

   d) Build and run the test suite (if configured in b) )

      [~/reflex] % make check

   e) Install the package with

      [~/reflex] % make install

      After installation you will find in your installation directory:

      /bin     - contains the genreflex script for building dictionary sources
      /include - contains the public header files
      /lib     - contains the Reflex lib and python scripts needed by genreflex

