Changes by: Jason Hickey (jyh at cs.caltech.edu)
Date: 2005-05-12 16:06:43 -0700 (Thu, 12 May 2005)
Revision: 988
Log message:

      This is a significant change to .SCANNER rules, where .SCANNER rules
      are treated much more like normal rules.
      
      Externally, a .SCANNER rule has the usual rule form:
      
         .SCANNER: target: dependencies...
            ...scanner commands...
      
      In this commit, the scanner target is now decoupled from the
      build target, allowing a scanner result to be used for multiple
      build targets.  For example, ocamldep produces dependencies
      for .cmo and .cmx files simultaneously.  They can share
      the scanner rule by specifying an explicit :scanner: dependency.
      
          .SCANNER: scan-ocaml-%.ml: %.ml
              ocamldep $<
      
          %.cmo: %.ml :scanner: scan-ocaml-%.ml
              $(OCAMLC) ...
      
          %.cmx %.o: %.ml :scanner: scan-ocaml-%.ml
              $(OCAMLOPT) ...
      
      The current convention is that scanner targets should be named
      scan-<language>-<source-file>.
      
         -- If a rule has multiple :scanner: dependencies, the actual
            dependencies will be the union of the scanner results.
      
         -- The .SCANNER targets use a different namespace than
            normal targets, so it is valid to have overlapping rules.
      
                .SCANNER: foo:
                    echo "foo: boo"
      
                foo: :scanner: foo
                    ...
      
         -- For backwards compatibility, if a rule has no :scanner:
            dependencies, then omake will try to find a scanner with
            the same name as the target.  So in the example above,
            the :scanner: foo is actually unnecessary.
      

Changes  Path
+5 -0 omake/Files
+32 -28 omake/OMakeroot.src.in
+0 -6 omake/Pervasives.src
+513 -354 omake/doc/html/omake.html
+0 -6 omake/lib/Pervasives.om
+474 -444 omake/src/build/omake_build.ml
+31 -27 omake/src/build/omake_build_type.ml
+19 -3 omake/src/build/omake_builtin.ml
+17 -10 omake/src/build/omake_builtin_base.ml
+66 -65 omake/src/build/omake_builtin_file.ml
+2 -239 omake/src/build/omake_builtin_object.ml
Added omake/src/build/omake_builtin_target.ml
Properties omake/src/build/omake_builtin_target.ml
Added omake/src/build/omake_builtin_target.mli
Properties omake/src/build/omake_builtin_target.mli
+0 -4 omake/src/build/omake_builtin_util.ml
+403 -397 omake/src/env/omake_env.ml
+36 -43 omake/src/env/omake_env.mli
+4 -4 omake/src/eval/omake_eval.ml
+77 -69 omake/src/eval/omake_rule.ml
+0 -1 omake/src/eval/omake_rule.mli
+20 -21 omake/src/eval/omake_target.ml
+16 -22 omake/src/ir/omake_cache.ml
+4 -4 omake/src/ir/omake_cache.mli
+29 -8 omake/src/ir/omake_node.ml
+1 -0 omake/src/ir/omake_node.mli
+1 -0 omake/src/ir/omake_node_sig.ml
+5 -4 omake/src/ir/omake_node_type.ml
+1 -2 omake/src/ir/omake_symbol.ml
+1 -0 omake/src/util/omake_marshal.ml
+1 -1 omake/version.txt