On Sun, Jul 10, 2016 at 4:03 AM, Gerd Stolpmann <info@gerd-stolpmann.de> 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