[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: make 3.81rc2: automatic variables strip leading "./"
From: |
Paul D. Smith |
Subject: |
Re: make 3.81rc2: automatic variables strip leading "./" |
Date: |
Thu, 30 Mar 2006 08:38:31 -0500 |
%% "Angel Tsankov" <address@hidden> writes:
>> This is not limited to this release candidate: GNU make has behaved
>> like this for a very long time. However, it was only recently
>> reported.
>>
>> See Savannah bug #10708.
>>
>> https://savannah.gnu.org/bugs/index.php?func=detailitem&item_id=10708
>>
>>
>> This is not targeted to be fixed in GNU make 3.81 however.
at> What do you mena by "fixed" - as far as I can see, this is not
at> bug, is it?
I think it could be considered a bug, yes.
at> In order to achieve the desired behaviour now I need a way to
at> check if patsubst has made any substitutions when called OR a way
at> to test the result of patsubst to the third argument. How is this
at> done?
I think you're misunderstanding the issue. It's true that the example
in the bug is needlessly complex, which leads to misunderstandings about
what the bug actually is... a lesson to us all to make the example as
simple as possible and to leave out everything not directly related to
reproducing the bug.
Consider this makefile:
./foo: ; @echo $@
One would expect (_I_ would expect) this to print:
./foo
because that's the target name in the makefile. But in fact it prints:
foo
because make canonicalizes the target names so it can match them up;
consider this:
foo: bar
./foo: ; @echo $@
does "./foo" depend on bar? Make says yes and I think it's right. But
I also think "$@" should be the literal name of the target associated
with the command script.
The same thing happens for prerequisites and "$<" etc... although this
is less obvious; consider:
foo: ./bar ; @echo $<
bar: ; @:
Now, does this print "bar" or "./bar"?
Anyway, there is no patsubst called here, and there's no way to know
whether the target had a "./" prefix or not (unless you do it yourself
by setting your own variable or something rather than relying on $@ etc.)
It cannot be done.
--
-------------------------------------------------------------------------------
Paul D. Smith <address@hidden> Find some GNU make tips at:
http://www.gnu.org http://make.paulandlesley.org
"Please remain calm...I may be mad, but I am a professional." --Mad Scientist
- make 3.81rc2: automatic variables strip leading "./", Angel Tsankov, 2006/03/29
- Re: make 3.81rc2: automatic variables strip leading "./", Paul D. Smith, 2006/03/29
- Re: make 3.81rc2: automatic variables strip leading "./", Angel Tsankov, 2006/03/30
- Re: make 3.81rc2: automatic variables strip leading "./",
Paul D. Smith <=
- Re: make 3.81rc2: automatic variables strip leading "./", Angel Tsankov, 2006/03/30
- Re: make 3.81rc2: automatic variables strip leading "./", Paul D. Smith, 2006/03/30
- Re: make 3.81rc2: automatic variables strip leading "./", Angel Tsankov, 2006/03/30
- Re: make 3.81rc2: automatic variables strip leading "./", Paul D. Smith, 2006/03/30
- Re: make 3.81rc2: automatic variables strip leading "./", Angel Tsankov, 2006/03/31
- Re: make 3.81rc2: automatic variables strip leading "./", Paul D. Smith, 2006/03/31