[jamming] Jam2.5 and precompiled headers

Chris Antos chrisant at windows.microsoft.com
Tue Feb 11 11:14:08 PST 2003

Richard, Christopher, and I discussed the "on" thing in private emails a
couple weeks ago.  They agreed on the central point, and I think 2.5 is
supposed to include the central fix.

We disagreed on secondary design points, and both our positions are
defensible, although I'm biased and think mine is "more" defensible.

Anyway, the central fix is enough to solve the root of the problem,
although you won't be able to use my Jambase as-is.  It will need an
extra line before anyplace that I used the "VAR on $(x) += $(y)" syntax:

VAR on $(x) ?= $(VAR) ;

That will copy the global value of $(VAR) into the "VAR on $(x)" first,
if "VAR on $(x)" has not yet been populated.  Otherwise the initial "+="
will merely set the new target-specific value and obscure the global
value, thus not doing what the rule writer intuitively expects.  Without
the central fix, the "?=" line above won't work properly.

My private version's "+=" automatically copies the global value first if
appropriate, at least until someone can show me an example where it
would not be the Right Thing to do.

// chris

-----Original Message-----
From: Jacob Gorm Hansen [mailto:jg at ioi.dk] 
Sent: Tuesday, February 11, 2003 4:57 AM
To: Chris Antos
Cc: Matt Armstrong; jam mailling list
Subject: RE: [jamming] Jam2.5 and precompiled headers

On Thu, 2003-01-23 at 23:37, Chris Antos wrote:

> So absolutely Jam should contain rules for using precompiled headers
> using MSVC.  Don't knock it until you've tried it (for a baseline, you
> should test the pch perf wins outside of Jam as a baseline for what
> should be able to _beat_; because Jam adds perf wins of its own).

Naturally, I agree. You mentioned in a private post that there is a bug
in Jam with regards to the 'on' keyword not correctly restricting its
scope. Can you elaborate on this bug and how to fix it?


More information about the jamming mailing list