|
From: | Martin Dorey |
Subject: | RE: executing perl problem with make 3.81 versus 3.80 |
Date: | Thu, 3 Sep 2009 18:23:25 -0700 |
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----- 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 address@hidden http://lists.gnu.org/mailman/listinfo/bug-make |
[Prev in Thread] | Current Thread | [Next in Thread] |