21 messages in com.perforce.jamming[jamming] Unnecessary recompilation
FromSent OnAttachments
Vladimir Prus24 Jul 2001 08:40 
Arnt Gulbrandsen31 Jul 2001 02:23 
Roesler, Randy01 Aug 2001 12:48 
Glen Darling01 Aug 2001 22:23 
Arnt Gulbrandsen02 Aug 2001 03:17 
Roger Lipscombe02 Aug 2001 04:01 
Arnt Gulbrandsen02 Aug 2001 04:09 
Arnt Gulbrandsen02 Aug 2001 04:23 
David Abrahams02 Aug 2001 07:37 
Roesler, Randy02 Aug 2001 21:14 
Roesler, Randy02 Aug 2001 21:31 
Glen Darling02 Aug 2001 22:52 
Paul Haffenden03 Aug 2001 01:57 
David Abrahams03 Aug 2001 06:22 
Arnt Gulbrandsen03 Aug 2001 06:49 
David Abrahams03 Aug 2001 07:03 
Roesler, Randy03 Aug 2001 11:34 
Roesler, Randy03 Aug 2001 11:42 
David Abrahams" <david.abrahams@rcn.com (David Abrahams)03 Aug 2001 16:24 
Glen Darling06 Aug 2001 19:01 
Arnt Gulbrandsen07 Aug 2001 03:12 
Subject:[jamming] Unnecessary recompilation
From:Roesler, Randy (rroe@mdsi.bc.ca)
Date:08/02/2001 09:31:01 PM
List:com.perforce.jamming

Lets say that we made this change ... perhaps we break something ...

So now I

x = <funny_grist>X ; y = <other_grist>X ;

LOCATE on $x = $(cwd)/objs ; LOCATE on $y = $(cwd)/objs ;

Build $x ; Build $y ;

Sevral places in Jam I use the fact that a many jam nodes (targets) can refer to the same file at binding time.

For example

DEPENDS exports : <export>x.h ; LOCATE on <export>x.h = $(TOP)/include/cmp ; DEPENDS cmp/x.h : <export>x.h ; DEPENDS <export>x.h : x.h ; SEARCH on x.h = $(SUBDIR) ; Ln <export>x.h : x.h ;

Now, when header file scaning finds #include <cmp/x.h> jam will know that its really the same files a <export>x.h.

also

DEPENDS x.o : <grist>x.o ;

(now jam x.o builds ALL x.o's, but rarely is there more than one x in the build tree).

-----Original Message----- From: Roger Lipscombe [mailto:rlip@riohome.com] Sent: Thursday, August 02, 2001 4:02 AM To: jamm@perforce.com Subject: Re: [jamming] Unnecessary recompilation

That sounds like the author realized what was happening... but I still don't see any reason for it. Shouldn't the action execution code think "Oh, I've done this exact action, no need to do it again"?

Surely it's a little more complicated than that -- you could have another rule that added a "C++FLAGS on" to one of the targets, and then invoked MainFromObjects. This makes it difficult to tell whether the C++ rule is exactly the same.

I admit, however, that: a) It's not impossible to deal with this case, and... b) You'd have to be totally insane to do this without specifying a different output file/directory, to avoid confusing the two resulting .o/.obj files.

Cheers, Roger.