Module Misc.RuntimeID

Manipulation of the Runtime ID values used to mangle the filenames of shared libraries and the bytecode interpreters.

type t = private {
  1. dev : bool;
    (*

    true if this not an unaltered official release of OCaml

    *)
  2. release : int;
    (*

    Release number (OCaml 5.5 is release 21)

    *)
  3. reserved : int;
    (*

    The number of reserved bits (0-31) in the

    value

    header

    *)
  4. no_flat_float_array : bool;
    (*

    true if float arrays must be boxed (i.e. configured with

    --disable-flat-float-array

    )

    *)
  5. fp : bool;
    (*

    true if frame pointers are required (i.e. configured with

    --enable-frame-pointers
    *)
  6. tsan : bool;
    (*

    true if ThreadSanitizer (TSAN) is required (i.e. configured with

    --enable-tsan

    )

    *)
  7. int31 : bool;
    (*

    true if the platform has 31-bit ints (i.e. 32-bit systems)

    *)
  8. static : bool;
    (*

    true if dynamic loading of libraries is not supported

    *)
  9. no_compression : bool;
    (*

    true if compressed marshalling is not supported

    *)
  10. ansi : bool;
    (*

    true if Unicode support on Windows is disabled

    *)
}

Runtime IDs

val make_zinc : ?dev:bool -> ?release:int -> ?no_flat_float_array:bool -> ?int31:bool -> ?static:bool -> ?no_compression:bool -> unit -> t

Returns the Zinc Runtime ID for the given parameters (using default values from Config and Sys as necessary)

val make_bytecode : ?dev:bool -> ?release:int -> ?reserved:int -> ?no_flat_float_array:bool -> ?int31:bool -> ?static:bool -> ?no_compression:bool -> ?ansi:bool -> unit -> t

Returns the Bytecode Runtime ID for the given parameters (using default values from Config and Sys as necessary)

val make_native : ?dev:bool -> ?release:int -> ?reserved:int -> ?no_flat_float_array:bool -> ?fp:bool -> ?tsan:bool -> ?int31:bool -> ?static:bool -> ?no_compression:bool -> ?ansi:bool -> unit -> t

Returns the Native Runtime ID for the given parameters (using default values from Config and Sys as necessary)

val is_zinc : t -> bool

is_zinc t is true if t can be used as a Zinc Runtime ID

val is_bytecode : t -> bool

is_bytecode t is true if t can be used as a Bytecode Runtime ID

val is_native : t -> bool

is_native t is true if t can be used as a Native Runtime ID

val to_string : t -> string

Returns the 4-character representation of a t

val of_string : string -> t option

Converts the 4-character representation back to a t

val ocamlrun : string -> t -> string

ocamlrun variant runtime_id returns the name for the runtime for the given Zinc Runtime ID.

val shared_runtime : ?runtime_id:t -> ?host:string -> ?prefix:string -> Sys.backend_type -> string

shared_runtime ?runtime_id ?host ?prefix backend returns the name of the shared runtime for the given backend. runtime_id defaults to make_bytecode if backend = Sys.Bytecode and make_native if backend = Sys.Native and host to Config.target. prefix defaults to "-l" and the function does not append Config.ext_dll.

e.g. shared_runtime ~host:"x86_64-pc-linux-gnu" Native = "-lasmrun-x86_64-pc-linux-gnu-b100" for a default OCaml 5.5 build on a 64-bit system with shared library support and compressed marshalling.

val stubslib : ?runtime_id:t -> ?host:string -> string -> string

stublibs ?runtime_id ?host dllname returns the name for the given DLL basename. dllname should not include Config.ext_dll (and the result does not include it either). host and runtime_id default to Config.target and make_bytecode respectively.

e.g. stubslib ~host:"x86_64-pc-linux-gnu" "dllunixbyt" = "dllunixbyt-x86_64-pc-linux-gnu-001b" for a default OCaml 5.5 build on a 64-bit system with shared library support and compressed marshalling.