Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!mnetor!uunet!husc6!mit-eddie!ll-xn!ames!ucbcad!ucbvax!ulysses!hector!ekrell From: ekrell@hector.UUCP (Eduardo Krell) Newsgroups: comp.unix.wizards Subject: Re: Ever heard of mk? (was Re: Thoughts about "make") Message-ID: <3066@ulysses.homer.nj.att.com> Date: Fri, 2-Oct-87 13:05:45 EDT Article-I.D.: ulysses.3066 Posted: Fri Oct 2 13:05:45 1987 Date-Received: Tue, 6-Oct-87 04:44:55 EDT References: <1700@botter.cs.vu.nl> <421@virginia.acc.virginia.edu> Sender: daemon@ulysses.homer.nj.att.com Reply-To: ekrell@hector (Eduardo Krell) Distribution: world Organization: AT&T Bell Labs, Murray Hill Lines: 54 In article <421@virginia.acc.virginia.edu> scl@virginia.EDU (Steve Losen) writes: (about "mk") >Would someone from AT&T please let us know the status of this product >and how we might go about getting it? You should take a look at nmake (aka newmake, aka 4th generation make), which I think is superior to mk. I already sent a note to the original poster describing nmake and how it solves almost all the complaints he had over old make. nmake is available to the outside world thru AT&T Toolchest. nmake has been described in past Usenix conferences. Some key features are: no need to specify dependencies on #include'd files. nmake does it automatically. Moreover, it will generate -I flags for cpp to look up the directories where the header files were found. You can use a .SOURCE.h : incl headers /usr/local/include and it will look for all the #include'd files in those directories (and then /usr/include, of course). nmake remembers the command line flags used to compile every file, so, for instance, if you change a -D flag or a -I flag to look for header files in a different directory, nmake will recompile. It keeps a state file with all the info on how every file was generated and the time stamp. "touch"ing a file won't fool nmake. The makefiles are compiled so that future runs of nmake won't require the Makefiles to be read and parsed again. Of course, if you've changed the Makefiles, they will be recompiled automatically. nmake has really a knowledge base on Unix (but most of it is not built into nmake, but rather put into a "Makerules" file which has all the "metarules"). For instance, If I have a library libfoo.a that contains a couple of .o's generated from their corresponding .c's and a yacc output file, all I need to specify in nmake is libfoo.a :: a.c b.c x.c gram.y (BSD) What that one line will do is compile a.c, b.c and x.c into the .o's, with a -DBSD flag depending on what BSD has been set previously in the makefile. It will run yacc on gram.y, move y.tab.c to gram.o, run ar to create the archive or update the archive and remove the .o's. There are many more features, but this gives you a feeling for what you can do. Eduardo Krell AT&T Bell Laboratories, Murray Hill {ihnp4,seismo,ucbvax}!ulysses!ekrell