Module B0_ocaml.Compile

OCaml and C stub compilation.

Compilation steps

val c_to_o : ?⁠post_exec:(B000.Op.t -> unit) -> ?⁠k:(int -> unit) -> B00.Memo.t -> hs:B0_std.Fpath.t list -> c:B0_std.Fpath.t -> o:B0_std.Fpath.t -> unit

c_to_obj m ~hs ~c ~o compiles c to the object file o using assuming c includes headers hs.

val mli_to_cmi : ?⁠post_exec:(B000.Op.t -> unit) -> ?⁠k:(int -> unit) -> ?⁠args:B0_std.Cmd.t -> ?⁠with_cmti:bool -> B00.Memo.t -> reads:B0_std.Fpath.t list -> mli:B0_std.Fpath.t -> o:B0_std.Fpath.t -> unit

mli_to_cmi m ~args ~with_cmti m ~reads ~mli ~o compiles mli to o. reads are the cmi files reads by the operation. with_cmti indicates whether the cmti file should be produced (defaults to true). args are additional arguments that will be added on the cli.

val ml_to_cmo : ?⁠post_exec:(B000.Op.t -> unit) -> ?⁠k:(int -> unit) -> ?⁠args:B0_std.Cmd.t -> ?⁠with_cmt:bool -> B00.Memo.t -> has_cmi:bool -> reads:B0_std.Fpath.t list -> ml:B0_std.Fpath.t -> o:B0_std.Fpath.t -> unit

ml_to_cmo m ~args ~with_cmt ~has_cmi ~reads ~ml ~o compiles ml file to a the cmo file o. reads are the cmi files read by the operation. has_cmi indicates whether the ml file has already a corresponding cmi file, in which case it should be in cmi_deps. with_cmt indicates whether the cmt file should be produced (defaults to true).

val ml_to_cmx : ?⁠post_exec:(B000.Op.t -> unit) -> ?⁠k:(int -> unit) -> ?⁠args:B0_std.Cmd.t -> ?⁠with_cmt:bool -> B00.Memo.t -> has_cmi:bool -> reads:B0_std.Fpath.t list -> ml:B0_std.Fpath.t -> o:B0_std.Fpath.t -> unit

ml_to_cmx m ~args ~with_cmt ~has_cmi ~reads ~ml ~o compiles ml file to a the cmx file o. reads are are the cmx and cmi files read by the operation. has_cmi indicates whether the ml file has already a corresponding cmi file, in which case it should be in cmi_deps. with_cmt indicates whether the cmt file should be produced (defaults to true).

val ml_to_impl : ?⁠post_exec:(B000.Op.t -> unit) -> ?⁠k:(int -> unit) -> ?⁠args:B0_std.Cmd.t -> ?⁠with_cmt:bool -> B00.Memo.t -> code:Cobj.code -> has_cmi:bool -> reads:B0_std.Fpath.t list -> ml:B0_std.Fpath.t -> o:B0_std.Fpath.t -> unit

ml_to_impl is ml_to_cmo or ml_to_cmx according to code.

val cstubs_archives : ?⁠post_exec:(B000.Op.t -> unit) -> ?⁠k:(int -> unit) -> ?⁠args:B0_std.Cmd.t -> B00.Memo.t -> c_objs:B0_std.Fpath.t list -> odir:B0_std.Fpath.t -> oname:string -> unit

cstubs_archives m ~args ~c_objs ~odir ~oname creates in directory odir C stubs archives for a library named oname.

val byte_archive : ?⁠post_exec:(B000.Op.t -> unit) -> ?⁠k:(int -> unit) -> ?⁠args:B0_std.Cmd.t -> B00.Memo.t -> has_cstubs:bool -> cobjs:B0_std.Fpath.t list -> odir:B0_std.Fpath.t -> oname:string -> unit

byte_archive m ~args ~has_cstubs ~cobjs ~obase creates in directory odir a bytecode archive named oname with the OCaml bytecode compilation objects cobjs.

val native_archive : ?⁠post_exec:(B000.Op.t -> unit) -> ?⁠k:(int -> unit) -> ?⁠args:B0_std.Cmd.t -> B00.Memo.t -> has_cstubs:bool -> cobjs:B0_std.Fpath.t list -> odir:B0_std.Fpath.t -> oname:string -> unit

native_archive m ~args ~has_cstubs ~cobjs ~obase creates in directory odir a native code archive named oname with the OCaml native code compilation objects cobjs.

val archive : ?⁠post_exec:(B000.Op.t -> unit) -> ?⁠k:(int -> unit) -> ?⁠args:B0_std.Cmd.t -> B00.Memo.t -> code:Cobj.code -> has_cstubs:bool -> cobjs:B0_std.Fpath.t list -> odir:B0_std.Fpath.t -> oname:string -> unit

archive is byte_archive or native_archive according to code.