ocaml
Version:
OCaml compiler packaged for esy
160 lines (145 loc) • 5.72 kB
Plain Text
(* @configure_input@ *)
#3 "utils/config.common.ml.in"
(**************************************************************************)
(* *)
(* OCaml *)
(* *)
(* Xavier Leroy, projet Cristal, INRIA Rocquencourt *)
(* *)
(* Copyright 1996 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. *)
(* *)
(**************************************************************************)
(* Portions of the Config module common to both the boot and main compiler. *)
(* The main OCaml version string has moved to ../build-aux/ocaml_version.m4 *)
let version = Sys.ocaml_version
let standard_library =
try
Sys.getenv "OCAMLLIB"
with Not_found ->
try
Sys.getenv "CAMLLIB"
with Not_found ->
standard_library_default
let exec_magic_number = {magic|@EXEC_MAGIC_NUMBER@|magic}
(* exec_magic_number is duplicated in runtime/caml/exec.h *)
and cmi_magic_number = {magic|@CMI_MAGIC_NUMBER@|magic}
and cmo_magic_number = {magic|@CMO_MAGIC_NUMBER@|magic}
and cma_magic_number = {magic|@CMA_MAGIC_NUMBER@|magic}
and cmx_magic_number = {magic|@CMX_MAGIC_NUMBER@|magic}
and cmxa_magic_number = {magic|@CMXA_MAGIC_NUMBER@|magic}
and ast_impl_magic_number = {magic|@AST_IMPL_MAGIC_NUMBER@|magic}
and ast_intf_magic_number = {magic|@AST_INTF_MAGIC_NUMBER@|magic}
and cmxs_magic_number = {magic|@CMXS_MAGIC_NUMBER@|magic}
and cmt_magic_number = {magic|@CMT_MAGIC_NUMBER@|magic}
and linear_magic_number = {magic|@LINEAR_MAGIC_NUMBER@|magic}
let safe_string = true
let default_safe_string = true
let naked_pointers = false
let interface_suffix = ref ".mli"
let max_tag = 243
(* This is normally the same as in obj.ml, but we have to define it
separately because it can differ when we're in the middle of a
bootstrapping phase. *)
let lazy_tag = 246
let max_young_wosize = 256
let stack_threshold = 32 (* see runtime/caml/config.h *)
let stack_safety_margin = 6
let default_executable_name =
match Sys.os_type with
"Unix" -> "a.out"
| "Win32" | "Cygwin" -> "camlprog.exe"
| _ -> "camlprog"
type configuration_value =
| String of string
| Int of int
| Bool of bool
let configuration_variables () =
let p x v = (x, String v) in
let p_int x v = (x, Int v) in
let p_bool x v = (x, Bool v) in
[
p "version" version;
p "standard_library_default" standard_library_default;
p "standard_library" standard_library;
p "ccomp_type" ccomp_type;
p "c_compiler" c_compiler;
p "ocamlc_cflags" ocamlc_cflags;
p "ocamlc_cppflags" ocamlc_cppflags;
p "ocamlopt_cflags" ocamlopt_cflags;
p "ocamlopt_cppflags" ocamlopt_cppflags;
p "bytecomp_c_compiler" bytecomp_c_compiler;
p "native_c_compiler" native_c_compiler;
p "bytecomp_c_libraries" bytecomp_c_libraries;
p "native_c_libraries" native_c_libraries;
p "native_ldflags" native_ldflags;
p "native_pack_linker" native_pack_linker;
p_bool "native_compiler" native_compiler;
p "architecture" architecture;
p "model" model;
p_int "int_size" Sys.int_size;
p_int "word_size" Sys.word_size;
p "system" system;
p "asm" asm;
p_bool "asm_cfi_supported" asm_cfi_supported;
p_bool "with_frame_pointers" with_frame_pointers;
p "ext_exe" ext_exe;
p "ext_obj" ext_obj;
p "ext_asm" ext_asm;
p "ext_lib" ext_lib;
p "ext_dll" ext_dll;
p "os_type" Sys.os_type;
p "default_executable_name" default_executable_name;
p_bool "systhread_supported" systhread_supported;
p "host" host;
p "target" target;
p_bool "flambda" flambda;
p_bool "safe_string" safe_string;
p_bool "default_safe_string" default_safe_string;
p_bool "flat_float_array" flat_float_array;
p_bool "function_sections" function_sections;
p_bool "afl_instrument" afl_instrument;
p_bool "tsan" tsan;
p_bool "windows_unicode" windows_unicode;
p_bool "supports_shared_libraries" supports_shared_libraries;
p_bool "native_dynlink" native_dynlink;
p_bool "naked_pointers" naked_pointers;
p "exec_magic_number" exec_magic_number;
p "cmi_magic_number" cmi_magic_number;
p "cmo_magic_number" cmo_magic_number;
p "cma_magic_number" cma_magic_number;
p "cmx_magic_number" cmx_magic_number;
p "cmxa_magic_number" cmxa_magic_number;
p "ast_impl_magic_number" ast_impl_magic_number;
p "ast_intf_magic_number" ast_intf_magic_number;
p "cmxs_magic_number" cmxs_magic_number;
p "cmt_magic_number" cmt_magic_number;
p "linear_magic_number" linear_magic_number;
]
let print_config_value oc = function
| String s ->
Printf.fprintf oc "%s" s
| Int n ->
Printf.fprintf oc "%d" n
| Bool p ->
Printf.fprintf oc "%B" p
let print_config oc =
let print (x, v) =
Printf.fprintf oc "%s: %a\n" x print_config_value v in
List.iter print (configuration_variables ());
flush oc
let config_var x =
match List.assoc_opt x (configuration_variables()) with
| None -> None
| Some v ->
let s = match v with
| String s -> s
| Int n -> Int.to_string n
| Bool b -> string_of_bool b
in
Some s
let merlin = false