package b0
Install
dune-project
Dependency
Authors
Maintainers
Sources
sha512=e9aa779e66c08fc763019f16d4706f465d16c05d6400b58fbd0313317ef33ddea51952e2b058db28e65f7ddb7012f328c8bf02d8f1da17bb543348541a2587f0
doc/b0.file/B0_ocaml/index.html
Module B0_ocaml
Source
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.t
exe tool_name
is a build unit for an executable tool named tool_name
(without the platform specific extension).
public
indicates whether the barename
is made available unscoped outside the unit definition scope (defaults tofalse
).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 ton
).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 offile
is made available unscoped outside the unit definition scope (defaults tofalse
).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
isrun
, default totrue
.B0_meta.long
islong
, defaults tofalse
B0_meta.Action.cwd
is 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.t
lib n ~srcs
is a built unit for a library named n
made of sources srcs
.
public
indicates whether the library namen
is made available unscoped outside the scope of the unit definition (defaults totrue
)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 ton
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 usedexports
warning
is 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.