(*
+ * Copyright 2012, INRIA
+ * Julia Lawall, Gilles Muller
+ * Copyright 2010-2011, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
* Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
* Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
* This file is part of Coccinelle.
(* Flags *)
(*****************************************************************************)
-let generate_dependencies dir =
- let c_info =
+let generate_dependencies dir =
+ let c_info =
Common.glob (Filename.concat dir "*.[c]")
- +> List.map (fun file ->
+ +> List.map (fun file ->
let (x,_) = Parse_c.parse_cache file in
let defined = C_info.defined_stuff x in
let used = C_info.used_stuff x in
file, { C_info.used = used; defined = defined; is_module = extra}
) in
let global = C_info.mk_global_definitions_index c_info in
- c_info +> List.iter (fun (file, used_defined) ->
+ c_info +> List.iter (fun (file, used_defined) ->
pr2 ("HANDLING : " ^ file);
C_info.print_entities used_defined.C_info.used;
);
C_info.check_no_duplicate_global_definitions global;
- let g = C_info.build_graph c_info global
+ let g = C_info.build_graph c_info global
(Filename.concat dir "depgraph.dot") in
C_info.generate_makefile g (Filename.concat dir "depcocci.dep")
(*
- let path =
+ let path =
match xs with
| [] -> "/home/pad/kernels/git/linux-2.6/drivers/net"
| [x] -> x
| _ -> failwith "too much path"
in
- let dirs =
- if dir
+ let dirs =
+ if dir
then Common.cmd_to_list ("find " ^ path ^ " -type d") +> Kbuild.adjust_dirs
else [path]
in
- dirs +> List.iter (fun dir ->
+ dirs +> List.iter (fun dir ->
*)
-
+
(*
-let test_yyy () =
+let test_yyy () =
Sys.chdir "/home/pad/kernels/git/linux-2.6";
let path="drivers/net" in
- let c_info =
+ let c_info =
Common.cmd_to_list ("find " ^ path ^ " -name \"*.c\" ")
- +> List.map (fun file ->
+ +> List.map (fun file ->
let x = cprogram_of_file_cached file in
let defined = defined_stuff x in
let used = used_stuff x in
file, { used = used; defined = defined; is_module = extra}
) in
let global = mk_global_definitions_index c_info in
- c_info +> List.iter (fun (file, used_defined) ->
+ c_info +> List.iter (fun (file, used_defined) ->
pr2 ("HANDLING : " ^ file);
print_entities used_defined.used;
);
check_no_duplicate_global_definitions global
(*build_graph c_info global (Filename.concat dir "depgraph.dot");*)
-*)
+*)
(*****************************************************************************)
(* Main entry point *)
(*****************************************************************************)
-let main () =
+let main () =
begin
let args = ref [] in
let options = [
] in
- let usage_msg =
- "Usage: " ^ basename Sys.argv.(0) ^
+ let usage_msg =
+ "Usage: " ^ basename Sys.argv.(0) ^
" <dir> [options]" ^ "\n" ^ "Options are:"
in
args := List.rev !args;
(match (!args) with
- | [x] ->
+ | [x] ->
generate_dependencies x
- | _ -> Arg.usage (Arg.align options) usage_msg;
+ | _ -> Arg.usage (Arg.align options) usage_msg;
)
end