Module Config
System configuration
Warning: this module is unstable and part of compiler-libs.
The current version number of the system
The directory containing the binary programs
val standard_library : stringThe directory containing the standard libraries
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)
The compiler to use for compiling C files
val c_output_obj : stringName of the option of the C compiler for specifying the output file
val c_has_debug_prefix_map : boolWhether the C compiler supports -fdebug-prefix-map
val as_has_debug_prefix_map : boolWhether the assembler supports --debug-prefix-map
val as_compress_debug_sections_flag : stringThe flag to use for assembler debug section compression ("" if none)
val cc_compress_debug_sections_flag : stringThe flag to use for C compiler debug section compression ("" if none)
val objcopy_compress_debug_sections_flag : stringThe flag to use for objcopy debug section compression ("" if none)
The objcopy command (and flags) to use for split debug enabled by Clflags.dwarf_fission.
val ocamlc_cflags : stringThe flags ocamlc should pass to the C compiler
val ocamlc_cppflags : stringThe flags ocamlc should pass to the C preprocessor
val ocamlopt_cflags : stringval ocamlopt_cppflags : stringval bytecomp_c_libraries : stringThe C libraries to link with custom runtimes
val native_c_libraries : stringThe C libraries to link with native-code programs
val native_ldflags : stringval native_pack_linker : stringThe linker to use for packaging (ocamlopt -pack) and for partial links (ocamlopt -output-obj).
The linker command line to build dynamic libraries.
The linker command line to build executables.
The linker command line to build main programs as dlls.
val default_rpath : stringOption to add a directory to be searched for libraries at runtime (used by ocamlmklib)
val mksharedlibrpath : stringOption to add a directory to be searched for shared libraries at runtime (used by ocamlmklib)
Name of the ar command, or "" if not needed (MSVC)
Suffix for interface file names
val exec_magic_number : stringMagic number for bytecode executable files
val cmi_magic_number : stringMagic number for compiled interface files
val cmo_magic_number : stringMagic number for object bytecode files
val cma_magic_number : stringMagic number for archive files
val cmx_magic_number : stringMagic number for compilation unit descriptions
val cmxa_magic_number : stringMagic number for libraries of compilation unit descriptions
val ast_intf_magic_number : stringMagic number for file holding an interface syntax tree
val ast_impl_magic_number : stringMagic number for file holding an implementation syntax tree
val cmxs_magic_number : stringMagic number for dynamically-loadable plugins
val cmt_magic_number : stringMagic number for compiled interface files
val cms_magic_number : stringMagic number for compiled shapes files
val cmj_magic_number : stringMagic number for Js_of_ocaml IR files
val cmja_magic_number : stringMagic number for Js_of_ocaml IR archive files
val linear_magic_number : stringMagic number for Linear internal representation files
val cfg_magic_number : stringMagic number for Cfg internal representation files
Biggest tag that can be stored in the header of a regular block.
Normally the same as Obj.lazy_tag. Separate definition because of technical reasons for bootstrapping.
val max_young_wosize : intMaximal size of arrays that are directly allocated in the minor heap
val stack_threshold : intSize in words of safe area at bottom of VM stack, see runtime/caml/config.h
val stack_safety_margin : intSize 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 : boolWhether the native compiler is available or not
val architecture : stringName of processor type for the native-code compiler
Name of processor submodel for the native-code compiler
Name of operating system for the native-code compiler
The assembler (and flags) to use for assembling ocamlopt-generated code.
val asm_cfi_supported : boolWhether assembler understands CFI directives
val with_frame_pointers : boolWhether assembler should maintain frame pointers
val with_address_sanitizer : boolWhether code generation should expose native OCaml operations to AddressSanitizer.
val with_cpp_mangling : boolWhether symbol names should be following the cpp mangling convention
Extension for object files, e.g. .o under Unix.
Extension for assembler files, e.g. .s under Unix.
Extension for library files, e.g. .a under Unix.
Extension for dynamically-loaded libraries, e.g. .so under Unix.
Extension for executable programs, e.g. .exe under Windows.
val default_executable_name : stringName of executable produced by linking if none is given with -o, e.g. a.out under Unix.
val systhread_supported : boolWhether the system thread library is implemented
val flexdll_dirs : string listDirectories needed for the FlexDLL objects
Whether the compiler is a cross-compiler
Whether the compiler is a cross-compiler
Whether the compiler was configured for Flambda 1
Whether the compiler was configured for Flambda 2
true if the compiler was built in a OxCaml repo, false if the compiler was built as per upstream.
val with_flambda_invariants : boolWhether the invariants checks for flambda are enabled
val with_cmm_invariants : boolWhether the invariants checks for Cmm are enabled
How many bits of a block's header are reserved. This is correct regardless of whether we're in runtime 4 or runtime 5.
In runtime 5, this corresponds to the HEADER_RESERVED_BITS C preprocessor macro. In runtime 4, this corresponds to the PROFINFO_WIDTH C preprocessor macro. Both of these are unconditionally set to a constant by the configure script in order to enable mixed block support.
val custom_ops_struct_size : intSize in bytes of the custom operations structure.
val flat_float_array : boolWhether the compiler and runtime automagically flatten float arrays
val function_sections : boolWhether the compiler was configured to generate each function in a separate section
Whether the target supports tracing probes
val windows_unicode : boolWhether Windows Unicode runtime is enabled
val naked_pointers : boolWhether the runtime supports naked pointers
val supports_shared_libraries : boolWhether shared libraries are supported
val native_dynlink : boolWhether native shared libraries are supported
val afl_instrument : boolWhether afl-fuzz instrumentation is generated by default
val stack_allocation : boolWhether to stack allocate local values
val poll_insertion : boolWhether to insert poll points
val ar_supports_response_files : booltrue if using the OCaml 5.x runtime, false if using the OCaml 4.14 runtime.
val no_stack_checks : booltrue if stack checks are disabled; used only if runtime5 is true.
Whether creating multiple domains is allowed. Requires stack checks and poll insertion.
Whether ThreadSanitizer instrumentation is enabled
val parameterised_modules : boolWhether parameterised modules are supported
val syntax_quotations : boolWhether runtime quotations syntax is enabled.
Access to configuration values
val config_var : string -> string optionthe configuration value of a variable, if it exists