OCaml compiler library : Config

# Module Config

    module Config: sig .. end

System configuration

Warning: this module is unstable and part of compiler-libs.

    val version : string

The current version number of the system

    val bindir : string

The directory containing the binary programs

    val standard_library : string

The directory containing the standard libraries

    val ccomp_type : string

The "kind" of the C compiler, assembler and linker used: one of "cc" (for Unix-style C compilers) "msvc" (for Microsoft Visual C++ and MASM)

    val c_compiler : string

The compiler to use for compiling C files

    val c_output_obj : string

Name of the option of the C compiler for specifying the output file

    val c_has_debug_prefix_map : bool

Whether the C compiler supports -fdebug-prefix-map

    val as_has_debug_prefix_map : bool

Whether the assembler supports --debug-prefix-map

    val bytecode_cflags : string

The flags ocamlc should pass to the C compiler

    val bytecode_cppflags : string

The flags ocamlc should pass to the C preprocessor

    val native_cflags : string

The flags ocamlopt should pass to the C compiler

    val native_cppflags : string

The flags ocamlopt should pass to the C preprocessor

    val bytecomp_c_libraries : string

The C libraries to link with custom runtimes

    val native_c_libraries : string

The C libraries to link with native-code programs

    val compression_c_libraries : string

The C libraries needed with -lcomprmarsh (should appear before `Config.native_c_libraries` in a call to the C compiler)

- Since 5.4

    val native_ldflags : string

    val with_nonexecstack_note : bool

Whether an explicit ".note.GNU-stack" section is to be added to indicate the stack should not be executable

- Since 5.4

    val native_pack_linker : string

The linker to use for packaging (ocamlopt -pack) and for partial links (ocamlopt -output-obj).

    val mkdll : string

The linker command line to build dynamic libraries.

    val mkexe : string

The linker command line to build executables.

    val mkmaindll : string

The linker command line to build main programs as dlls.

    val default_rpath : string

Option to add a directory to be searched for libraries at runtime (used by ocamlmklib)

    val mksharedlibrpath : string

Option to add a directory to be searched for shared libraries at runtime (used by ocamlmklib)

    val ar : string

Name of the ar command, or "" if not needed (MSVC)

    val interface_suffix : string ref

Suffix for interface file names

    val exec_magic_number : string

Magic number for bytecode executable files

    val cmi_magic_number : string

Magic number for compiled interface files

    val cmo_magic_number : string

Magic number for object bytecode files

    val cma_magic_number : string

Magic number for archive files

    val cmx_magic_number : string

Magic number for compilation unit descriptions

    val cmxa_magic_number : string

Magic number for libraries of compilation unit descriptions

    val ast_intf_magic_number : string

Magic number for file holding an interface syntax tree

    val ast_impl_magic_number : string

Magic number for file holding an implementation syntax tree

    val cmxs_magic_number : string

Magic number for dynamically-loadable plugins

    val cmt_magic_number : string

Magic number for compiled interface files

    val linear_magic_number : string

Magic number for Linear internal representation files

    val max_tag : int

Biggest tag that can be stored in the header of a regular block.

    val lazy_tag : int

Normally the same as Obj.lazy_tag. Separate definition because of technical reasons for bootstrapping.

    val max_young_wosize : int

Maximal size of arrays that are directly allocated in the minor heap

    val stack_threshold : int

Size in words of safe area at bottom of VM stack, see runtime/caml/config.h

    val stack_safety_margin : int

Size in words of the safety margin between the bottom of the stack and the stack pointer. This margin can be used by intermediate computations of some instructions, or the event handler.

    val native_compiler : bool

Whether the native compiler is available or not

- Since 5.1

    val architecture : string

Name of processor type for the native-code compiler

    val model : string

Name of processor submodel for the native-code compiler

    val system : string

Name of operating system for the native-code compiler

    val target_os_type : string

Operating system targetted by the native-code compiler. One of

- `"Unix"` (for all Unix versions, including Linux and macOS),
- `"Win32"` (for MS-Windows, OCaml compiled with MSVC++ or MinGW-w64),
- `"Cygwin"` (for MS-Windows, OCaml compiled with Cygwin).

    val asm : string

The assembler (and flags) to use for assembling ocamlopt-generated code.

    val asm_cfi_supported : bool

Whether assembler understands CFI directives

    val asm_size_type_directives : bool

Whether the `.size` and `.type` assembler directives can be used

- Since 5.4

    val with_frame_pointers : bool

Whether assembler should maintain frame pointers

    val ext_obj : string

Extension for object files, e.g. `.o` under Unix.

    val ext_asm : string

Extension for assembler files, e.g. `.s` under Unix.

    val ext_lib : string

Extension for library files, e.g. `.a` under Unix.

    val ext_dll : string

Extension for dynamically-loaded libraries, e.g. `.so` under Unix.

    val ext_exe : string

Extension for executable programs, e.g. `.exe` under Windows.

- Since 4.12

    val default_executable_name : string

Name of executable produced by linking if none is given with -o, e.g. `a.out` under Unix.

    val systhread_supported : bool

Whether the system thread library is implemented

    val flexdll_dirs : string list

Directories needed for the FlexDLL objects

    val host : string

Whether the compiler is a cross-compiler

    val target : string

Whether the compiler is a cross-compiler

    val flambda : bool

Whether the compiler was configured for flambda

    val with_flambda_invariants : bool

Whether the invariants checks for flambda are enabled

    val with_cmm_invariants : bool

Whether the invariants checks for Cmm are enabled

    val with_codegen_invariants : bool

Whether the invariant checks for native code generation are enabled.

    val reserved_header_bits : int

How many bits of a block's header are reserved

    val flat_float_array : bool

Whether the compiler and runtime automagically flatten float arrays

    val align_double : bool

Whether the compiler and runtime need to align double values. If `false`, a `floatarray` value can be cast to a C array of doubles.

    val align_int64 : bool

Whether the compiler and runtime need to align int64 values

    val function_sections : bool

Whether the compiler was configured to generate each function in a separate section

    val windows_unicode : bool

Whether Windows Unicode runtime is enabled

    val naked_pointers : bool

Whether the runtime supports naked pointers

- Since 4.14

    val supports_shared_libraries : bool

Whether shared libraries are supported

- Since 4.08

    val native_dynlink : bool

Whether native shared libraries are supported

- Since 5.1

    val afl_instrument : bool

Whether afl-fuzz instrumentation is generated by default

    val ar_supports_response_files : bool

Whether ar supports @FILE arguments.

    val tsan : bool

Whether ThreadSanitizer instrumentation is enabled

    val print_config : out_channel -> unit

Access to configuration values

    val config_var : string -> string option

the configuration value of a variable, if it exists