delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/2000/06/28/18:40:46

Mailing-List: contact cygwin-help AT sourceware DOT cygnus DOT com; run by ezmlm
List-Subscribe: <mailto:cygwin-subscribe AT sourceware DOT cygnus DOT com>
List-Archive: <http://sourceware.cygnus.com/ml/cygwin/>
List-Post: <mailto:cygwin AT sourceware DOT cygnus DOT com>
List-Help: <mailto:cygwin-help AT sourceware DOT cygnus DOT com>, <http://sourceware.cygnus.com/ml/#faqs>
Sender: cygwin-owner AT sourceware DOT cygnus DOT com
Delivered-To: mailing list cygwin AT sourceware DOT cygnus DOT com
From: Chris Faylor <cgf AT cygnus DOT com>
Date: Wed, 28 Jun 2000 18:39:40 -0400
To: "'cygwin AT sourceware DOT cygnus DOT com'" <cygwin AT sourceware DOT cygnus DOT com>
Subject: Re: make's @ prefix doesn't work correctly in canned sequences
Message-ID: <20000628183940.A31370@cygnus.com>
Reply-To: cygwin AT sourceware DOT cygnus DOT com
Mail-Followup-To: "'cygwin AT sourceware DOT cygnus DOT com'" <cygwin AT sourceware DOT cygnus DOT com>
References: <50028CAE26D1D3118C7F00A0CC50D6252D1DC5 AT EMWARESERVER>
Mime-Version: 1.0
User-Agent: Mutt/1.2i
In-Reply-To: <50028CAE26D1D3118C7F00A0CC50D6252D1DC5@EMWARESERVER>; from scarter@emware.com on Wed, Jun 28, 2000 at 04:31:54PM -0600

I believe that this has already been discussed on this mailing list.  It
appears to be a generic problem with make 3.79.

You'll have to contact the author to get this corrected.

Or, you might want to take a stab at fixing this yourself.

cgf

