Commits

camlspotter committed 7be4582

auto update of OMyMakefile

Comments (0)

Files changed (1)

     value $(OCAMLFIND) $(OCAMLOPT) $(OCAMLPACKAGEFLAGS) $(LAZY_OCAMLFINDFLAGS) $(PREFIXED_OCAMLPACKS) $(OCAMLFLAGS)\
               $(OCAMLOPTFLAGS) $(OCAMLPPFLAGS) $(PREFIXED_OCAMLINCLUDES)
 
+if $(and $(not $(NATIVE_ENABLED)) $(not $(BYTE_ENABLED)))
+   err. =
+       extends $(UnbuildableException)
+       message = $(string $"You must turn on either NATIVE_ENABLED or BYTE_ENABLED")
+       raise $(err)
+
+# Rule for creating %.cmt and %.annot is dependent on BYTE_ENABLED or not
+if $(BYTE_ENABLED)
+
+    %.cmo %.cmt %.annot: %.ml
+        section rule
+            if $(target-exists %.mli)
+                %.cmo %.cmt %.annot: %.ml %.cmi :scanner: scan-ocaml-%.ml
+                    $(OCamlC) -c -annot -bin-annot $<
+            else
+                %.cmo %.cmi %.cmt %.annot: %.ml %.cmi :scanner: scan-ocaml-%.ml
+                    $(OCamlC) -c -annot -bin-annot $<
+
+    %.cmx %(EXT_OBJ) : %.ml
+        section rule
+            if $(target-exists %.mli)
+                %.cmx %$(EXT_OBJ) : %.ml %.cmi :scanner: scan-ocaml-%.ml
+                    $(OCamlOpt) -c -annot -bin-annot $<
+            else
+                %.cmx %$(EXT_OBJ) %.cmi: %.ml %.cmi :scanner: scan-ocaml-%.ml
+                    $(OCamlOpt) -c -annot -bin-annot $<
+
+    %.cmi %.cmti : %.mli :scanner: scan-ocaml-%.mli
+        $(OCamlC) -c -bin-annot $<
+
+else
+
+    %.cmo : %.ml
+        section rule
+            if $(target-exists %.mli)
+                %.cmo %.cmt %.annot: %.ml %.cmi :scanner: scan-ocaml-%.ml
+                    $(OCamlC) -c -annot -bin-annot $<
+            else
+                %.cmo %.cmi %.cmt %.annot: %.ml %.cmi :scanner: scan-ocaml-%.ml
+                    $(OCamlC) -c -annot -bin-annot $<
+
+    %.cmx %(EXT_OBJ) %.cmt %.annot: %.ml
+        section rule
+            if $(target-exists %.mli)
+                %.cmx %$(EXT_OBJ) : %.ml %.cmi :scanner: scan-ocaml-%.ml
+                    $(OCamlOpt) -c -annot -bin-annot $<
+            else
+                %.cmx %$(EXT_OBJ) %.cmi: %.ml %.cmi :scanner: scan-ocaml-%.ml
+                    $(OCamlOpt) -c -annot -bin-annot $<
+
+    %.cmi %.cmti : %.mli :scanner: scan-ocaml-%.mli
+        $(OCamlC) -c -bin-annot $<
+
+
 #|Define OCAML_ANNOT so that ocamlc/ocamlopt automatically create spot/spit/annot/cmt/cmti files, even without -annot/-bin-annot option. This requires a special compiler patch 
 setenv(OCAML_ANNOT, 1)
 
-#|Additional implicit rules by file extensions
-# annot, spot, spit files
-%.annot %.spot %.cmt: %.ml %.cmi
-	$(OCamlC) -c $<
-
-%.spit %.cmti: %.mli 
-	$(OCamlC) -c $<
-
 #|Enable the backtrace
 setenv(OCAMLRUNPARAM, b)
 
         $(OCAMLFIND) $(OCAMLOPTLINK) $(LAZY_OCAMLFINDFLAGS) $(PREFIXED_OCAMLPACKS) $(OCAMLFLAGS) $(OCAMLOPTFLAGS) \
                 $(OCAML_LIB_FLAGS) -a -o $(NATIVELIB) $(OCamlLinkSort $(CMXFILES))
 
-   $(NATIVESHAREDLIB) $(CLIB): $(CMXFILES) $(OFILES)
+   $(NATIVESHAREDLIB): $(CMXFILES) $(OFILES)
          $(OCAMLFIND) $(OCAMLOPTLINK) $(LAZY_OCAMLFINDFLAGS) $(PREFIXED_OCAMLPACKS) $(OCAMLFLAGS) $(OCAMLOPTFLAGS) \
                  $(OCAML_LIB_FLAGS) -shared -o $(NATIVESHAREDLIB) $(OCamlLinkSort $(CMXFILES))
 
              export
          $(BYTE_TARGETS): $(BYTE_DEPS)
             $(OCAMLFIND) $(OCAMLC) $(LAZY_OCAMLFINDFLAGS) $(PREFIXED_OCAMLPACKS) $(OCAMLFLAGS) \
-                $(OCAMLCFLAGS) $(OCAML_LIB_FLAGS) -pack -o $(CMO) $(OCamlLinkSort $(CMOFILES))
+                $(OCAMLCFLAGS) $(OCAML_LIB_FLAGS) -pack -bin-annot -o $(CMO) $(OCamlLinkSort $(CMOFILES))
 
    protected.NATIVE_DEPS = $(CMXFILES) $(OFILES)
    $(NATIVE_TARGETS): $(NATIVE_DEPS)
             export
          $(NATIVE_TARGETS): $(NATIVE_DEPS)
             $(OCAMLFIND) $(OCAMLOPTLINK) $(LAZY_OCAMLFINDFLAGS) $(PREFIXED_OCAMLPACKS) $(OCAMLFLAGS) \
-                $(OCAMLOPTFLAGS) $(OCAML_LIB_FLAGS) -pack -o $(CMX) $(OCamlLinkSort $(CMXFILES))
+                $(OCAMLOPTFLAGS) $(OCAML_LIB_FLAGS) -pack -bin-annot -o $(CMX) $(OCamlLinkSort $(CMXFILES))
 
    $(CMI):
       section rule
 #     DOWNLOAD_URLS[]=$(list_filter $(fun x, $(is_url $(x))), $(URLS))
 list_filter(pred, list) =
   result=
-  foreach(x, $(list))
+  foreach(x => ..., $(list))
     if $(apply $(pred), $(x))
       result+=$(x)
       export
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.