This file describes the installation procedure of the OVOPS++.

============
Requirements
============

This code release has been compiled and tested on following platform:

  Hardware:
  ---------
  * 25 MB free disk space

  Software:
  ---------
  * C++ compiler supporting RTTI, templates and namespaces,
    for example egcs 1.1.2, gcc 2.95.x, or IRIX CC (MIPSpro Compilers: 7.30)
  * STL (Standard Template Library)
 (* Linux kernel ATM patch from http://lrcwww.epfl.ch/linux-atm/ if you
    want to use ATMsocket. ATMsocket works with Linux only.)
 (* ORBacus 3.x installed (from www.ooc.com) if you need CORBA support)
   (ORBacus 4.x or newer not supported)

  Tested OS platforms:
  --------------------
  * Linux 2.2.x/2.4.x + glibc2.x + egcs 1.1.2/gcc 2.95.x
  * SGI IRIX 6.5 (ATMsocket not supported)
  * FreeBSD 4.0  (ATMsocket not supported)
  * BeOS 5 (Note: [ATM,IP]socket not supported due to BeOS 5 limitations)

==========================
Setting up the environment
==========================

The top level directory of the source tree contains Makefile and 
Rules.Make file.

You must have environment variable OPPSRC set to point to the top-
level directory of the source tree before compilation is possible.
This can be done in (t)csh shells with setenv command:

     opp % setenv OPPSRC /usr/local/src/ovops++

In bash/zsh and similars:

     opp $ export OPPSRC=/usr/local/src/ovops++

provided that the source is copied into directory /usr/local/src/ovops++.
Because the OVOPS++ makefiles won't work unless this environment variable
is correctly set, it is absolutely necessary for the compilation.


After this you *must* examine Rules.Make and top-level Makefile to
verify that compiler options etc are in order. Rules.Make contains
general make rules and definitions (eg complier options) that are
used in every module. See your compiler documentation for more details
on compiler flags.

As the last step of setting up the environment give

     opp % make deepdep

command to set the dependencies correctly in all Makefiles. deepdep and
dep (specified in Makefiles) uses makedepend command. If you don't have it,
you may try to compile without doing 'make deepdep'.

=====================
Building the binaries
=====================

After you have set up the environment as described above, you can
build the libraries. The OVOPS++ software is compiled with a simple

     opp % make static

or

     opp % make dynamic

command. 'make static' builds static OVOPS++-libraries and 'make dynamic'
builds dynamically linked OVOPS++-libraries.

========================
Installing the libraries
========================

Make sure installation directory exists before installing,
otherwise installation will fail.

After successful build, you have to install your libraries using

     opp % make static_install

or

     opp % make dynamic_install

command. This install libraries to directory specified in top-level
Makefile. Default is /usr/local/lib. NOTE: if you change INSTALLTARGET
in the top-level Makefile, you need to change LOCAL in Rules.Make too.

After installation you may wish to free some disk space with

     opp % make deepclean

=======
Testing
=======

ovops++-directory contains also subdirectory test, where you can test
simple OVOPS++ implementation. Go to test directory and again, do

     opp % make static

or

     opp % make dynamic

depending are you using static or dynamic libraries. After compiling, run
your new  executable (static_test or dynamic_test). If you see lots of
ugly debugging information, your OVOPS++ environment is set up correctly.

=====================
Compiling own modules
=====================

Copy Makefile.template to your module directory and modify it to meet your
needs. See Rules.Make and test/Makefile for advices. When ready, use above
commands to compile your modules.

================
More information
================

If you encounter any problems with above installation or testing
procedures, please send email to ovops++@tcm.hut.fi.
Patches, comments, and success reports are also welcome.
