This is the mail archive of the cygwin@sourceware.cygnus.com mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

make win32 doesn't correctly handle canned sequences.


make --win32 does not correctly handle canned sequences (AKA 
multi-line, recursively-expanded variables, which are 
created with the "define/endef" directive). It appears that 
perhaps the memory which holds the canned sequence is being 
overwritten/corrupted.

The problem occurs with the Cygwin port of gnu make, 
versions 3.77, 3.79, and 3.79-2 (maybe others), but only 
in win32 mode (i.e., make --win32 ... OR 
set MAKE_MODE=win32 ...).

I've written a simple makefile (see below) which 
demonstrates the problem. Also below is a transcript of a 
session which shows the problem, and provides info on 
versions, etc.

Regards-
    Scott Carter

PS - Let me say thanks for your quick response on the 
last problem I reported (make win32 chokes on lone tab; 
23Jun2000). I never expected to have the problem fixed 
literally overnight. Great job! I downloaded make 3.79-2 and 
it seems to have solved the lone tab problem (on WinNT and 
Win98). And, I'm sorry I didn't get this one in sooner -- 
it might have saved you a release.

--------------------- Transcript ---------------------------

 [ For this demonstration, I removed sh.exe from my path 
   (renamed it). ]

D:\testmake>type makefile
# --- Filename: makefile

.PHONY : all

define MULTILINE_DEFINE
echo This is line 1 of MULTILINE_DEFINE
echo This is line 2 of MULTILINE_DEFINE
echo This is line 3 of MULTILINE_DEFINE
endef

all:
	$(MULTILINE_DEFINE)

# 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_3792c --win32
echo This is line 1 of MULTILINE_DEFINE
echo This is line 2 of MULTILINE_DEFINE
echo This is line 3 of MULTILINE_DEFINE
This is line 1 of MULTILINE_DEFINE
=B?;Ma?

make_3792c:     vE@: Command not found
make_3792c: *** [all] Error 127
  [ Some of the characters displayed have hex values greater
    than 0x7f, and therefore the display representation will
    differ from display to display. ]

D:\testmake>make_3792c
echo This is line 1 of MULTILINE_DEFINE
This is line 1 of MULTILINE_DEFINE
echo This is line 2 of MULTILINE_DEFINE
This is line 2 of MULTILINE_DEFINE
echo This is line 3 of MULTILINE_DEFINE
This is line 3 of MULTILINE_DEFINE


D:\testmake>make_379c --win32
echo This is line 1 of MULTILINE_DEFINE
echo This is line 2 of MULTILINE_DEFINE
echo This is line 3 of MULTILINE_DEFINE
This is line 1 of MULTILINE_DEFINE
IVE=C:
make_379c: IVE=C:: Command not found
make_379c: *** [all] Error 127

D:\testmake>make_379c
echo This is line 1 of MULTILINE_DEFINE
This is line 1 of MULTILINE_DEFINE
echo This is line 2 of MULTILINE_DEFINE
This is line 2 of MULTILINE_DEFINE
echo This is line 3 of MULTILINE_DEFINE
This is line 3 of MULTILINE_DEFINE


D:\testmake>make_377c --win32
echo This is line 1 of MULTILINE_DEFINE
echo This is line 2 of MULTILINE_DEFINE
echo This is line 3 of MULTILINE_DEFINE
This is line 1 of MULTILINE_DEFINE
IVE=C:
make_377c: IVE=C:: Command not found
make_377c: *** [all] Error 127

D:\testmake>make_377c
echo This is line 1 of MULTILINE_DEFINE
This is line 1 of MULTILINE_DEFINE
echo This is line 2 of MULTILINE_DEFINE
This is line 2 of MULTILINE_DEFINE
echo This is line 3 of MULTILINE_DEFINE
This is line 3 of MULTILINE_DEFINE


D:\testmake>make_377g --win32
make_377g: unrecognized option `--win32'
   [ This make appears NOT to be a Cygwin port -- it doesn't
     recognize --win32. ]

D:\testmake>make_377g
echo This is line 1 of MULTILINE_DEFINE
This is line 1 of MULTILINE_DEFINE
echo This is line 2 of MULTILINE_DEFINE
This is line 2 of MULTILINE_DEFINE
echo This is line 3 of MULTILINE_DEFINE
This is line 3 of MULTILINE_DEFINE



D:\testmake>make_3792c --version
GNU Make version 3.79, by Richard Stallman and Roland McGrath.
Built for i686-pc-cygwin
Copyright (C) 1988, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99
        Free Software Foundation, Inc.
   [...]
   [ This is the cygwin make v3.79-2, released 6/23/2000. ]

D:\testmake>make_379c --version
GNU Make version 3.79, by Richard Stallman and Roland McGrath.
Built for i686-pc-cygwin
Copyright (C) 1988, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99
        Free Software Foundation, Inc.
   [...]

D:\testmake>make_377c --version
GNU Make version 3.77, by Richard Stallman and Roland McGrath.
Copyright (C) 1988, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98
        Free Software Foundation, Inc.
   [...]


D:\testmake>make_377g --version
GNU Make version 3.77, by Richard Stallman and Roland McGrath.
Copyright (C) 1988, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98
        Free Software Foundation, Inc.
   [...]
   [ This one appears NOT to be a Cygwin port. I don't know 
     its origin. ]


--
Want to unsubscribe from this list?
Send a message to cygwin-unsubscribe@sourceware.cygnus.com


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]