Date: Tue, 31 Dec 1996 08:35:44 +0200 (IST) From: Eli Zaretskii To: Dennis Bjorklund cc: djgpp AT delorie DOT com Subject: Re: make 3.75 In-Reply-To: <5a8491$925@nyheter.chalmers.se> Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII On 30 Dec 1996, Dennis Bjorklund wrote: > I changed from Make 3.73 to 3.75 since I wanted make to work with long > filenames (it didn't work with pattern rules). But now my old makefiles > doesn't work. I use 4dos and an action like this: > > a: > gcc a.cc |& list /s > > wich should send all output to list. The & means that stderr also is sent to > list. It worked with the old make and doesn't work with the new one. > > It sayes that & is not a command. The DJGPP port of Make 3.75 has radically changed the way commands are executed. The new Make tries very hard to not call the shell, unless it's a Unix-like shell (which 4DOS is not), but calls `system' from the DJGPP library instead, so you don't lose long command lines when using redirection and pipes. While `system' emulates all the functionality of COMMAND.COM and then some, it doesn't know about 4DOS-specific features such as "|&". The best way to deal with this is to change your Makefiles so that they don't use 4DOS-specific tricks. > I could fixed the first problem with redir. Then he complains that list > is unknown. This command should have worked: a: redir -eo gcc a.cc | list /c If it didn't, please try to understand why it fails. Make shouldn't have any problems with built-in commands of your SHELL. If it doesn't find `list' with any executable extension on the PATH, it should prepend "4dos.com /c " and try again. How exactly do you set your SHELL variable?