diff options
author | Pierre Letouzey <pierre.letouzey@inria.fr> | 2014-02-27 18:03:49 +0100 |
---|---|---|
committer | Pierre Letouzey <pierre.letouzey@inria.fr> | 2014-02-27 18:48:23 +0100 |
commit | e372b7244bcb8cc449196c29a7dabee6f7f84aa2 (patch) | |
tree | d249777e9bdc9ba03aaf1f4455f1a1aee3e8c274 /library/heads.ml | |
parent | ca64cc032a3f03381d00d7c9b128688f3f920844 (diff) |
Makefile: re-introduce 2 phases to avoid make strange -include's
Yet another revision of the build system. We avoid relying on the awkward
include-which-fails-but-works-finally-after-a-retry feature of gnu make.
This was working, but was quite hard to understand. Instead, we reuse
the idea of two explicit phases (as in 2007 and its stage{1,2,3}), but
in a lighter way. The main Makefile calls Makefile.build twice :
- first for building grammar.cma (and q_constr.cmo), with a restricted
set of .ml4 to consider (see variables BUILDGRAMMAR and ML4BASEFILES).
- then on the true target(s) asked by the user (using the special variable
MAKECMDGOALS).
In pratice, this should change very little to the concrete developper's life,
let me know otherwise. A few more messages of make due to the explicit
first sub-call, but no more strange "not ready yet" messages...
Btw: we should handle correctly now the parallel compilation of multiple
targets (e.g. make -jX foo bar). As reported by Pierre B, this was
triggering earlier two separate sub-calls to Makefile.build, one
for foo, the other for bar, with possibly nasty interactions in case
of parallelism.
In addition, some cleanup of Makefile.build, removal of useless :: rules,
etc etc.
Diffstat (limited to 'library/heads.ml')
0 files changed, 0 insertions, 0 deletions