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


Windows version
---------------

Ice has been extensively tested with Windows XP, Windows 2000 and
Windows 98 SE. Ice is also expected to work on Windows 98, Windows ME,
Windows NT 3.51, Windows NT 4.0 and Windows Server 2003.

Ice binary distributions for Visual Studio 6.0 and .NET 2003 are
available from http://www.zeroc.com/download.html. These binary
distributions include everything necessary to build Ice applications
and require Windows NT 4.0, Windows 2000, Windows XP or Windows Server
2003.


C++ compiler
------------

The following Microsoft Visual C++ compilers are supported:

- Visual C++ 6.0 SP5 with STLport 4.5 (or later)

- Visual C++ .NET 2003 (aka VC 7.1)

The STL (Standard Template Library) that is included with Visual C++
6.0 is not supported. You must use STLport 4.5 (or later) with Visual
C++ 6.0.

For Visual C++ .NET 2003, you can use the included STL library.


Third-party libraries
---------------------

Ice has dependencies on a number of third-party libraries:

- STLport 4.5 or later (required for Visual C++ 6.0)
- Berkeley DB 4.2.52
- expat 1.9x
- OpenSSL 0.96 or 0.97
- bzip2 1.0

If you have downloaded an Ice binary installer, you already have all
of the required third-party libraries and do not need to download any
additional packages, nor do you need to compile the Ice source code.

If you wish to compile the Ice source code, you can download an
installer containing binaries for all of the required third-party
libraries from the ZeroC web site at

http://www.zeroc.com/download.html

Finally, if you prefer to download and install the third-party
dependencies yourself, you can find them at the following locations:

STLport         http://www.stlport.org/download.html
Berkeley DB     http://www.sleepycat.com/download
expat           http://sourceforge.net/projects/expat/
OpenSSL         http://www.openssl.org
bzip2           http://sources.redhat.com/bzip2

For STLport installation instructions, please refer to
http://www.stlport.org/doc/install.html

Note: For a regular build of bzip2, both the debug and the release
library are named "libbz2.lib". In order to be able to have both a
debug and a release version on your system, please rename the debug
library to "libbz2d.lib". This is also what the Ice project files
expect if you build a debug version of Ice.

If you compile the third-party libraries from source code, we
recommend that you use the same Visual C++ version to build all of
the third-party libraries.

Users of Visual C++ 6.0 must configure Visual Studio to use STLPort
before building Berkeley DB:

- In the Visual C++ 6.0 IDE, choose Tools->Options->Directories

- Select "Include files"

- Add the include directory for STLport first in the list. (Note that
  you must add the "include\stlport" directory, not just "include".)

- Select "Library files"

- Add the lib directory for STLport.


Python
------

To run the automated test suite, you will need Python 2.2 or a newer
version. If you have no interest in running the test scripts, Python
is not required.

You can download a Python distribution for Windows from
http://www.python.org/download

Important note for Windows 98, Windows 98 SE and Windows ME users:

The Windows 9x shell is too limited to run the Ice test suite. For
these versions of Windows, you need Cygwin and the python interpreter
that comes with Cygwin in order to run the test suite. Cygwin can be
downloaded from:

http://www.cygwin.com


======================================================================
Compilation and Testing
======================================================================

Using your favorite Zip tool, unzip the Ice archive anywhere you like,
then start the Microsoft Visual C++ IDE.

First, you must make sure that your compiler finds all of the required
third-party packages (include files, libraries, and DLLs):

- In Visual Studio, choose:

  * Visual C++ 6.0: Tools->Options->Directories

  * Visual C++ .NET: Tools->Options->Projects->VC++ Directories

- Select "Include files".

- Add the include directories for Berkeley DB, expat, OpenSSL, and
  bzip2.

  If you used the binary installer for expat, then the proper include
  directory is C:\Expat-1.95.8\Source\lib.

  For Visual C++ 6.0, also add the include directory for STLport. Note
  that you must add the "include\stlport" directory, not just
  "include", and that this directory must precede any of the Visual
  C++ include directories.

- Select "Library files".

- Add the library directories for Berkeley DB, expat, OpenSSL, and
  bzip2 (and STLport, if required).

  If you used the binary installer for expat, then the proper library
  directory is C:\Expat-1.95.8\Libs.

- Select "Executable files".

- Add the directories that contain DLLs for Berkeley DB, expat,
  OpenSSL and bzip2 (and STLport, if required).

Now you are ready to compile Ice, so open the "all.dsw" workspace. If
you are using Visual C++ .NET, then the project files must first be
converted from Visual C++ 6.0 to .NET format.

Set your active project to either "all" or "minimal". "all" will
compile everything including the tests and demos. "minimal" will not
compile the tests or demos. To set your active project with Visual C++
6.0, use Project->Set Active Project. For Visual C++ .NET, click on
"all" or "minimal" in the class view, then use Project->Set as StartUp
Project.

To start the compilation, use Build->Build for Visual C++ 6.0, or
Build->Build all/minimal for Visual C++ .NET, respectively.

If you built the tests you can run the test suite, provided that you
have installed Python. Open a command prompt and change to the top-
level Ice directory. At the command prompt, execute:

python allTests.py

If everything worked out, you should see lots of "ok" messages. In
case of a failure, the tests abort with "failed".

If you want to try out any of the demos, make sure to update your PATH
environment variable to add the "bin" directory, which contains the
Ice DLLs and executables.


======================================================================
Windows 98, Windows 98 SE, Windows ME, Windows NT 3.51 
======================================================================

By default, IceUtil::Mutex and related classes are implemented using
Windows' CriticalSection, and in particular they use the function
TryEnterCriticalSection. This function is either not present or
implemented as a "no-op" call on Windows 98, Windows 98 SE, Windows ME
and Windows NT 3.51, so default Ice builds cannot be used on these
versions of Windows.

IceUtil::Mutex and related classes can also use "heavier" mutex
objects that allow Ice to work on all Windows versions (>= 98). If you
wish to build Ice in this configuration, you must first edit the file
include\IceUtil\Config.h and remove the following lines:

#   ifndef _WIN32_WINNT
        //
        // Necessary for TryEnterCriticalSection.
        //
#       define _WIN32_WINNT 0x0400
#   endif

On Windows 98, Windows 98 SE and Windows ME, we also recommend that
you increase the number of connections supported by TCP/IP (to 500 for
example). See MaxConnections at
http://support.microsoft.com/default.aspx?scid=kb;EN-US;158474


======================================================================
Installation
======================================================================

No automatic installation support is provided: you need to copy the
contents of the bin, include, and lib directories to your preferred
location. The include directory contains all Ice include files, the
lib directory contains all Ice libraries, and the bin directory
contains all Ice executables and DLLs.

After installation, make sure to add the include directory to the
Visual C++ "Include files", the lib directory to the "Library files",
and the bin directory to the "Executable files". In Visual C++ 6.0,
choose Tools->Options->Directories. In Visual C++ .NET, choose
Tools->Options->Projects->VC++ Directories.
