Guest User

Untitled

a guest
Feb 16th, 2019
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.06 KB | None | 0 0
  1. --- ocamldep.ml.orig Tue Mar 11 00:32:53 2008
  2. +++ ocamldep.ml Tue Mar 11 00:33:13 2008
  3. @@ -26,6 +26,8 @@
  4. let error_occurred = ref false
  5. let raw_dependencies = ref false
  6.  
  7. +let ifiles = ref []
  8. +
  9. (* Fix path to use '/' as directory separator instead of '\'.
  10. Only under Windows. *)
  11.  
  12. @@ -63,6 +65,20 @@
  13. | None -> find_in_path rem in
  14. find_in_path !load_path
  15.  
  16. +let rec find_interior_file name ifs =
  17. + let uname = String.uncapitalize name in
  18. + let rec loop ifs =
  19. + match ifs with
  20. + [] -> raise Not_found
  21. + | candidate :: rem ->
  22. + let bc = Filename.basename candidate in
  23. + if bc = name || bc = uname then
  24. + candidate
  25. + else
  26. + loop rem
  27. + in
  28. + loop ifs
  29. +
  30. let find_dependency modname (byt_deps, opt_deps) =
  31. try
  32. let filename = find_file (modname ^ ".mli") in
  33. @@ -80,6 +96,22 @@
  34. basename ^ (if !native_only then ".cmx" else ".cmo") in
  35. (bytename :: byt_deps, (basename ^ ".cmx") :: opt_deps)
  36. with Not_found ->
  37. + try
  38. + let filename = find_interior_file (modname ^ ".mli") !ifiles in
  39. + let basename = Filename.chop_suffix filename ".mli" in
  40. + let optname =
  41. + if Sys.file_exists (basename ^ ".ml")
  42. + then basename ^ ".cmx"
  43. + else basename ^ ".cmi" in
  44. + ((basename ^ ".cmi") :: byt_deps, optname :: opt_deps)
  45. + with Not_found ->
  46. + try
  47. + let filename = find_interior_file (modname ^ ".ml") !ifiles in
  48. + let basename = Filename.chop_suffix filename ".ml" in
  49. + let bytename =
  50. + basename ^ (if !native_only then ".cmx" else ".cmo") in
  51. + (bytename :: byt_deps, (basename ^ ".cmx") :: opt_deps)
  52. + with Not_found ->
  53. (byt_deps, opt_deps)
  54.  
  55. let (depends_on, escaped_eol) = (": ", "\\\n ")
  56. @@ -292,5 +324,7 @@
  57. " (for Windows) Use forward slash / instead of backslash \\ in file paths";
  58. "-version", Arg.Unit print_version,
  59. " Print version and exit";
  60. + "-interiorfile", Arg.String(fun s -> ifiles := s :: !ifiles),
  61. + "<file> Emit dependency for <file> even if does not exist";
  62. ] file_dependencies usage;
  63. exit (if !error_occurred then 2 else 0)
Add Comment
Please, Sign In to add comment