.
[tatoo.git] / myocamlbuild.ml
index 0ea5ff0..7f86523 100644 (file)
@@ -1,51 +1,26 @@
-open Ocamlbuild_plugin
-open Command
+open Ocamlbuild_plugin ;;
 
-let includes = ref StringSet.empty
+let includes = [ "include/utils.ml"; "include/utils32.ml"; "include/utils64.ml"; "include/debug.ml" ]
 
-let register_include dir =
-  if not (StringSet.mem dir !includes) then begin
-    includes := StringSet.add dir !includes;
-    dep [ "extension:ml" ]
-      (List.map (fun s -> dir ^ "/" ^ s )
-         (Array.to_list (Pathname.readdir dir)))
-  end
+let ml_str_rule () =
+   rule ".ml.str" ~dep:"%.ml.str" ~prod:"%.ml"
+    (fun env _ ->
+     let mlstr = env "%.ml.str" and ml = env "%.ml" in
+     let cmd = Printf.sprintf "echo -n 'let content = \"' > %s ;\ 
+               sed -e 's/\\([\"\\\\]\\)/\\\\\\1/g' %s | sed -e 's/^\\(.*\\)$/\\1\\\\n\\\\/g' >> %s ;\
+                echo '' >> %s ;\
+                echo '\"' >> %s" ml mlstr ml ml ml
+     in
+     Cmd ( Sh cmd ))
+        
+let () =
+  dispatch begin function
+             | After_rules ->
+                dep ["ocaml";"compile";] includes;
+                dep ["ocaml";"ocamldep"; ] includes;
+                pflag ["ocaml";"compile";] "ppopt" (fun s -> S [A"-ppopt"; A (s)]);            
+                pflag ["ocaml";"ocamldep";] "ppopt" (fun s -> S [A"-ppopt"; A (s)]);
+               ml_str_rule ()
+             | _ -> ()
 
-let set_flags tag_list action_list =
-  List.iter (fun s ->
-    List.iter (fun (fl, fu) ->
-      pflag s fl fu)
-      action_list
-  ) tag_list
-
-let macro_flags = [
-  "macro_include",
-  (fun s -> register_include s; S [A"-ppopt"; A "-I"; A"-ppopt"; A s]);
-  "macro_define", (fun s -> S [A"-ppopt"; A ("-D"^s)]);
-]
-
-let () = dispatch begin
-  function
-    | Before_rules -> ()
-    | After_rules ->
-        set_flags [["ocaml";"compile"]; ["ocaml";"ocamldep"] ] macro_flags;
-        pflag [ "ocaml"; "compile" ] "warning"   (fun s -> (S[ A"-w"; A s]));
-        flag [ "ocaml"; "compile"; "debug" ] (S[ A"-g"; A"-ppopt"; A"-DDEBUG"]);
-        flag [ "ocaml"; "link"; "debug" ] (A"-g");
-        flag [ "ocaml"; "compile"; "profile"] (S[A"-ppopt"; A"-DPROFILE"]);
-        flag [ "ocaml"; "compile"; "profile"; "native"] (A"-p");
-        flag [ "ocaml"; "link"; "profile"; "native"] (A"-p");
-        pflag [ "ocaml"; "compile"; "native" ] "inline" (fun i -> (S[ A"-inline"; A i ]));
-        pflag [ "ocaml"; "compile" ] "unsafe" (fun s -> (if s = "true" then S[A"-ppopt";A "-unsafe"] else N));
-
-
-         rule "Java compilation"
-        ~prod:"%.class"
-        ~dep:"%.java"
-        begin fun env _build ->
-          let java = env "%.java" in
-          let tags = tags_of_pathname java ++ "compile" in
-          Cmd( S[ A"javac" ; P java; T tags ])
-        end
-    | _ -> ()
-end
+end;;