Module Misc.RuntimeID

module RuntimeID: sig .. end

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

type t = private {
   dev : bool; (*

true if this not an unaltered official release of OCaml

*)
   release : int; (*

Release number (OCaml 5.5 is release 21)

*)
   reserved : int; (*

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

value

header

*)
   no_flat_float_array : bool; (*

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

--disable-flat-float-array

)

*)
   fp : bool; (*

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

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

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

--enable-tsan

)

*)
   int31 : bool; (*

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

*)
   static : bool; (*

true if dynamic loading of libraries is not supported

*)
   no_compression : bool; (*

true if compressed marshalling is not supported

*)
   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 Misc.RuntimeID.t

val of_string : string -> t option

Converts the 4-character representation back to a Misc.RuntimeID.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 Misc.RuntimeID.make_bytecode if backend = Sys.Bytecode and Misc.RuntimeID.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 Misc.RuntimeID.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.