package b0
Install
dune-project
Dependency
Authors
Maintainers
Sources
sha512=e9aa779e66c08fc763019f16d4706f465d16c05d6400b58fbd0313317ef33ddea51952e2b058db28e65f7ddb7012f328c8bf02d8f1da17bb543348541a2587f0
doc/b0.file/B0_ocaml/index.html
Module B0_ocamlSource
ocaml support.
Toolchain
Modules
Libraries
libname n is n as an OCaml library name. This is a shortcut for Libname.v and should be used in B0.ml files
Library resolvers.
Build units
Executables
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.texe tool_name is a build unit for an executable tool named tool_name (without the platform specific extension).
publicindicates whether the barenameis made available unscoped outside the unit definition scope (defaults tofalse).docis the unit doc string.metais the initial metadata.c_requiresFIXME hack, something more sensitive should be done. This each of these options are passed as-ccliboptions.requiresare the OCaml libraries required to compile the executable.nameis the name of the unit (defaults ton).srcsare the executable sources. All files with extension.ml,.mli,.cand.hare considered for compiling and linking the executable.wrapallows 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.tscript 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 ()publicindicates whether the basename offileis made available unscoped outside the unit definition scope (defaults tofalse).docis the unit doc stringmetais the initial metadatawrapallows 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.ttest 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.testisrun, default totrue.B0_meta.longislong, defaults tofalseB0_meta.Action.cwdis set to `Scope_dir
Libraries
val 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.tlib n ~srcs is a built unit for a library named n made of sources srcs.
publicindicates whether the library namenis made available unscoped outside the scope of the unit definition (defaults totrue)docis the unit doc string.metais the initial metadata.c_requiresFIXME hack, something more sensitive should be done. This each of these options are passed as-ccliboptions.requiresare the OCaml libraries required to compile the library.exportsare the OCaml libraries represented by this library.nameis the name of the build unit (default tonwith.substituted by-)srcsare the library sources. extension.ml,.mli,.cand.hare considered for compiling and linking the executable.wrapallows 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.tdeprecated_lib n is an empty build unit for a deprecated library named n. Most arguments are like in lib.
exportsis usedexportswarningis used forB0_meta.warning, if unspecified a warning message is derived fromexports.- The unit is tagged with
B0_meta.deprecated
Metadata
This is mostly needed if you need to process units or define your own. OCaml units set these key appropriately.
tag indicates the entity is related to OCaml. For example this can be used to select OCaml build units.
c_requires hack for now this simply passes these options as -cclib options.
library on a unit specifies that the unit defines the library with the given name.
FIXME quick hack this should not be in meta, or not.
requires on a unit specifies the OCaml libraries needed to compile a unit.
exports on a library build unit specifies that the library exports these libraries.
Build fragments
See TODO.