[
Home
]
[ Index:
by date
|
by threads
]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: | 1998-09-11 (17:35) |
From: | Xavier Leroy <leroy@w...> |
Subject: | Re: ocamlopt and ocamldep |
> The ocamldep utility in OCaml 2.0 creates for a file concept.mli that > uses modules Bitrelation and Bitset a dependency of the following > form: > > concept.cmi: bitrelation.cmo bitset.cmo This is because bitrelation and bitset do not have an explicit interface (.mli file). So, their interfaces actually depend on their source file (.ml file), but "make" has a hard time understanding this; the dependency on the .cmo above is what I've found to be most understandable to "make". > When compiling for native code this causes uncessessary recompilations > of the files bitrelation.ml and bitset.ml: > bitset.ml and bitrelation are already compiled to *.cmx, *.cmi, and > *.o. Because of the dependency generated by ocamldep they get > recompiled using the *byte* code compiler and thus new *.cmi files are > created as well. > Should cmi-files depend on cmx-files when compiling for native code? My feeling is that it would complicate the Makefiles for a fairly small benefit. If you don't like the occasional calls to ocamlc, you could write .mli files for all your modules (it's good style anyway). > This does not matter in most cases since OCaml compiles very fast. I > suspect the recompilation to cause subtle 'inconsistent assumptions > over interface' errors in conjunction with -unsave -noassert compiler > flags. However, I was not able to find a small example for this mail > that reproduces the error. If you can find one, please send it and I'll look at the problem. Regards, - Xavier Leroy