help-make
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: gmake 3.80 vs 3,81


From: Philip Guenther
Subject: Re: gmake 3.80 vs 3,81
Date: Wed, 18 Oct 2006 08:25:27 -0600

On 10/18/06, Bhaskar G <address@hidden> wrote:
The sed script that I use with gmake 3.80 works fine but not with 3.81. I
get the following errors.

To bad you don't actually show us the relevant lines of the makefile.
Oh well, I guess I can only quote to you the
"Backward-incompatibility" entries from the gmake 3.81 NEWS file.  I
suggest you read each and think carefully about whether any of those
changes could be involved.

* 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.

* WARNING: Backward-incompatibility!
 In order to comply with POSIX, the way in which GNU make processes
 backslash-newline sequences in command strings has changed.  If your
 makefiles use backslash-newline sequences inside of single-quoted
 strings in command scripts you will be impacted by this change.  See
 the GNU make manual subsection "Splitting Command Lines" (node
 "Splitting Lines"), in section "Command Syntax", chapter "Writing the
 Commands in Rules", for details.

* WARNING: Backward-incompatibility!
 Some previous versions of GNU make had a bug where "#" in a function
 invocation such as $(shell ...) was treated as a make comment.  A
 workaround was to escape these with backslashes.  This bug has been
 fixed: if your makefile uses "\#" in a function invocation the
 backslash is now preserved, so you'll need to remove it.


Philip Guenther




reply via email to

[Prev in Thread] Current Thread [Next in Thread]