From: jjd AT jjd DOT com (James J Dempsey) Subject: B19.1: make $(shell) output crlf problem with perl 5 Jun 1998 23:03:00 -0700 Message-ID: <199806051402.KAA12574.cygnus.gnu-win32@stay.intouchsys.com> To: gnu-win32 AT cygnus DOT com Cc: jjd AT jjd DOT com I believe I have found a bug in GNU make in cygwin32 b19.1. I'm running under NT 4.0 service pack 3. Bug summary: $(shell) constructs that run perl scripts return strings that end in \r, which they shouldn't. Consider this Makefile: VARIABLE1=$(shell script1) VARIABLE2=$(shell script2) VARIABLE2=$(shell script3) test1: echo $(VARIABLE1)/bar test2: echo $(VARIABLE2)/bar test3: echo $(VARIABLE3)/bar And this shell script called script1: #! /bin/sh echo foo And this perl script called script2: #! /usr/local/bin/perl print "/foo\n"; And this c program called script3.c: main () { printf("/foo\n"); } Script1 has this output: bash-2.01$ script1 | od -c 0000000 / f o o \r \n 0000006 and script2 has this output: bash-2.01$ script2 | od -c 0000000 / f o o \r \n 0000006 and script3 has this output: bash-2.01$ script3 | od -c 0000000 / f o o \r \n 0000006 Then consider what happens when you type "make test1", "make test2", and "make test3": bash-2.01$ make test1 echo /foo/bar /foo/bar bash-2.01$ make test2 /bar /foo /bar bash-2.01$ make test3 echo /foo/bar /foo/bar bash-2.01$ If you look a little closer: bash-2.01$ make test2 | od -c 0000000 e c h o / f o o \r / b a r \r \n 0000020 / f o o \r / b a r \r \n 0000033 bash-2.01$ Something different happens when make grabs the output of script2 than when it calls script1 or script3. It appears that in one case, it removes the \r\n and in the other only removes the \n leaving the \r at the end of the variable. The fact that only "test2" failed implies this is a problem with perl, but I don't think it is, since it is clear that the perl in this case is returning something with a \r both inside and outside the make environment. The perl for Win32 we're using is Perl 5.004 from Hip Communications and was downloaded from http:/www.perl.com/CPAN-local/ports/winNT/Standard/x86/perl5.00402-bindist04-bc.tar.gz. I am not on the gnu-win32 mailing list. --Jim Dempsey-- jjd AT jjd DOT com http://jjd.com/ - For help on using this list (especially unsubscribing), send a message to "gnu-win32-request AT cygnus DOT com" with one line of text: "help".