          Building Silo using Microsoft Visual C++ version 8.0
          ===========================================================

This guide contains instructions for building Silo using MSVC 8.0
on a computer running MS Windows. While the Silo source code should build using
other compilers, we only provide project files and support for MSVC and 8.0.

What gets built
===============

Two project files are provided: Silo and Silex.  There are 8 configuration 
options within the solution: combinations of debug or release, static or dll, 
with hdf5 or without. (e.g. DLLwithHDF5 Debug, DLLWithHDF5 Release, StaticLib 
Debug, StaticLib Release, etc.)

The DLL configurations build Silo as a dynamic link library, while the 
StaticLib configurations build Silo as a static library.

The configuration ending in 'WithHDF5' build Silo with the HDF5 driver. 
When the Silo DLL is built, an import library called silo.lib is also created. 
When developing applications that use the Silo DLL, be sure to link your 
application with the silo.lib import library. This resolves the symbols that 
come from the Silo DLL at runtime.

Then be sure that silo.dll is in your path when you run your application.  
The HDF5 versions append 'hdf5' to the name: silohdf5.lib, silohdf5.dll.

When using the static library version of Silo, link your applications with the 
silo.lib produced by the build of the static library.  

When linking against the 'WithHDF5' versions, be sure to also link with the 
appropriate hdf5 lib (hdf5.lib for static or hdf5dll.lib).  HDF5 also has a 
dependency on zlib, so you must also link your applications with that.

Build instructions
==================

1. Run the copysilo.bat file in the SiloWindows subdirectory.

2. The solution and project files are found in the SiloWindows subdirectory of 
   the silo source tree.  There is a subdirectory for MSVC8 project file. In
   addition there are subdirectories for special includes and resource files 
   necessary for the build process.

3. Environment variables need to be defined:
        ZLIB_INC_DIR    path to zlib include directory
        ZLIB_LIB_DIR    path to zlib library files 
        ZLIB_LIB_DIR_STATIC    path to static zlib library files 
 
4. If building silo with HDF5 support, you must define a few environment 
   variables so that the compiler can find the necessary files
   
        HDF5_INC_DIR    path to the HDF5 incude directory (where headers are 
                        located)
        HDF5_LIB_DIR    path to location of HDF5 libs
        HDF5_LIB_DIR_STATIC    path to location of static HDF5 libs

        SZIP_INC_DIR    path to the szip incude directory (where headers are 
                        located)
        SZIP_LIB_DIR    path to location of szip libs
        SZIP_LIB_DIR_STATIC    path to location of static szip libs
  
5. Silex is built by default after Silo completes, and it also requires an 
   evironment variable to be defined:
        QT_DIR          path to the Qt directory.
   If you do not have Qt or simply choose not to build Silex, you can remove 
   it from the build process by opening the Configuration Management window 
   (Once Visual Studio is open).  To do so, right-click the solution name, 
   Unselect the silex project for the configuration you will be building.

6. Open VisualStudio and the SiloWindows solution file located in 
   the MSVC8 subdirectory of SiloWindows.

7. Choose the build configuration that is appropriate for your needs. Most 
   users should choose the DLL and only build the Release version.
   To change the active build configuration, select Build->Select active
   configuration from the main menu and choose the desired build configuration
   from the available list.  

8. Build the Silo library. If you are building the Silo DLL, both silo.dll and
   silo.lib are placed in the subdirectory for the selected build configuration.
   Those directories are: 

       SiloWindows\MSVC8\<ConfigurationName) 
       e.g.

       SiloWindows\MSVC8\DLLwithHDF5_Debug
       SiloWindows\MSVC8\DLLwithHDF5_Release

