Source file ocaml_abi.ml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
let create_v2 () =
  let open Error_handling.Monad_syntax in
  let open Dkml_install_api.Context.Abi_v2 in
  let is_32bit = Sys.int_size <= 32 in
  Host_abi.create_v2 () >>= fun (host_abi, _fl) ->
  match (host_abi, is_32bit) with
  | Windows_x86_64, true | Windows_x86, true ->
      return Dkml_install_api.Context.Abi_v2.Windows_x86
  | Windows_arm64, true | Windows_arm32, _ -> return Windows_arm32
  | Linux_x86_64, true | Linux_x86, _ -> return Linux_x86
  | Linux_arm64, true | Linux_arm32v7, true -> return Linux_arm32v7
  | Android_arm64v8a, true | Android_arm32v7a, true -> return Android_arm32v7a
  | Android_x86_64, true | Android_x86, _ -> return Android_x86
  | Linux_arm32v6, true -> return Linux_arm32v6
  | Darwin_arm64, true | Darwin_x86_64, true ->
      failwith
        (Fmt.str
           "%a does have a known 32bit mode but OCaml gave back a 32-bit int \
            size˝"
           Dkml_install_api.Context.Abi_v2.pp host_abi)
  | abi_64, false -> return abi_64