Module B0_ocaml

ocaml support.

Toolchain

module Tool : sig ... end

OCaml toolchain tools.

module Code : sig ... end

Handling generated code.

module Conf : sig ... end

Toolchain configuration.

Modules

module Modname : sig ... end

Module names

module Modref : sig ... end

Module digested references.

module Modsrc : sig ... end

Module sources.

Libraries

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.

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 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 string
  • meta is the initial metadata
  • wrap 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.

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 -> ?public:bool -> ?name:string -> Libname.t -> srcs:B0_srcs.sels -> B0_unit.t

lib n ~srcs is a built unit for a library named l made of sources src.

  • public indicates whether the library name name 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.
  • 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.

Metadata

This is only needed if you need to process units or define your own. Both exe and lib set these keys 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 build unit specifies that the unit defines the library with the given name.

val deprecated_library : [ `For of Libname.t | `Msg of string ] B0_meta.key

deprecated_library on library build unit specifies that the library unit name was deprecated for another library or that it's use show `Msg to the end user.

FIXME quick hack this should not be in meta, or not.

val requires : Libname.t list B0_meta.key

requires on a build unit specifies the OCaml libraries needed to compile a unit.

Build fragments

See TODO.

Toolchain operations

module Compile : sig ... end

Compiling.

module Archive : sig ... end

Archiving.

Linking.

Compiled object information

module Cobj : sig ... end

Compiled object information.

Crunching

module Crunch : sig ... end

Crunching data into OCaml values.

Actions

val action : B0_action.t

action is the .ocaml action.

See b0 -- .ocaml --help for more information.

val action_ocaml : B0_action.t

action_ocaml is the .ocaml.ocaml action. This action forces a byte code build and loads the resulting build in the ocaml toplevel.

See b0 -- .ocaml.ocaml --help for more information.