(* * Copyright (c) Facebook, Inc. and its affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. *) (** Version information populated by build system *) let debug = let d = ref false in assert ( d := true ; true ) ; !d module Build_info = Build_info.V1 let version_to_string v = Option.map_or ~f:Build_info.Version.to_string v ~default:"dev" let version = Format.sprintf "%s%s" (version_to_string (Build_info.version ())) (if debug then "-dbg" else "") let build_info = let libs = List.map (Build_info.Statically_linked_libraries.to_list ()) ~f:(fun lib -> ( Build_info.Statically_linked_library.name lib , version_to_string (Build_info.Statically_linked_library.version lib) ) ) |> List.sort ~cmp:[%compare: string * string] in let max_length = List.fold_left libs 0 ~f:(fun n (name, _) -> max n (String.length name) ) in let pp_lib ppf (name, v) = Format.fprintf ppf "- %-*s %s" max_length name v in let pf x = Format.fprintf Format.str_formatter x in pf "%-*s %s@\n" (max_length + 2) "ocaml:" Sys.ocaml_version ; pf "statically linked libraries:@\n" ; pf "%a@\n" (List.pp "@\n" pp_lib) libs ; pf "%-*s %b@\n" (max_length + 2) "debug:" debug ; pf "version:" ; Format.flush_str_formatter ()