39 lines
1.7 KiB
OCaml
39 lines
1.7 KiB
OCaml
(**************************************************************************)
|
|
(* *)
|
|
(* 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"
|