Path: utzoo!utgpu!jarvis.csri.toronto.edu!rutgers!tut.cis.ohio-state.edu!ucbvax!ulysses!hector!ekrell From: ekrell@hector.UUCP (Eduardo Krell) Newsgroups: comp.unix.wizards Subject: Re: Bugs in the AT&T Toolchest program 'nmake' Keywords: nmake Message-ID: <11562@ulysses.homer.nj.att.com> Date: 20 May 89 00:45:00 GMT References: <1640@internal.Apple.COM> <6561@ardent.UUCP> Sender: netnews@ulysses.homer.nj.att.com Reply-To: ekrell@hector.UUCP (Eduardo Krell) Organization: AT&T Bell Laboratories Lines: 50 In article <6561@ardent.UUCP> mac@mrk.ardent.com (Michael McNamara) writes: > I would strongly suggest that you get your money back from >AT&T for nmake, and get gnu-make from the Free Software Foundation. Why would you want to do that? nmake is much more powerful than gnu-make. > nmake is 1) quite buggy, and 2) does not use standard >makefiles. That particular version of nmake being distributed by the Toolchest might be buggy, but newer versions are not. Of course it doesn't use standard makefiles: they specify too much details. nmake makefiles are smaller by an order of magnitude. > gnu-make is 1) free, 2) can use standard makefiles 3) has the >multiple jobs, load average sensitivity and other featues of nmake. But can gnu-make prevent you from running simultaneous yacc jobs on the same directory? This wouldn't work as yacc uses a fixed file name (y.tab.c) which would be overwritten by the multiple yacc's (yes, nmake does know about yacc and other tools which can't be run in parallel). > gnu-make also has non standard makefile extentions, but you >do not need to use them to get the power of parallel make, which is >what I consider to be the main virtue of nmake & gnu-make. The parallel jobs facility is not the main virtue of nmake. The main virtue of nmake is that it uses a statefile to record what it does and it doesn't just rely on time stamps on the files to determine whether they need to be recompiled or not. This guarantees that all (and only those) files which need to be recompiled will be. Other big wins: * The implicit dependency on #include'd files (which nmake finds out on its own). * Automatic generation of -I flags for the compiler for each source file to look in the right directories where header files are. * The use of global makefiles with rules tailored to a particular environment/project. Eduardo Krell AT&T Bell Laboratories, Murray Hill, NJ UUCP: {att,decvax,ucbvax}!ulysses!ekrell Internet: ekrell@ulysses.att.com