10 July 2009
---------------

This version of Open MPI compiles and runs under Microsoft Windows
platforms, including Windows XP, Windows HPC Server 2003/2008 and also
Windows 7 RC. It provides two remote process launch components, one is
using WMI, and the other is using Windows CCP API for Windows HPC
Servers. But it has received limited testing compared to other POSIX-like
environments, so feedbacks are important and helpful for us. 

You can download an Open MPI tarball from the main web site
(http://www.open-mpi.org) or check out a developer copy via Subversion
(more information about SVN checkout available on the Open MPI web
site).

The rest of the document is divided on 3 sections.  The first and
second sections are for "easy" setup, based on some files that are
distributed in Open MPI (32 and 64 bits versions).  The third section
is only for advanced users or developers who want to deeply dig into
the software.

============================================================================

First approach: Using CMake 

NOTE: CMake support is available in the Open MPI development
trunk and 1.3.3 release.

1. Download the latest version of CMake (at least v2.4).

2. In the CMake GUI, add the source path and build path of Open MPI
   (out of source build is recommended).

3. Then configure, and after the first time configuration, all
   available options will show up in the CMake GUI.  Select the
   options that you require.

4. Run configure again to generate all Windows solution files; they
   will be generated in build path.

5. Go to the build directory, open the generated Windows solution
   file, and compile.

6. To generate a installer, you should install NSIS, and build the 
    'PACKAGE' project in the Open MPI sulotion.

----------------------------------------------------------------------------

Second approach: Simple and straightforward

Step 1: Untar the contrib/platform/win32/ompi-static.tgz tarball in
        the root directory of the Open MPI distribution.

Step 2: Go in the ompi/datatype subdirectory in the Open MPI
        distribution and copy the following:

        datatype_pack.c   to datatype_pack_checksum.c
        datatype_unpack.c to datatype_unpack_checksum.c
        
Step 3: Add the following to ompi/tools/ompi_info/ompi_info.h and
        change the relevant information inside (i.e., replace
        everything between @'s).

#define OMPI_CONFIGURE_USER "@USER_NAME@"
#define OMPI_CONFIGURE_HOST "@HOST_NAME@"
#define OMPI_CONFIGURE_DATE "@TODAY_DATE@"
#define OMPI_BUILD_USER OMPI_CONFIGURE_USER
#define OMPI_BUILD_HOST OMPI_CONFIGURE_HOST
#define OMPI_BUILD_DATE OMPI_CONFIGURE_DATE
#define OMPI_BUILD_CFLAGS "/Od /Gm /EHsc /RTC1 /MDd"
#define OMPI_BUILD_CPPFLAGS "-I${HOME}/ompi-trunk -I${HOME}/opal/include -I${HOME}/ompi-trunk/orte/include -I${HOME}/ompi-trunk/ompi/include"
#define OMPI_BUILD_CXXFLAGS "/Od /Gm /EHsc /RTC1 /MDd"
#define OMPI_BUILD_CXXCPPFLAGS "-I${HOME}/ompi-trunk -I../../.. -I$(HOME}/ompi-trunk/opal/include -I${HOME}/ompi-trunk/orte/include -I${HOME}/ompi-trunk/ompi/include"
#define OMPI_BUILD_FFLAGS ""
#define OMPI_BUILD_FCFLAGS ""
#define OMPI_BUILD_LDFLAGS " "
#define OMPI_BUILD_LIBS " "
#define OPAL_CC_ABSOLUTE "cl"
#define OMPI_CXX_ABSOLUTE "cl"
#define OMPI_F77_ABSOLUTE "none"
#define OMPI_F90_ABSOLUTE "none"
#define OMPI_F90_BUILD_SIZE "small"

Step 4: Open the Open MPI project (.sln file) from the root directory
        of the distribution.

Step 5: Choose which version you want to build (from the project
        manager).

Step 6: Add the build directory to your PATH.

----------------------------------------------------------------------------

Third approach: Advanced users

The rest of this document is only for advanced users / developers;
i.e., those who has spare time or an urgent necessity to compile their
own Windows version of Open MPI.

Compiling Open MPI natively on Windows requires several tools.  Of
course, one need the Microsoft Visual Studio for their C/C++ compiler
as well as for the ml (assembler compiler) and the link utilities.
But the current version require some GNU tools as well.  Here is the
list of such tools:

1. Download any Unix for Windows environment. Tested environments include
    - cygwin http://www.cygwin.com/
    - minGW  http://www.mingw.org/
    - Windows Services for Unix (SFU)
             http://technet.microsoft.com/en-us/interopmigration/bb380242.aspx

2. Make the default shell ash.exe (install it if it's not installed by
   default) as it will highly decrease the configuration and
   compilation time.

3. Download a very recent Gnu Libtool (e.g., Libtool 2.2.6).

Now you should be set. The most difficult part is done. Just use your
favorite shell to get a window, go in the Open MPi directory and do
like in any UNIX environments: configure, make, and make install.

----------------------------------------------------------------------------

If you have any problems, find any bugs please feel free to report
them to Open MPI user's mailing list (see
http://www.open-mpi.org/community/lists/ompi.php).
