[plt-scheme] Building mred 3m with VS2008

From: Matthew Flatt (mflatt at cs.utah.edu)
Date: Mon Sep 1 18:39:10 EDT 2008

At Mon, 01 Sep 2008 10:03:55 -0700, Ben Goetter wrote:
> 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?

I'm puzzled too.

I guess mzschemecgc (as compiled by VS2008) is working correctly
otherwise? Is it possible to drop in a "mzschemecgc.exe" from the
nightly build to check that the 3m-creating "make.ss" program still
fails in the same way (i.e., it's not just that mzschemecgc is somehow

A diff that I can apply with `patch' is the best way to submit patches.


Posted on the users mailing list.