Mail Archives: cygwin/2000/06/28/18:40:46
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 -