module U = UriManager
let deps = Hashtbl.create (Array.length Sys.argv)
-let baseuri = ref []
+let baseuris = ref []
let aliases = Hashtbl.create (Array.length Sys.argv)
(*
U.buri_of_uri (U.uri_of_string alias)
let resolve alias =
- try
- Some (snd(List.find (fun (u, f) -> u = (buri alias)) !baseuri))
- with
- | Not_found -> None
+ let buri = buri alias in
+ if List.exists (fun u -> u = buri) !baseuris then Some buri else None
(*** TODO MANCANO LE URI VERBATIM DENTRO GLI AST DEI TERMINI ****)
CicNotation.load_notation BuildTimeConf.core_notation_script;
let files = ref [] in
Arg.parse arg_spec (add_l files) usage;
- List.iter (fun file ->
+ List.iter
+ (fun file ->
let ic = open_in file in
let istream = Stream.of_channel ic in
(try
match GrafiteParser.parse_statement istream with
| TA.Executable (_, TA.Command (_, TA.Set (_, "baseuri", uri))) ->
let uri = MatitaMisc.strip_trailing_slash uri in
- baseuri := (uri, file) :: !baseuri
+ baseuris := uri :: !baseuris
| TA.Executable (_, TA.Command
(_, TA.Alias (_, TA.Ident_alias(_, uri)))) ->
Hashtbl.add aliases file uri
| TA.Executable (_, TA.Command (_, TA.Include (_, path))) ->
- Hashtbl.add deps file (find path)
+ if path <> "coq.ma" then
+ (try
+ Hashtbl.add deps file (MatitaMisc.obj_file_of_script (find path))
+ with
+ Sys_error _ ->
+ MatitaLog.error
+ ("In file " ^ file ^ " unable to include " ^ path)
+ )
| _ -> ()
with
CicNotationParser.Parse_error _ as exn ->
let dep = resolve alias in
match dep with
| None -> ()
- | Some d -> Hashtbl.add deps file d)
- aliases)
- !files;
- List.iter (fun file ->
+ | Some u -> Hashtbl.add deps file (MatitaMisc.obj_file_of_baseuri u))
+ aliases
+ ) !files;
+ List.iter
+ (fun file ->
let deps = Hashtbl.find_all deps file in
let deps = List.fast_sort Pervasives.compare deps in
let deps = MatitaMisc.list_uniq deps in
- let deps =
- List.map (fun x -> Pcre.replace ~pat:"ma$" ~templ:"moo" x) deps
- in
let deps = file :: deps in
- Printf.printf "%s: %s\n" (MatitaMisc.obj_file_of_script file)
- (String.concat " " deps))
- !files
+ let moo = MatitaMisc.obj_file_of_script file in
+ Printf.printf "%s: %s\n" moo (String.concat " " deps);
+ Printf.printf "%s: %s\n" (Pcre.replace ~pat:"ma$" ~templ:"mo" file) moo
+ ) !files
;;
let _ =
main ()
-