B0_ocaml.Cobj
Compiled object information.
val archive_ext_of_code : Code.t -> B0_std.Fpath.ext
archive_ext_of_code code
is .cma
or .cmxa
according to code
.
val object_ext_of_code : Code.t -> B0_std.Fpath.ext
object_ext_of_code code
is .cmo
or .cmx
according to code
.
The type for compilation objects. This can represent one of a cmi
, cmti
, cmo
, cmx
, cmt
, cma
or cmxa
file.
val file : t -> B0_std.Fpath.t
file c
is the file path of c
.
val defs : t -> Modref.Set.t
defs c
are the modules defined by c
. If there's more than one you are looking an archive.
val deps : t -> Modref.Set.t
deps c
is the set of modules needed by defs c
. More precisely these are the module interfaces imported by c
. See also link_deps
.
val link_deps : t -> Modref.Set.t
link_deps c
is the set of modules needed to link defs c
.
Note. Unclear whether this is the right data. Basically these are the module references that of deps
whose name is in the required globals (bytecode) or imported implementations (native code) as reported by ocamlobjinfo. Initially we'd use deps
for link dependencies but it turns out that this may break on certain install structures. It's unclear whether we need both deps
and link_deps
and/or if that's the correct information.
val pp : t B0_std.Fmt.t
pp
formats an compilation object.
val sort : ?deps:(t -> Modref.Set.t) -> t list -> t list * Modref.Set.t
sort ~deps cobjs
is cobjs
stable sorted in dependency order according to deps
(defaults to link_deps
), tupled with external dependencies needed by cobjs
.
val write : B0_memo.t -> cobjs:B0_std.Fpath.t list -> o:B0_std.Fpath.t -> unit
write m ~cobjs o
writes information about the compilation cobjs
to o
.
val read : B0_memo.t -> B0_std.Fpath.t -> t list B0_std.Fut.t
read m file
has the cobjs
of a write
to file
.
val of_string :
?file:B0_std.Fpath.t ->
string ->
(t list, string) Stdlib.result
of_string ~file data
parses compilation object information from data
as output by Tool.ocamlobjinfo
assuming it was read from file
(defaults to B0_std.Fpath.dash
).