On Wed, Jun 28, 2000 at 04:31:54PM -0600, Scott Carter wrote:
>In the make utility, the '@' prefix (command echo 
>suppression) does not work correctly in canned sequences 
>(defined using the define/endef directive). 
>
>If the '@' prefix is placed on any command in the sequence, 
>command echo is suppressed for all remaining commands in the 
>sequence (even if the remaining commands don't have the '@' 
>prefix). This behavior is not in agreement with the 
>documentation, which says:
>
>     -------------------------------------------------------
>     In command execution, each line of a canned sequence is 
>     treated just as if the line appeared on its own in the 
>     rule, preceded by a tab.  In particular, `make' invokes 
>     a separate subshell for each line.  You can use the 
>     special prefix characters that affect command lines 
>     (`@', `-', and `+') on each line of a canned sequence.  
>     For example, using this canned sequence:
>     
>          define frobnicate
>          @echo "frobnicating target $@"
>          frob-step-1 $< -o $@-step-1
>          frob-step-2 $@-step-1 -o $@
>          endef
>     
>     `make' will not echo the first line, the `echo' command. 
>     But it _will_ echo the following two command lines.
>     -------------------------------------------------------
>
>Using the example from the documentation (with minor 
>modifications for the DOS/Win command prompt) I've tested 
>several versions of make, with the following results:
>
>Cygnus cygwin make
>    3.79-3 --unix  : bad
>    3.79-3 --win32 : bad
>
>    3.77-? --unix  : OK
>    3.77-? --win32 : Can't test; versions before 3.79-3 don't 
>                     properly handle canned sequences.
>
>    3.75-? --unix  : OK
>    3.75-? --win32 : Can't test.
>
>Gnu make binary from unknown source (but not cygnus)
>    3.77           : OK
>    3.74+wrs-2     : OK
>
>>From my tests, I can't tell if the problem is in the FSF gnu 
>make code, or if the problem is in the Cygnus 
>additions/modifications. If the problem is in the FSF code, 
>you can forward this report to them if you'd like, or I can.
>
>I haven't tested the behavior with the other prefixes ('+' 
>and '-'), but they may have the same problem.
>
>Below, find a copy of the makefile, and a transcript of a 
>test session.
>
>Regards-
>    Scott Carter
>
>PS - Thanks (again) for the quick response on the canned 
>sequence fix. If you fix this, if you'd like, you can send me 
>the fixed binary before you do the release, and I'll test it 
>a bit to see if I flush out any more problems. 
>
>--------------------- Transcript ---------------------------
>
> [ For this demonstration, I have sh.exe in my path. ]
>
>D:\testmake>type makefile
># --- Filename: makefile
>
>.PHONY : all
>
>all: frob.out
>
>define frobnicate
>@echo frobnicating target $@
>frob-step-1.bat $< -o $@-step-1
>frob-step-2.bat $@-step-1 -o $@
>endef
>
>frob.out: frob.in
>        $(frobnicate)
>
># --- Create some dummy files to make the example work.
>
>frob.in: frob-step-1.bat frob-step-2.bat
>        @echo This is $@ >$@
>
>frob-step-1.bat: makefile
>        @echo @echo ... Frob1-ing %1 ... done. > $@
>
>frob-step-2.bat: makefile
>        @echo @echo ... Frob2-ing %1 ... done. > $@
>
>
># EOF
>
>
>D:\testmake>uname -a
>CYGWIN_NT-4.0 SCARTER 1.1.2(0.21/3/2) 2000-06-06 22:20 i686 unknown
>  [ OS: Windows NT 4.0 SP 5. ]
>  [ I also tested on Windows 98 -- had similar (not 
>    identical) problem. ]
>
>D:\testmake>echo %MAKE_MODE%
>%MAKE_MODE%
>  [ i.e., MAKE_MODE is not in the environment. ]
>
>
>D:\testmake>make_3793c --unix
>frobnicating target frob.out
>... Frob1-ing frob.in ... done.
>... Frob2-ing frob.out-step-1 ... done.
>  [ bad ]
>
>D:\testmake>make_3793c --win32
>frobnicating target frob.out
>... Frob1-ing frob.in ... done.
>... Frob2-ing frob.out-step-1 ... done.
>  [ bad ]
>
>D:\testmake>make_377c --unix
>frobnicating target frob.out
>frob-step-1.bat frob.in -o frob.out-step-1
>... Frob1-ing frob.in ... done.
>frob-step-2.bat frob.out-step-1 -o frob.out
>... Frob2-ing frob.out-step-1 ... done.
>  [ OK ]
>
>D:\testmake>make_377c --win32
>frobnicating target frob.out
>STEMDRIVE=C:
>make_377c: STEMDRIVE=C:: Command not found
>make_377c: *** [frob.out] Error 127
>  [ bad -- Chokes on canned sequence. ]
>
>D:\testmake>make_375c --unix
>frobnicating target frob.out
>frob-step-1.bat frob.in -o frob.out-step-1
>... Frob1-ing frob.in ... done.
>frob-step-2.bat frob.out-step-1 -o frob.out
>... Frob2-ing frob.out-step-1 ... done.
>  [ OK ]
>
>D:\testmake>make_377g
>frobnicating target frob.out
>frob-step-1.bat frob.in -o frob.out-step-1
>... Frob1-ing frob.in ... done.
>frob-step-2.bat frob.out-step-1 -o frob.out
>... Frob2-ing frob.out-step-1 ... done.
>  [ OK ]
>
>D:\testmake>make_374
>frobnicating target frob.out
>frob-step-1.bat frob.in -o frob.out-step-1
>... Frob1-ing frob.in ... done.
>frob-step-2.bat frob.out-step-1 -o frob.out
>... Frob2-ing frob.out-step-1 ... done.
>  [ OK ]

--
Want to unsubscribe from this list?
Send a message to cygwin-unsubscribe AT sourceware DOT cygnus DOT com

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019