5 messages in com.perforce.jamming[jamming] Need help with SubDir
FromSent OnAttachments
EXT-Goodson, Stephen15 Jun 2001 19:40 
Dave Lewis15 Jun 2001 22:58 
EXT-Goodson, Stephen19 Jun 2001 17:20 
EXT-Goodson, Stephen20 Jun 2001 17:08 
Brett Calcott20 Jun 2001 18:00 
Subject:[jamming] Need help with SubDir
From:Brett Calcott (bret@paradise.net.nz)
Date:06/20/2001 06:00:36 PM
List:com.perforce.jamming

Steve,

I'm not sure why this does not work. The only difference I can think of (from some of things that I am doing) is that all of my rules and actions are in the top Jamrules file, rather than the Jamfile?

Sorry I can't be of more help right now

Brett

----- Original Message ----- From: "EXT-Goodson, Stephen" <Step@PSS.Boeing.com> To: <jamm@perforce.com> Sent: Thursday, June 21, 2001 12:08 PM Subject: RE: [jamming] Need help with SubDir

I'm still a little baffled by this, but I have figured one more thing out. Adding grist within the rule doesn't work, but if the caller adds grist manually it works fine:

DEPENDS [ FGristFiles $(<) ] : $(>) ; #doesn't work,

DEPENDS $(<) : $(>) ; along with CatRule <Sub>foo.c : foo.txt ; #works

Is there anyone out there who could explain this to me? Obviously I'd prefer not to have to add grist manually each time. How do I go about creating a rule that works as expected with the SubDir command?

Thanks,

-----Original Message----- From: EXT-Goodson, Stephen [mailto:Step@pss.boeing.com] Sent: Tuesday, June 19, 2001 5:20 PM To: 'Brett Calcott' Cc: 'jamm@perforce.com' Subject: RE: [jamming] Need help with SubDir

Brett Calcott wrote:

You need to do something like this:

DEPENDS [ FGristFiles $(<) ] : $(>)

Thanks. That helps, but I'm still not quite getting it. Jam doesn't complain about not knowing how to make <Sub>foo.c any more, but it won't make it either, even though it appears to know how. If I run jam, it tries to Cc Sub/foo.o, but fails because foo.c doesn't exist. If I type 'jam foo.c', it creates jam.c but issues the "warning: using independent target foo.txt". After that, jam will build foo.o and foo just fine.

Interestingly, if I then 'touch foo.txt', that will cause jam to remake foo.o (from the out of date foo.c). It won't ever make foo.c if it already exists (even with an explicit 'jam foo.c').

My updated Jam file, and some output from jam -d is below. As before, it works fine without the SubDir command. Any help is appreciated. Thanks.

Steve

# Jamfile in $(TOPDIR)/Sub/ SubDir TOPDIR Sub ;

rule CatRule { SEARCH on $(>) = $(SEARCH_SOURCE) ; MakeLocate $(<) : $(LOCATE_SOURCE) ; DEPENDS [ FGristFiles $(<) ] : $(>) ; Clean clean : $(<) ; }

actions CatRule { cat $(>) > $(<) }

CatRule foo.c : foo.txt ;

Main foo : foo.c ;

made stable /home/xgoodson/Top/Sub make -- <Sub>foo.c bind -- <Sub>foo.c: /home/xgoodson/Top/Sub/foo.c time -- <Sub>foo.c: Tue Jun 19 16:50:35 2001 make -- foo.txt bind -- foo.txt: /home/xgoodson/Top/Sub/foo.txt time -- foo.txt: Tue Jun 19 16:51:14 2001 made* newer foo.txt made+ old <Sub>foo.c made+ update <Sub>foo.o