From make's NEWS file for the 3.81 release:
* WARNING: Backward-incompatibility!
In order to comply with POSIX, the way in which GNU make processes
backslash-newline sequences in recipes has changed. If your makefiles
use backslash-newline sequences inside of single-quoted strings in
recipes you will be impacted by this change. See the GNU make manual
subsection Splitting Recipe Lines (node Splitting Lines), in
section Recipe Syntax, chapter Writing Recipe in Rules, for
details.
-Original Message-
From: bug-make-bounces+mdorey=bluearc@gnu.org
[mailto:bug-make-bounces+mdorey=bluearc@gnu.org] On Behalf Of Warren
Dodge
Sent: Thursday, September 03, 2009 17:15
To: bug-make@gnu.org
Cc: warr...@tektronix.com
Subject: executing perl problem with make 3.81 versus 3.80
I have this Makefile.bug and an empty file yyy which makes no
logical sense as I stripped my
original problem down to this.
-
touch yyy
-
Makefile.bug
-
.PHONY: ggg
ggg:
perl -ne '$$top = x.p.x1.x1; if( $$verilog =~ /^$$/ ) { $$x=1}'
yyy
.PHONY: xxx
xxx:
perl -ne '$$top = x.p.x1.x1; \
if( $$verilog =~ /^$$/ ) { $$x=1}' \
yyy
-
If I use make 3.80 I can make both targets
/tools/gmake3.80/bin/make -f Makefile.bug ggg xxx
perl -ne '$top = x.p.x1.x1; if( $verilog =~ /^$/ ) { $x=1}' yyy
perl -ne '$top = x.p.x1.x1; \
if( $verilog =~ /^$/ ) { $x=1}' \
yyy
If I use make 3.81 I get an error from perl on the xxx target
/tools/wdtgnu/make-3.81/bin/make -f Makefile.bug ggg xxx
perl -ne '$top = x.p.x1.x1; if( $verilog =~ /^$/ ) { $x=1}' yyy
perl -ne '$top = x.p.x1.x1; \
if( $verilog =~ /^$/ ) { $x=1}' \
yyy
syntax error at -e line 2, near if
syntax error at -e line 2, near ;}
Execution of -e aborted due to compilation errors.
make: *** [xxx] Error 255
It appears that something is going wrong on the interfacing of the perl
command into the bash shell which executes the perl.
Here is some information about the 3.81 make.
/tools/wdtgnu/make-3.81/bin/make --debug=j -f Makefile.bug ggg xxx
GNU Make 3.81
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.
This program built for i686-pc-linux-gnu
perl -ne '$top = x.p.x1.x1; if( $verilog =~ /^$/ ) { $x=1}' yyy
Putting child 0x099e70a0 (ggg) PID 1624 on the chain.
Live child 0x099e70a0 (ggg) PID 1624
Reaping winning child 0x099e70a0 PID 1624
Removing child 0x099e70a0 PID 1624 from chain.
perl -ne '$top = x.p.x1.x1; \
if( $verilog =~ /^$/ ) { $x=1}' \
yyy
Putting child 0x099e73d0 (xxx) PID 1625 on the chain.
Live child 0x099e73d0 (xxx) PID 1625
syntax error at -e line 2, near if
syntax error at -e line 2, near ;}
Execution of -e aborted due to compilation errors.
Reaping losing child 0x099e73d0 PID 1625
make: *** [xxx] Error 255
Removing child 0x099e73d0 PID 1625 from chain.
___
Bug-make mailing list
Bug-make@gnu.org
http://lists.gnu.org/mailman/listinfo/bug-make
___
Bug-make mailing list
Bug-make@gnu.org
http://lists.gnu.org/mailman/listinfo/bug-make