Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/Roqc/test-suite/tools/   (Beweissystem des Inria Version 9.1.0©)  Datei vom 15.8.2025 mit Größe 3 kB image not shown  

Quelle  coq_config_to_make.ml   Sprache: SML

 
(* Flags used to compile Coq but _not_ plugins (via rocq makefile) *)
module Prefs = struct
  type t = { warn_error : bool }
  let default = { warn_error = true }
end

let die fmt = Printf.kfprintf (fun _ -> exit 1) stderr (fmt^^"\n%!")

(** This Makefile is only used in the test-suite now, remove eventually. *)
let write_makefile coqprefix coqlibinstall best_compiler ocamlfind caml_flags coq_caml_flags o () =
  let pr s = Printf.fprintf o s in
  pr "###### Coq Test suite configuration ##############################\n";
  pr "# #\n";
  pr "# This file is generated by the script \"coq_config_to_make\" #\n";
  pr "# DO NOT EDIT IT !! DO NOT EDIT IT !! DO NOT EDIT IT !! #\n";
  pr "# #\n";
  pr "##################################################################\n\n";

  pr "# Paths where Coq is installed\n";
  pr "COQPREFIX='%s'\n" coqprefix;
  pr "COQLIBINSTALL='%s'\n\n" coqlibinstall;
  pr "# The best compiler: native (=opt) or bytecode (=byte)\n";
  pr "BEST=%s\n\n" best_compiler;
  pr "# Findlib command\n";
  pr "OCAMLFIND=%S\n" ocamlfind;
  pr "# Caml flags\n";
  pr "CAMLFLAGS=%s %s\n" caml_flags coq_caml_flags;
  pr "# coqc was said to be '%s'\n" Sys.argv.(1);
  pr "ARCH=%s\n" Coq_config.arch;
  ()

let coq_warn_error (prefs : Prefs.t) =
    if prefs.warn_error
    then "-warn-error +a"
    else ""

let canonical_path_name p =
  let current = Sys.getcwd () in
  try
    Sys.chdir p;
    let p' = Sys.getcwd () in
    Sys.chdir current;
    p'
  with Sys_error _ ->
    (* We give up to find a canonical name and just simplify it... *)
    Filename.concat current p

let find_in_PATH f =
  if Filename.basename f <> f then Some f
  else match Sys.getenv_opt "PATH" with
  | None -> None
  | Some paths ->
    let sep = if Coq_config.arch_is_win32 then ';' else ':' in
    let paths = String.split_on_char sep paths in
    paths |> List.find_opt (fun path ->
        Sys.file_exists (if path = "" then f else Filename.concat path f))

let main () =
  if Array.length Sys.argv < 2 then die "usage: %s ROCQ_EXE [OUT_FILE]" Sys.argv.(0);
  let coqc = Sys.argv.(1) in

  let coqc = match find_in_PATH coqc with
    | Some f -> f
    | None -> die "Could not find %s in PATH." coqc
  in

  let coqbin = canonical_path_name (Filename.dirname coqc) in
  let coqroot = Filename.dirname coqbin in

  let relocate = function
    | Coq_config.NotRelocatable p -> p
    | Coq_config.Relocatable p -> Filename.concat coqroot p
  in

  let prefs = Prefs.default in
  let coqprefix = relocate Coq_config.install_prefix in
  let coqlibinstall = relocate Coq_config.coqlib in
  (* EJGA: Good enough approximation *)
  let best_compiler = if Coq_config.has_natdynlink then "opt" else "byte" in
  let ocamlfind = Coq_config.ocamlfind in
  let caml_flags = Coq_config.caml_flags in
  let coq_caml_flags = coq_warn_error prefs in
  let out = if Array.length Sys.argv = 2 then stdout
    else open_out Sys.argv.(2)
  in
  Printf.fprintf out "%a\n%!"
    (write_makefile coqprefix coqlibinstall best_compiler ocamlfind caml_flags coq_caml_flags) ();
  ()

let () = main ()

Messung V0.5
C=92 H=97 G=94

¤ Dauer der Verarbeitung: 0.12 Sekunden  (vorverarbeitet)  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.