B0_ocaml
ocaml
support.
module Tool : sig ... end
OCaml toolchain tools.
module Code : sig ... end
Code generated by compilers.
module Conf : sig ... end
Toolchain configuration.
module Modname : sig ... end
Module names
module Modref : sig ... end
Module digested references.
module Modsrc : sig ... end
Module sources.
module Libname : sig ... end
Library names.
val libname : string -> Libname.t
libname n
is n
as an OCaml library name. This is a shortcut for Libname.v
and should be used in B0.ml
files
module Lib : sig ... end
Library information.
module Libresolver : sig ... end
Library resolvers.
val exe :
?wrap:(B0_unit.build_proc -> B0_unit.build_proc) ->
?doc:string ->
?meta:B0_meta.t ->
?c_requires:B0_std.Cmd.t ->
?requires:Libname.t list ->
?public:bool ->
?name:string ->
string ->
srcs:B0_srcs.sels ->
B0_unit.t
exe tool_name
is a build unit for an executable tool named tool_name
(without the platform specific extension).
public
indicates whether the bare name
is made available unscoped outside the unit definition scope (defaults to false
).doc
is the unit doc string.meta
is the initial metadata.c_requires
FIXME hack, something more sensitive should be done. This each of these options are passed as -cclib
options.requires
are the OCaml libraries required to compile the executable.name
is the name of the unit (defaults to n
).srcs
are the executable sources. All files with extension .ml
, .mli
, .c
and .h
are considered for compiling and linking the executable.wrap
allows to extend the build procedure you must call the given build procedure. TODO maybe remove once we have good Build fragments.val script :
?wrap:(B0_unit.build_proc -> B0_unit.build_proc) ->
?doc:string ->
?meta:B0_meta.t ->
?public:bool ->
?name:string ->
B0_std.Fpath.t ->
B0_unit.t
script file
is a build unit for an OCaml script in file
. The build unit simply checks that it typechecks and is runnable. Due to upstream limitations this is a hack. You should invoke your main as:
let () = if !Sys.interactive then () else main ()
public
indicates whether the basename of file
is made available unscoped outside the unit definition scope (defaults to false
).doc
is the unit doc stringmeta
is the initial metadatawrap
allows to extend the build procedure. You must call the given build procedure.FIXME file
should become a src so that it can be generated.
val test :
?wrap:(B0_unit.build_proc -> B0_unit.build_proc) ->
?doc:string ->
?meta:B0_meta.t ->
?requires:Libname.t list ->
?name:string ->
?run:bool ->
?long:bool ->
?srcs:B0_srcs.sel list ->
B0_std.Fpath.t ->
B0_unit.t
test file
is a test for an OCaml .ml
file
(and additional srcs
if specified). This is just exe
with added metadata predefined for a test and a name
derived from the basename of file
if unspecified:
B0_meta.test
is run
, default to true
.B0_meta.long
is long
, defaults to false
B0_meta.Action.cwd
is set to `Scope_dirval lib :
?wrap:(B0_unit.build_proc -> B0_unit.build_proc) ->
?doc:string ->
?meta:B0_meta.t ->
?c_requires:B0_std.Cmd.t ->
?requires:Libname.t list ->
?exports:Libname.t list ->
?public:bool ->
?name:string ->
Libname.t ->
srcs:B0_srcs.sels ->
B0_unit.t
lib n ~srcs
is a built unit for a library named n
made of sources srcs
.
public
indicates whether the library name n
is made available unscoped outside the scope of the unit definition (defaults to true
)doc
is the unit doc string.meta
is the initial metadata.c_requires
FIXME hack, something more sensitive should be done. This each of these options are passed as -cclib
options.requires
are the OCaml libraries required to compile the library.exports
are the OCaml libraries represented by this library.name
is the name of the build unit (default to n
with .
substituted by -
)srcs
are the library sources. extension .ml
, .mli
, .c
and .h
are considered for compiling and linking the executable.wrap
allows to extend the build procedure you must call the given build procedure. TODO maybe remove once we have good Build fragments.val deprecated_lib :
?wrap:(B0_unit.build_proc -> B0_unit.build_proc) ->
?doc:string ->
?meta:B0_meta.t ->
?exports:Libname.t list ->
?warning:string ->
?public:bool ->
?name:string ->
Libname.t ->
B0_unit.t
deprecated_lib n
is an empty build unit for a deprecated library named n
. Most arguments are like in lib
.
exports
is used exports
warning
is used for B0_meta.warning
, if unspecified a warning message is derived from exports
.B0_meta.deprecated
This is mostly needed if you need to process units or define your own. OCaml units set these key appropriately.
val tag : bool B0_meta.key
tag
indicates the entity is related to OCaml. For example this can be used to select OCaml build units.
val c_requires : B0_std.Cmd.t B0_meta.key
c_requires
hack for now this simply passes these options as -cclib
options.
val library : Libname.t B0_meta.key
library
on a unit specifies that the unit defines the library with the given name.
val modsrcs : Modsrc.t Modname.Map.t B0_std.Fut.t B0_meta.key
FIXME quick hack this should not be in meta, or not.
val requires : Libname.t list B0_meta.key
requires
on a unit specifies the OCaml libraries needed to compile a unit.
val exports : Libname.t list B0_meta.key
exports
on a library build unit specifies that the library exports these libraries.
See TODO.
module Compile : sig ... end
Compiling.
module Archive : sig ... end
Archiving.
module Link : sig ... end
Linking.
module Cobj : sig ... end
Compiled object information.
module Crunch : sig ... end
Crunching data into OCaml values.
val unit : B0_unit.t
unit
is the .ocaml
unit.
See b0 -- .ocaml --help
for more information.
val unit_ocaml : B0_unit.t
unit_ocaml
is the .ocaml.ocaml
action. The action of this unit forces a byte code build and loads the resulting build in the ocaml
toplevel.
See b0 -- .ocaml.ocaml --help
for more information.