This way, when an external library is reinstalled, jbuilder knows to
rebuild things.
Currently, because the library dependencies transitive closures are
computed dynamically and jbuilder doesn't yet support dynamic targets,
every single rule has to depend on all the external files.
When jbuilder support dynamic targets, we can setup one alias per
external directory.
Tested the build of 97 Jane Street repository at once. No slow down
observed for the initial build.
Then a null build goes from ~1.5s to 2s. The test case is a bit
extreme so it's bot that bad given the benefits.
- Make targets explicit b7ad08df84.
- Get rid of Vfile e73fd90b65.
Without vfile we need some new concepts to avoid parsing the requires
file multiple times and with vfile it's annoying to specify the
dependencies by hand.
Will leave that for future work. Just use memoize where it make sense,
for instance when we read the result from only the current directory
(for instance the ocamldep stuff).
Moved most of the global values computed at the beginning of
Gen_rules.Gen to Super_context.t. This will allow to split
gen_rules.ml into multiple files.