Module B0_ocaml.Lib

Library information.

An OCaml library is a directory with interfaces and object files. OCaml libraries are resolved by name using a Libresolver.


type t

The type for libraries.

val make : libname:Libname.t -> requires:Libname.t list -> dir:B0_std.Fpath.t -> cmis:B0_std.Fpath.t list -> cmxs:B0_std.Fpath.t list -> cma:B0_std.Fpath.t option -> cmxa:B0_std.Fpath.t option -> c_archive:B0_std.Fpath.t option -> c_stubs:B0_std.Fpath.t list -> js_stubs:B0_std.Fpath.t list -> t

make ~libname ~cmis ~cmxs ~cma ~cmxa is a library named libname which requires libraries requires, and library directory dir, has cmis cmi files, cmxs cmx files, cma bytecode archive, cmxa native code archive and it's companion c_archive as well as c_stubs archives. Theoretically all files should be in dir.

val of_dir : B0_memo.t -> clib_ext:B0_std.Fpath.ext -> libname:Libname.t -> requires:Libname.t list -> dir:B0_std.Fpath.t -> archive:string option -> js_stubs:B0_std.Fpath.t list -> (t, string) Stdlib.result B0_std.Fut.t

of_dir m ~clib_ext ~libname ~requires ~dir ~archive is a library named libname which requires libraries requires, with library directory dir and library archive name archive (without extension and if any) and JavaScript stubs js_stubs. This looks up all files other files in dir and makes them ready in m. It also makes js_stubs files ready. clib_ext is the platform specific extension for C libraries.

Note. If dir doesn't follow the one library per directory convention this over-approximate cmis, cmxs and c_stubs files.

val of_unit : B0_build.t -> Conf.t -> B0_unit.t -> t option B0_std.Fut.t

lib_of_unit b ocaml_conf u defines a library from unit u by consulting requires, library and modsrcs. As a side effect this B0_build.requires u.


val libname : t -> Libname.t

libname l is the library name of l.

val requires : t -> Libname.t list

requires l are the libraries that are required by l.

val dir : t -> B0_std.Fpath.t

dir l is l's library directory.

val cmis : t -> B0_std.Fpath.t list

cmis l is the list of cmis for the library.

val cmxs : t -> B0_std.Fpath.t list

cmxs l is the list of cmxs for the library.

val cma : t -> B0_std.Fpath.t option

cma l is the library's cma file (if any).

val cmxa : t -> B0_std.Fpath.t option

cmxa l is the library's cmxa file (if any).

val c_archive : t -> B0_std.Fpath.t option

c_archive l is the library's cmxa's companion C archive. Must exist if the cmxa exists and, since 4.12 if cmxa is not empty.

val c_stubs : t -> B0_std.Fpath.t list

c_stubs l is the library's C stubs archives (if any).

val js_stubs : t -> B0_std.Fpath.t list

js_stubs l is the library's JavaScript stubs (if any).