Changes by: Jason Hickey (jyh at cs.caltech.edu)
Date: 2005-05-01 14:16:59 -0700 (Sun, 01 May 2005)
Revision: 925
Log message:
Added more precise .SCANNER dependencies.
The rules look like the following, where $& represents the results of the previous scan.
.SCANNER: %.cmi: :value: $(search-path-exists $(OCAMLINCLUDES), $(replacesuffixes .cmi .cmo .cmx, .mli .ml .ml, $&))
.SCANNER: %.cmo %.cmx: :value: $(search-path-exists $(OCAMLINCLUDES), $(replacesuffixes .cmi .cmo .cmx, .mli .ml .ml, $&))
.SCANNER: %$(EXT_OBJ): :value: $(digest-path-exists $(INCLUDES), $&)
The intent here is that omake uses the search path to find the dependent files,
and the scanner is considered out-of-date if the location of a file moves.
For OCaml files, it is just the location of the .ml and .mli files.
For C files, it is the location *and* the contents of the files.
There is a moderate cost to this (it adds about 1-2sec to a MetaPRL compile).
Also, scanners will run more often. In particular it will take 2 runs of
omake to reach a scanner fixpoint because the value dependency is based
on the results of the previous omake run.