forked from ocaml/ocaml
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathocaml_backends.ml
38 lines (29 loc) · 1.73 KB
/
ocaml_backends.ml
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"