Re: make or kmod.mk broken

From: Ruslan Ermilov <ru_at_freebsd.org>
Date: Sat, 14 Jan 2006 21:50:54 +0200
On Sat, Jan 14, 2006 at 07:57:55AM +0100, Max Laier wrote:
> Hi,
> 
> in kmod.mk (and I believe in other places as well) we have constructs in the 
> form of this: ${SOMEARRAY:M${SOMEVAR}}  However, make doesn't seem to 
> understand this.  I don't see any traces that it ever did and I have no clue 
> if it should.
> 
> I might well misunderstand things (not a make guru) so here is my testcase:
> 
> | STUFF= foo bar foobar
> | FOO=foo
> | 
> | mtest:
> | 	echo ${STUFF:M${FOO}}
> 
> and "$make mtest" gives:
> | echo }
> | }
> 
> this clearly suggests that make is not equipped to handle the variable 
> expansion here.
> 
> In any case we have to fix either kmod.mk or make.
> 
> On a related question:  How can I get the actual location of a file that is 
> in .PATH?  All I could come up with was ${.ALLSRC:M*${MY_FILE}} which doesn't 
> work as I am explaining here.
> 
This OTOH works since FOO variable is special (it's evaluated at parse time):

STUFF=  foo bar foobar

mtest:
.for FOO in foo
	_at_echo ${STUFF:M${FOO}}
.endfor

If there are other instances such as the example you've given, they should
indeed be fixed.


Cheers,
-- 
Ruslan Ermilov
ru_at_FreeBSD.org
FreeBSD committer

Received on Sat Jan 14 2006 - 18:56:46 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:38:50 UTC