From mboxrd@z Thu Jan 1 00:00:00 1970 Received: (from majordomo@localhost) by pauillac.inria.fr (8.7.6/8.7.3) id UAA02057; Sun, 5 Sep 2004 20:45:59 +0200 (MET DST) X-Authentication-Warning: pauillac.inria.fr: majordomo set sender to owner-caml-list@pauillac.inria.fr using -f Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by pauillac.inria.fr (8.7.6/8.7.3) with ESMTP id UAA03082 for ; Sun, 5 Sep 2004 20:45:57 +0200 (MET DST) Received: from qrnik.knm.org.pl (paf87.warszawa.sdi.tpnet.pl [217.96.225.87]) by concorde.inria.fr (8.13.0/8.13.0) with ESMTP id i85IjuCI031993 (version=TLSv1/SSLv3 cipher=EDH-RSA-DES-CBC3-SHA bits=168 verify=NO) for ; Sun, 5 Sep 2004 20:45:57 +0200 Received: from qrczak by qrnik.knm.org.pl with local (Exim 3.36 #1) id 1C421O-000584-00; Sun, 05 Sep 2004 20:45:50 +0200 To: skaller@users.sourceforge.net Cc: caml-list Subject: Re: [Caml-list] Announcing the OMake build system version 0.9.1 References: <4139ECD3.1050708@cs.caltech.edu> <001e01c492a6$872c7280$19b0e152@warp> <413A0921.7030607@ntlworld.com> <413A1E89.10806@libertysurf.fr> <1094361655.3352.476.camel@pelican.wigram> <87hdqc3kfr.fsf@qrnik.zagroda> <1094396893.3352.635.camel@pelican.wigram> <87sm9w4tfk.fsf@qrnik.zagroda> <1094403880.3352.751.camel@pelican.wigram> From: "Marcin 'Qrczak' Kowalczyk" Mail-Followup-To: skaller@users.sourceforge.net, caml-list Date: Sun, 05 Sep 2004 20:45:50 +0200 In-Reply-To: <1094403880.3352.751.camel@pelican.wigram> (skaller@users.sourceforge.net's message of "06 Sep 2004 03:04:40 +1000") Message-ID: <87zn44v9k1.fsf@qrnik.zagroda> User-Agent: Gnus/5.1006 (Gnus v5.10.6) Emacs/21.3 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Miltered: at concorde with ID 413B5EE4.000 by Joe's j-chkmail (http://j-chkmail.ensmp.fr)! X-Loop: caml-list@inria.fr X-Spam: no; 0.00; caml-list:01 marcin:01 'qrczak':01 kowalczyk:01 qrczak:01 sourceforge:01 outputs:01 dependencies:01 dependencies:01 abort:01 converge:01 marcin:01 kowalczyk:01 qrczak:01 writes:01 Sender: owner-caml-list@pauillac.inria.fr Precedence: bulk skaller writes: > together these two functions conspire to determine which > input files generate which outputs. So I must either explicitly tell the dependencies, or run a script which computes them. Same as in make. Assume that I forget that compilation of a particular file also reads another included file, i.e. forget one dependency link. Then after changing the included file, the target will not be rebuilt (I don't believe that it will, because then all other targets are in the same situation and everything would be rebuilt, which is impractical). So *all* dependencies must be specified. Same as in make. The difference is in that that "changed" is determined by file contents rather than time stamps, that compilation is repeated until it stabilizes, and in the language the makefile is written in. > If you try to include a file that is generated, > all is well even if it is generated *after* you > include it. This implies that a compile error doesn't abort the compilation (because the error might result from lack of source which will be made later). So if I made a fatal error in a C header file included in many C sources, the time to rebuild all of them and detect the error multiple times will be wasted. The time to compile good but out of date files is sometimes wasted too. Imagine 3 modules: module A module B uses modules A and C module C uses module A where "uses" actually means "reexports at least a part of it, such that changes in one interface change the other". The modules happen to be processed in this order. Someone changed module A. Then A is recompiled; B is recompiled because A changed; C is recompiled because A changed; B is recompiled *again* because C changed. 'Make' would know that it makes no sense to compile B before C. > More generally this will work even with circular > dependencies, provided of course you design the > system so it converges. > > As a counter-example: latex doesn't always converge. It's the only counter-example I know. -- __("< Marcin Kowalczyk \__/ qrczak@knm.org.pl ^^ http://qrnik.knm.org.pl/~qrczak/ ------------------- To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/ Beginner's list: http://groups.yahoo.com/group/ocaml_beginners