summaryrefslogtreecommitdiff
path: root/ocamltest/ocaml_backends.ml
blob: 71e75a49eb42d1a71608e3407875293ec01183d6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
(**************************************************************************)
(*                                                                        *)
(*                                 OCaml                                  *)
(*                                                                        *)
(*             Sebastien Hinderer, projet Gallium, INRIA Paris            *)
(*                                                                        *)
(*   Copyright 2016 Institut National de Recherche en Informatique et     *)
(*     en Automatique.                                                    *)
(*                                                                        *)
(*   All rights reserved.  This file is distributed under the terms of    *)
(*   the GNU Lesser General Public License version 2.1, with the          *)
(*   special exception on linking described in the file LICENSE.          *)
(*                                                                        *)
(**************************************************************************)

(* Backends of the OCaml compiler and their properties *)

type t = Native | Bytecode

let is_bytecode t = t=Bytecode

let is_native t = t=Native

let string_of_backend = function
  | Native -> "native"
  | Bytecode -> "bytecode"

(* Creates a function that returns its first argument for Bytecode           *)
(* and its second argument for Native code                                   *)
let make_backend_function bytecode_value native_value = function
  | Bytecode -> bytecode_value
  | Native -> native_value

let module_extension = make_backend_function "cmo" "cmx"

let library_extension = make_backend_function "cma" "cmxa"

let executable_extension = make_backend_function "byte" "opt"