[plt-scheme] Building mred 3m with VS2008

From: Ben Goetter (goetter at mazama.net)
Date: Mon Sep 1 13:03:55 EDT 2008

I'm building PLT Scheme with Microsoft Visual Studio 2008 ("VS2008" 
hereafter), or rather working toward same, but have hit a snag during 
the 3m build process.   The transformation that decorates C++ source 
with 3m GC information is choking on function calls in the global 
namespace, e.g. ::ReleaseDC(), emitting the diagnostic

Error [DECL] <line> in <file>: Variable declaration (:: () not at the 
beginning of a block.

This message originates from collects/compiler/private/xform.ss, line 
2680 or so, and it's calling double-colon a type, left-paren a var.  The 
token sequence that provokes this looks like

tok :: <line> <file>
tok ReleaseDC
parens (
tok ;
tok DELETE <next line in sequence>
parens (
tok ;

Removing the global namespace qualifier from function calls in files 
such as wxwindow/src/base/wb_print.cxx lets xform proceed with its 
business as usual.  However, I'm a little baffled as to how VS2008 could 
be provoking this behavior.  Presumably something from the preprocessor 
pass in the preceding token stream has sent xform to a place where 
ordinarily it would not go.  Any ideas?

Also, once I get this build working, may I submit it as a patch against 
the official sources?  How would you like it packaged?

Posted on the users mailing list.