Building on Windows
===================
   Visual C++ 8.0 Express is good, but more to the point, it's free.
To build XFLAIM, you will need to download and install VC8 Express and the
latest Windows Platform SDK, as VC8 Express only comes with .NET libraries.
You can get VC8 Express here:

   http://msdn.microsoft.com/vstudio/express/visualC/default.aspx

Click the Download link on the right, and CAREFULLY follow steps 1 through
4 on that page. The 4th step links to a page that indicates how to install
the Windows Platform SDK. It looks painful, but it's really rather simple.

Once VC8 Express and the Platform SDK have been installed and configured
to work correctly with each other (and after the obligatory set of reboots), 
you can simply double click on the xflaim solution (xflaim.sln) file to bring 
up the xflaim project in the VC8 IDE. Use the main or context menu options 
to build the desired targets.

At some near future point, we hope to be able to build with autotools under 
Cygwin. Of course, VC8 Express (or Professional) will still be required, but
at least the build process will be the same for all platforms.

XFLAIM Runtime Library Use
=========================
   XFLAIM libraries - both static and dynamic - and the xflaim utilities
consume the dynamic (DLL) form of the VC8 runtime libraries. This is in 
alignment with the use of runtime libraries on Unix platforms. It's more
efficient and flexible to use the DLL versions of these libraries, and
it allows Microsoft to update these libraries as necessary to fix security
holes and defects which may be found in the future.

   With each new version of Windows and Microsoft tools, Microsoft 
platforms become more security minded - and more secure. This is 
generally done by copying features from Unix platforms into the Windows 
operating system and into the tools themselves. Visual Studio 2005 is no 
exception. The most significant security feature in VC8 (IMHO) is secure 
package deployment and executable module manifests. This is nothing less 
than the direct equivalent of RPATH's in Unix and Linux, and the usual 
security features - and annoying issues - come along with it.

   The VC8 runtime libraries include MSVCR80.DLL, MSVCP80.DLL and 
MSVCM80.DLL, which represent the C standard library, the C++ standard
library, and the C math library, respectively. These libraries may no 
longer be simply dropped into the same directory as your executable and 
consumed. Executables and consumer DLL's need to be configured to build 
with a manifest file (a default setting for new projects), and the runtime 
libraries need to be "deployed". Deployment consists of running a 
significant algorithm to determine platform requirements and features, 
and making the right decisions to install these runtime libraries. 

   Developers (like you) will not have a problem executing your own 
projects built against the XFLAIM libraries because you've installed VC8, 
which consumes the VC8 runtime libraries, and so deploys it during its
install process. For more information, see this excellent article on 
the CodeProjects website:

   http://www.codeproject.com/cpp/vcredists_x86.asp


Legacy Makefile
===============
   There is also a legacy makefile that has been hand written to target
xflaim for all of the platforms that xflaim currently supports. If you don't
want to use autotools, and you don't feel comfortable in the VC8 IDE, then
you may build for windows by simply running make from the root of the XFLAIM
project. This makefile accepts multiple auxilliary targets, which modify
the build in various ways. These auxilliary targets include:

   debug
   release
   32bit
   64bit
   verbose
   usegcc
   flm_dbg_log

True build targets include:

   libs (default) - xflaim libraries (static and dynamic)
   checkdb - checkdb.exe
   rebuild - rebuild.exe
   view - view.exe
   ut_basictest - basic unit tests
   sample - sample.exe

Enjoy!
