From owner-freebsd-chat Thu May 3 10:14:22 2001 Delivered-To: freebsd-chat@freebsd.org Received: from smtp04.primenet.com (smtp04.primenet.com [206.165.6.134]) by hub.freebsd.org (Postfix) with ESMTP id BA51537B423 for ; Thu, 3 May 2001 10:14:19 -0700 (PDT) (envelope-from tlambert@usr02.primenet.com) Received: (from daemon@localhost) by smtp04.primenet.com (8.9.3/8.9.3) id KAA03534; Thu, 3 May 2001 10:14:18 -0700 (MST) Received: from usr02.primenet.com(206.165.6.202) via SMTP by smtp04.primenet.com, id smtpdAAAB4aG0g; Thu May 3 10:14:06 2001 Received: (from tlambert@localhost) by usr02.primenet.com (8.8.5/8.8.5) id KAA20516; Thu, 3 May 2001 10:27:15 -0700 (MST) From: Terry Lambert Message-Id: <200105031727.KAA20516@usr02.primenet.com> Subject: Re: -- recursive make considered harmful ?? To: atrens@nortelnetworks.com (Andrew Atrens) Date: Thu, 3 May 2001 17:27:15 +0000 (GMT) Cc: chat@FreeBSD.ORG In-Reply-To: from "Andrew Atrens" at May 02, 2001 09:58:22 PM X-Mailer: ELM [version 2.5 PL2] MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Sender: owner-freebsd-chat@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.org > Any considered opinions on this ? > > http://www.pcug.org.au/~millerp/rmch/recu-make-cons-harm.html > > I've set up a freebsd-style make system for our project which is blazingly > fast on freebsd (and solaris), but sucks lemons on NT (mostly because of > Cygwin fork+exec). > > Anyhow I've taken a lot of heat as a result of this paper, from people who > are more talk and less action than myself. I think all of the issues pointed out in the paper can be addressed with a top level include file that sets the tone for the build process. Personally, I have dealt with ordering dependencies by making my build process multipass. This lets me move things between passes without a lot of effort. If you have less of a hard correspondance between your build tree and your source repository (e.g. everything you use is stored in seperate modules, and checked out during the build process, if it's not already there), then you can do the same thing logically without additional Makefile magic by setting up top level ordered pass directories. This might be directories such as "pass1", "pass2", etc., into which you check out modules as subdirectories. My own project's build process is 6 passes, and involves arouns 3.8 million lines of code, so far, for the project components, a lot of which are open source and are built into target directories with "configure" being run, etc., and if I change one file anywhere, it just Does The Right Thing, including using gmake for some of the components (it gets built in pass2). The code compiles and runs on FreeBSD, Solaris, HP/UX, and Linux, and I have good reason to expect it to work in AIX, as well. I think that if you take the paper too seriously, or the complaints of people without a decent "make" program too seriously, that you are going to be doomed to mediocrity; a prohibition against tricky things is a prohibition against clever and innovative soloutions. Terry Lambert terry@lambert.org --- Any opinions in this posting are my own and not those of my present or previous employers. To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-chat" in the body of the message