**********************************************************************
* 	README file for STLport 5.0                                    *
*                                                                    *
**********************************************************************

This directory contains the STLport-5.0 release.

What's inside :

README           - this file
INSTALL          - installation instructions

bin              - installation directory for STLport unit tests;
                   it may contain more subdirs, if you use
                   crosscompilation
build/lib        - build directory for STLport library (if you use
                   STLport iostreams and/or locale only)
build/test/unit  - build directory for regression (unit) tests
build/test/eh    - build directory for exception handling tests
stlport          - main STLport include directory
src              - source for iostreams implementation and other parts
                   that aren't pure template code
lib              - installation directory for STLport library (if you
                   use STLport iostreams and/or locale only);
                   it may contain more subdirs, if you use
                   crosscompilation
test/unit        - unit (regression) tests
test/eh          - exception handling test using STLport iostreams
etc              - miscellanous files (ChangeLog, TODO, scripts, etc.) 

GETTING STLPORT

To download the latest version of STLport, please be sure to visit
https://sourceforge.net/project/showfiles.php?group_id=146814

LEGALESE

This software is being distributed under the following terms:

 *
 *
 * Copyright (c) 1994
 * Hewlett-Packard Company
 *
 * Copyright (c) 1996-1999
 * Silicon Graphics Computer Systems, Inc.
 *
 * Copyright (c) 1997
 * Moscow Center for SPARC Technology
 *
 * Copyright (c) 1999-2003
 * Boris Fomitchev
 *
 * This material is provided "as is", with absolutely no warranty expressed
 * or implied. Any use is at your own risk.
 *
 * Permission to use or copy this software for any purpose is hereby granted 
 * without fee, provided the above notices are retained on all copies.
 * Permission to modify the code and to distribute modified code is granted,
 * provided the above notices are retained, and a notice that the code was
 * modified is included with the above copyright notice.
 *

**********************************************************************
