Path: csiph.com!x330-a1.tempe.blueboxinc.net!usenet.pasdenom.info!gegeweb.org!de-l.enfer-du-nord.net!feeder1.enfer-du-nord.net!feeder.news-service.com!cyclone02.ams2.highwinds-media.com!news.highwinds-media.com!npeersf01.ams.highwinds-media.com!newsfe26.ams2.POSTED!00000000!not-for-mail From: Jonathan de Boyne Pollard User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.9.2.17) Gecko/20110414 Thunderbird/3.1.10 MIME-Version: 1.0 Newsgroups: comp.unix.programmer,comp.os.ms-windows.programmer.win32,comp.os.os2.programmer.misc Subject: Re: Makefile dependency graphs References: <1de5e7b8-42a1-47c6-9fd6-ad2620c412de@r33g2000prh.googlegroups.com> <838c970a-2b0d-41a8-a029-f5ec491bdbd1@v36g2000prm.googlegroups.com> <835fb0fd-4cd5-4caf-9d8d-c5022400d9fb@d19g2000prh.googlegroups.com> <0olp88-1qn.ln1@wilbur.25thandClement.com> <83a3dddf-e528-42ec-9156-14c62d652bd3@d26g2000prn.googlegroups.com> In-Reply-To: <83a3dddf-e528-42ec-9156-14c62d652bd3@d26g2000prn.googlegroups.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Message-ID: Lines: 49 NNTP-Posting-Host: 86.20.254.174 X-Complaints-To: http://netreport.virginmedia.com X-Trace: newsfe26.ams2 1304107641 86.20.254.174 (Fri, 29 Apr 2011 20:07:21 UTC) NNTP-Posting-Date: Fri, 29 Apr 2011 20:07:21 UTC Organization: virginmedia.com Date: Fri, 29 Apr 2011 20:08:33 +0100 Xref: x330-a1.tempe.blueboxinc.net comp.unix.programmer:267 comp.os.ms-windows.programmer.win32:247 comp.os.os2.programmer.misc:214 > I've found 3 distinct problems that require some interesting "makefile > coding" to get incrementally correct. > > 1- Remove a node from a wildcard list. [...] > 2- Add a node which hides another on a search path. [...] > 3- Change compilation options. [...] > You're following a path that has been trodden before, long since. Dan Bernstein identified these same issues years ago. He covered more in mail messages than has, alas, survived on WWW pages, but here are the WWW pages: http://cr.yp.to/redo.html http://cr.yp.to/redo/honest-script.html http://cr.yp.to/redo/honest-nonfile.html I know of two redo implementations. There's the one from 2010 that's in macports: http://apenwarr.ca/log/?m=201012#14 http://trac.macports.org/browser/trunk/dports/devel/redo/Portfile https://github.com/apenwarr/redo/blob/master/Documentation/redo.md#readme And there's the 2006 one by Alan Grosskurth: http://grosskurth.ca/papers/mmath-thesis.pdf The downside of the "redo" model is that it makes it difficult to separate object code directories from source code directories. But the operation of the tool (including the implicit redo-ifcreates of the .do files themselves) does indicate what one has to incorporate into a build mechanism if one truly wants the so-called "incremental correctness" that you are striving for. (Bernstein calls it "honest dependencies", notice.) I was rather hoping that you had something new, but it looks like you've covered the same ground as others have before. This is not, of course, a bad thing. Independently coming to the same conclusions is a good thing. It provides evidence that those conclusions are right. But from the perspective of people like me (I wrote my first "make" replacement sometime around 1991.), the problems to be tackled *now* are not what the problems are that "make" has, which (as noted) have long since been identified. The problems to be tackled *now* are how to make something like "redo" usable for projects where one has needs such as read-only source trees with separate object trees, multiple object trees for cross-compiling to multiple target platforms, and so forth. One can do those with "make". It's not obvious how one does them with "redo".