Prerequisites
=============

To be able to compile the PUMA library ensure that a suitable version 
of the program `ac++' is installed and the environment variable AC is
set to the program location.  You can download the newest version at 
www.aspectc.org.


Basic Installation
==================

The simplest way to build and install the PUMA library is to follow 
these steps:

  1. `cd' to the directory containing PUMA's source code.

  2. Type `make' to compile the PUMA library.  If `make' succeeds you 
     can find the library in the `lib' sub-directory and PUMA's headers 
     in the `include' sub-directory.
     If you want to compile PUMA for a non-default target platform, use:
     'make TARGET=<platform>' or 'make TARGET=<platform>-release' for a
     "release build" (no debugging & optimization), e.g.
     'make TARGET=win32-release'. If you want to enable/disable parser 
     extensions, use: 'make EXTENSIONS="<list of extensions>"'. The 
     available extensions are listed in extensions.mk.
     On multi-processor machines parallel weaving and compilation
     will probably pay off. In order to run multiple build processes
     in parallel add MINUSJ=<num_procs> to the make command line.
     Don't use the make option -j <num_procs> directly as some parts
     of the make process *have* to be executed sequentially.

  3. Optionally, type `make examples' to compile any examples that 
     come along with PUMA.

  4. Type `make install' to install the library and headers to 
     `/usr/local'.  You may change the target directory by typing 
     `make install PREFIX=...'.

  5. By typing `make clean' you can remove all the files created during
     the make process except the files in the `lib', `include', and 
     `examples' sub-directories.  To also remove these files, type 
     `make distclean'.


Generating the Visual C++ Project
=================================

To compile the PUMA library on Win32 using Visual Studio 7.0 or higher
follow these steps:

  1. `cd' to the directory containing PUMA's source code and type
     `make cleanall'.
  
  2. Type `export AC_OPTFLAGS="--no_line --problem_force_inline 
     --problem_local_class --no_problem_spec_scope"'.
     
  3. Type `make weave EXTENSIONS="winext matchexpr"' to generate the
     woven PUMA source files.
     
  4. Type `sh ./tools/gen_vcpp_proj.sh' to generate the project file
     Puma.vcproj.


Compilers and Options
=====================

The following special build targets are supported:

  * `weave' only builds the tools and applies the aspects coming along
    with PUMA to the sources
    
  * `compile' only compiles the previously transformed sources
  
  * `libclean' only removes the object files and libraries 
