[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[bug #21716] The following works in 3.80 but not in 3.81
From: |
anonymous |
Subject: |
[bug #21716] The following works in 3.80 but not in 3.81 |
Date: |
Sat, 29 Dec 2007 21:50:21 +0000 |
User-agent: |
Mozilla/5.0 (X11; U; OpenBSD i386; en-US; rv:1.8.1.6) Gecko/20070819 Firefox/2.0.0.6 |
Follow-up Comment #2, bug #21716 (project make):
The change in behavior is listed in the 3.81 NEWS file. To quote:
* WARNING: Backward-incompatibility!
GNU make now implements a generic "second expansion"
feature on the prerequisites of both explicit and implicit
(pattern) rules. In order to enable this feature, the
special target '.SECONDEXPANSION' must be defined before
the first target which takes advantage of it. If this
feature is enabled then after all rules have been parsed
the prerequisites are expanded again, this time with all
the automatic variables in scope. This means that in
addition to using standard SysV $$@ in prerequisites
lists, you can also use complex functions such as
$$(notdir $$@) etc. This behavior applies to implicit
rules, as well, where the second expansion occurs when
the rule is matched. However, this means that when
.SECONDEXPANSION' is enabled you must double-quote any
"$" in your filenames; instead of "foo: boo$$bar" you
now must write "foo: foo$$$$bar". Note that the SysV
$$@ etc. feature, which used to be available by default,
is now ONLY available when the .SECONDEXPANSION target
is defined. If your makefiles take advantage of this
SysV feature you will need to update them.
So, add the line
.SECONDEXPANSION:
to the makefile somewhere before any uses of $$(@F), etc. With that, the
makefile will work with both 3.80 and 3.81.
Philip Guenther
_______________________________________________________
Reply to this item at:
<http://savannah.gnu.org/bugs/?21716>
_______________________________________________
Message sent via/by Savannah
http://savannah.gnu.org/