17 messages in com.perforce.jamming[jamming] Unclear parts of the Jam se...
FromSent OnAttachments
Wallace, Richard24 Sep 2003 12:38 
Harri Porten24 Sep 2003 13:37 
Wallace, Richard24 Sep 2003 15:21 
Paul Forgey24 Sep 2003 16:38 
Alen Ladavac28 Sep 2003 05:01 
Arnt Gulbrandsen29 Sep 2003 02:08 
Arnt Gulbrandsen29 Sep 2003 02:49 
Vladimir Prus29 Sep 2003 03:00 
Alen Ladavac29 Sep 2003 04:41 
Vladimir Prus29 Sep 2003 05:03 
Arnt Gulbrandsen29 Sep 2003 05:11 
Vladimir Prus29 Sep 2003 05:20 
Johan Nilsson29 Sep 2003 05:38 
Johan Nilsson29 Sep 2003 05:58 
Alen Ladavac29 Sep 2003 06:51 
Alen Ladavac29 Sep 2003 08:13 
Christopher Seiwald29 Sep 2003 16:35 
Subject:[jamming] Unclear parts of the Jam sematics
From:Alen Ladavac (al@croteam.com)
Date:09/29/2003 04:41:42 AM
List:com.perforce.jamming

Thanks. I understand the thing with binding now. The thing with :E= is ok, but what about :E (notice missing = sign)? As in:

HDRSEARCH on $(>) = $(SEARCH_SOURCE:E) $(SUBDIRHDRS) $(HDRS) $(STDHDRS) ;

What is that supposed to mean?

Thanks, Alen

----- Original Message ----- From: "Arnt Gulbrandsen" <ar@gulbrandsen.priv.no> To: "Alen Ladavac" <al@croteam.com> Cc: <jamm@perforce.com> Sent: Monday, September 29, 2003 9:08 AM Subject: Re: [jamming] Unclear parts of the Jam sematics

Alen Ladavac writes:

Hi all,

I've been playing around with Jam for some time now, and there are some things I still don't get. The docs are quite grayish in those areas, so I'd like to ask if someone can please explain these:

Probably not. I like jam, but other people know more about it than I. Consider any errors an incentive for an Expert to step forward.

1) actions bind <vars> What exactly does this do? Docs say "$(vars) will be replaced with bound values". I get an impression that target-dependent vars are always bound when executing a rule or action? Why would I need the "bind" keyword?

Well, $(<) and $(>) always bound, ie. the value of $(<) will be /home/alen/src/mumble/stumble/fumble.o. But $(SOMETHING) is not, so its value may well be <stumble>fumble.o. Most actions only need $(<) and $(>).

E.g. why is only NEEDLIBS bound in the Link actions?

$(<), $(>) and $(NEEDLIBS) are all bound.

2) :E and :E= modifiers on variables

:E=value is documented as: ":E=value - Use value instead if the variable is unset", but I can't say I understand what that should mean.

:E says that if a variable is an empty list, or does not exist at all, then the value should be used instead. So $(A:E=B) says "give me the value of A, but if A does not exist, give me the constant 'B' instead".

You have the same thing in sh, ${A:-B}.

$ echo ${A:-B} B $

3) Getting a target bound variable value.

Sorry.

--Arnt