Am Montag, den 11.07.2016, 16:22 +0900 schrieb Frédéric Bour: > - the compiler driver can produce multiple files on a single > invocation. File level dependencies turn into an hypergraph rather > than a graph (making a Makefile driven system hardly stable) Just a comment on this point. This is actually not a big problem when you record which rules have already been run, because then you can consider file1 file2 file3: file4 file5 file6 cmd just as file1: file4 file5 file6 cmd file2: file4 file5 file6 cmd file3: file4 file5 file6 cmd This is what omake does (and the rules are identified by their MD5 digests, which is very reliable). The limitation is that you cannot handle overlapping targets well, something like file1 file2: file4 cmd1 file1 file3: file4 cmd2 but this is something hardly any build system can do (i.e. alternate rules). Gerd > - an ML file alone is hard to understand out of context, because build > specification are kept separate > - many names and partially overlapping concepts; top-modules, > libraries, ocamlfind packages, opam packages. > > On 07/11/2016 03:15 PM, Martin DeMello wrote: > > > On Sun, Jul 10, 2016 at 4:03 AM, Gerd Stolpmann > > wrote: > > So how to fix this? In my opinion there are two solutions. > > You can > > either have a more intelligent ocamldep (e.g. one that reads > > in > > non-local cmi files and uses that information and also tries > > to > > interpret all project ml files at once and not file by file > > - btw, did > > anybody check whether there is an algorithm that precisely > > solves the > > problem?). The other solution path is to mark toplevel > > modules in the > > syntax of OCaml (e.g. you'd have to do "open ^M2" is M2 is a > > toplevel > > module). > > > > > > Would an acceptable third option be to simply record the dag > > explicitly in your build file? Working with google's build system > > [opensourced as bazel: http://www.bazel.io/] has given me a great > > appreciation for simply writing out build dependencies manually; > > sure, it is relatively tedious to have to write out the graph > > yourself rather than have ocamldep figure it out, but the time and > > effort to do so is a small fraction of the overall development time > > of your project, and the reward is a 100% reliable "detection" of > > the build topology. > > > > > > martin > -- ------------------------------------------------------------ Gerd Stolpmann, Darmstadt, Germany gerd@gerd-stolpmann.de My OCaml site: http://www.camlcity.org Contact details: http://www.camlcity.org/contact.html Company homepage: http://www.gerd-stolpmann.de ------------------------------------------------------------