aboutsummaryrefslogtreecommitdiffhomepage
path: root/tools/coqdep.ml
diff options
context:
space:
mode:
authorGravatar Pierre Boutillier <pierre.boutillier@ens-lyon.org>2014-06-30 14:00:39 +0200
committerGravatar Pierre Boutillier <pierre.boutillier@ens-lyon.org>2014-06-30 15:55:54 +0200
commite1d46f1c6ca9556e23e5378c6589220fc48da879 (patch)
tree6000c8c03de02115f134864dbbf64b0922cf2a7b /tools/coqdep.ml
parent8e3ef4dbfd00c67af1cc2b83307038a6440584cb (diff)
Coqdep: update include strategies
-I is (only) the ml one -I -as is fixed -Q is understood -R is not a recursive ml include anymore $COQENV, user_contrib, ... are not recursively included coqlib/theories and coqlib/plugins are still recursively included (for now). (This may deserves an option) Closes Bug 2910: If there is a "Require a." in a b.v and a a.vo in path but no a.v, coqdep does not complains about a missing a.v.
Diffstat (limited to 'tools/coqdep.ml')
-rw-r--r--tools/coqdep.ml25
1 files changed, 15 insertions, 10 deletions
diff --git a/tools/coqdep.ml b/tools/coqdep.ml
index febde9b69..a44f159b4 100644
--- a/tools/coqdep.ml
+++ b/tools/coqdep.ml
@@ -36,11 +36,11 @@ let warning_mult suf iter =
in
iter check
-let add_coqlib_known phys_dir log_dir f =
+let add_coqlib_known recur phys_dir log_dir f =
match get_extension f [".vo"] with
| (basename,".vo") ->
let name = log_dir@[basename] in
- let paths = suffixes name in
+ let paths = if recur then suffixes name else [name] in
List.iter (fun f -> Hashtbl.add coqlibKnown f ()) paths
| _ -> ()
@@ -445,16 +445,19 @@ let rec parse = function
| "-c" :: ll -> option_c := true; parse ll
| "-D" :: ll -> option_D := true; parse ll
| "-w" :: ll -> option_w := true; parse ll
- | "-boot" :: ll -> Flags.boot := true; parse ll
+ | "-boot" :: ll -> option_boot := true; parse ll
| "-sort" :: ll -> option_sort := true; parse ll
| ("-noglob" | "-no-glob") :: ll -> option_noglob := true; parse ll
- | "-I" :: r :: "-as" :: ln :: ll -> add_dir add_known r (split_period ln); parse ll
+ | "-I" :: r :: "-as" :: ln :: ll -> add_dir add_known r [];
+ add_dir add_known r (split_period ln);
+ parse ll
| "-I" :: r :: "-as" :: [] -> usage ()
- | "-I" :: r :: ll -> add_dir add_known r []; parse ll
+ | "-I" :: r :: ll -> add_caml_dir r; parse ll
| "-I" :: [] -> usage ()
| "-R" :: r :: "-as" :: ln :: ll -> add_rec_dir add_known r (split_period ln); parse ll
| "-R" :: r :: "-as" :: [] -> usage ()
| "-R" :: r :: ln :: ll -> add_rec_dir add_known r (split_period ln); parse ll
+ | "-Q" :: r :: ln :: ll -> add_dir add_known r (split_period ln); parse ll
| "-R" :: ([] | [_]) -> usage ()
| "-dumpgraph" :: f :: ll -> option_dump := Some (false, f); parse ll
| "-dumpgraphbox" :: f :: ll -> option_dump := Some (true, f); parse ll
@@ -476,19 +479,21 @@ let coqdep () =
parse (List.tl (Array.to_list Sys.argv));
if not Coq_config.has_natdynlink then option_natdynlk := false;
(* NOTE: These directories are searched from last to first *)
- if !Flags.boot then begin
+ if !option_boot then begin
add_rec_dir add_known "theories" ["Coq"];
- add_rec_dir add_known "plugins" ["Coq"]
+ add_rec_dir add_known "plugins" ["Coq"];
+ add_rec_dir (fun _ -> add_caml_known) "theories" ["Coq"];
+ add_rec_dir (fun _ -> add_caml_known) "plugins" ["Coq"];
end else begin
Envars.set_coqlib ~fail:Errors.error;
let coqlib = Envars.coqlib () in
add_rec_dir add_coqlib_known (coqlib//"theories") ["Coq"];
add_rec_dir add_coqlib_known (coqlib//"plugins") ["Coq"];
let user = coqlib//"user-contrib" in
- if Sys.file_exists user then add_rec_dir add_coqlib_known user [];
- List.iter (fun s -> add_rec_dir add_coqlib_known s [])
+ if Sys.file_exists user then add_dir add_coqlib_known user [];
+ List.iter (fun s -> add_dir add_coqlib_known s [])
(Envars.xdg_dirs (fun x -> Pp.msg_warning (Pp.str x)));
- List.iter (fun s -> add_rec_dir add_coqlib_known s []) Envars.coqpath;
+ List.iter (fun s -> add_dir add_coqlib_known s []) Envars.coqpath;
end;
List.iter (fun (f,d) -> add_mli_known f d) !mliAccu;
List.iter (fun (f,d) -> add_mllib_known f d) !mllibAccu;