]> matita.cs.unibo.it Git - helm.git/commitdiff
added generation of the .dot version of development dependencies
authorStefano Zacchiroli <zack@upsilon.cc>
Thu, 21 Sep 2006 08:54:08 +0000 (08:54 +0000)
committerStefano Zacchiroli <zack@upsilon.cc>
Thu, 21 Sep 2006 08:54:08 +0000 (08:54 +0000)
matita/matitadep.ml
matita/template_makefile.in

index c99690853c059f8ca1473bc308102ae5cb9120b0..65743db582852752bb102f9e90c79a07ed6d4be4 100644 (file)
@@ -51,10 +51,10 @@ let main () =
     let buri = buri alias in
     if buri <> current_buri then Some buri else None in
   MatitaInit.fill_registry ();
-  let do_dot = ref false in
+  let dot_file = ref "" in
   MatitaInit.add_cmdline_spec 
-    ["-dot",Arg.Unit (fun () -> do_dot:=true),
-      "Generate deps for dot instead of make"];
+    ["-dot", Arg.Set_string dot_file,
+      "<file> Save dependency graph in dot format to the given file"];
   MatitaInit.parse_cmdline ();
   MatitaInit.load_configuration_file ();
   let include_paths =
@@ -107,9 +107,10 @@ let main () =
         prerr_endline ("File "^ file^" has no baseuri. Use set baseuri");
         exit 1)
   uri_deps;
-  if !do_dot then
+  if !dot_file <> "" then (* generate dependency graph if required *)
     begin
-      let fmt = Format.formatter_of_out_channel stdout in 
+      let oc = open_out !dot_file in
+      let fmt = Format.formatter_of_out_channel oc in 
       GraphvizPp.Dot.header (* ~graph_attrs:["rankdir","LR"] *) fmt;
       List.iter
        (fun ma_file -> 
@@ -127,26 +128,23 @@ let main () =
         List.iter (fun dep -> GraphvizPp.Dot.edge ma_file dep fmt) deps)
        ma_files;
       GraphvizPp.Dot.trailer fmt;
-      close_out stdout
-    end
-  else
-    begin
-      List.iter
-       (fun ma_file -> 
-         try
-          let deps = Hashtbl.find_all include_deps ma_file in
-          let deps = List.fast_sort Pervasives.compare deps in
-          let deps = HExtlib.list_uniq deps in
-          let deps = ma_file :: deps in
-          let baseuri = Hashtbl.find baseuri_of ma_file in
-          let moo = obj_file_of_baseuri true baseuri in
-          Printf.printf "%s: %s\n%s: %s\n%s: %s\n" 
-            moo (String.concat " " deps)
-            (Filename.basename(Pcre.replace ~pat:"ma$" ~templ:"mo" ma_file)) moo
-            (Pcre.replace ~pat:"ma$" ~templ:"mo" ma_file) moo
-         with Not_found -> 
-           prerr_endline ("File "^ma_file^" has no baseuri. Use set baseuri");
-           exit 1)
-        ma_files
-    end
-;;
+      close_out oc
+    end;
+  List.iter (* (always) generate regular .depend output *)
+   (fun ma_file -> 
+     try
+      let deps = Hashtbl.find_all include_deps ma_file in
+      let deps = List.fast_sort Pervasives.compare deps in
+      let deps = HExtlib.list_uniq deps in
+      let deps = ma_file :: deps in
+      let baseuri = Hashtbl.find baseuri_of ma_file in
+      let moo = obj_file_of_baseuri true baseuri in
+      Printf.printf "%s: %s\n%s: %s\n%s: %s\n" 
+        moo (String.concat " " deps)
+        (Filename.basename(Pcre.replace ~pat:"ma$" ~templ:"mo" ma_file)) moo
+        (Pcre.replace ~pat:"ma$" ~templ:"mo" ma_file) moo
+     with Not_found -> 
+       prerr_endline ("File "^ma_file^" has no baseuri. Use set baseuri");
+       exit 1)
+    ma_files
+
index 726196373fc23a4567b474af8c47bd3698977716..7c5a40b31381736ce69c7cbab4f668ccf30f4be7 100644 (file)
@@ -26,7 +26,8 @@ clean:
        fi
 
 @DEPFILE@ : $(SRC)
-       $(MATITADEP) $(MATITA_FLAGS) -I '@ROOT@' $^ 1> @DEPFILE@ 2>@DEPFILE@.errors \
+       $(MATITADEP) $(MATITA_FLAGS) -I '@ROOT@' -dot @DEPFILE@.dot $^ \
+               1> @DEPFILE@ 2>@DEPFILE@.errors \
                || (echo;cat @DEPFILE@.errors;echo;rm @DEPFILE@;false)
 
 # this is the depend for full targets like: