Changes by: Jason Hickey (jyh at cs.caltech.edu)
Date: 2007-05-01 11:12:04 -0700 (Tue, 01 May 2007)
Revision: 10579
Log message:

      Add .STATIC rules.  This is different from a "static. =" section.
     
        - .STATIC rules are delayed; they are evaluated only if the value is needed.
        - .STATIC rules allow dependencies, and explicit variables.
        - The values are stored in .omakedb
     
     * Basic usage:
     
         .STATIC:
             println(foo)
             X = 1
         Y = $X
     
     The variable X is exported.  The rule is evaluated if the value for $X is needed,
     but it is lazy.  The definition of Y does not force evaluation.
     
     * With dependencies:
     
        .STATIC: x.input
            X = $(expensive-function x.input)
     
     This is be evaluated if x.input changes and X is forced.
     
     * Exporting variables
     
        .STATIC: X: x.input
            Y = 1
            X = $Y
     
     Y is not exported from the section.

Changes  Path
+0 -1 omake-branches/0.9.8.x/lib/OMakeroot.om
+0 -1 omake-branches/0.9.8.x/lib/Pervasives.om
+2 -3 omake-branches/0.9.8.x/lib/build/C.om
+0 -1 omake-branches/0.9.8.x/lib/build/Common.om
+1 -2 omake-branches/0.9.8.x/lib/build/LaTeX.om
+3 -4 omake-branches/0.9.8.x/lib/build/OCaml.om
+1 -2 omake-branches/0.9.8.x/lib/build/svn_realclean.om
+0 -1 omake-branches/0.9.8.x/lib/configure/Configure.om
+0 -1 omake-branches/0.9.8.x/lib/configure/X.om
+1 -2 omake-branches/0.9.8.x/lib/configure/fam.om
+1 -2 omake-branches/0.9.8.x/lib/configure/fs_case_sensitive.om
+1 -2 omake-branches/0.9.8.x/lib/configure/ncurses.om
+2 -2 omake-branches/0.9.8.x/lib/configure/readline.om
+0 -1 omake-branches/0.9.8.x/lib/configure/snprintf.om
+0 -1 omake-branches/0.9.8.x/lib/parse/C/Lex.om
+0 -1 omake-branches/0.9.8.x/lib/parse/C/Parse.om
+3 -3 omake-branches/0.9.8.x/src/build/omake_build.ml
+3 -3 omake-branches/0.9.8.x/src/build/omake_build_type.ml
+26 -8 omake-branches/0.9.8.x/src/build/omake_rule.ml
+10 -0 omake-branches/0.9.8.x/src/build/omake_rule.mli
+16 -10 omake-branches/0.9.8.x/src/builtin/omake_builtin_object.ml
+17 -0 omake-branches/0.9.8.x/src/builtin/omake_builtin_target.ml
+27 -9 omake-branches/0.9.8.x/src/env/omake_command_digest.ml
+2 -0 omake-branches/0.9.8.x/src/env/omake_command_digest.mli
+51 -0 omake-branches/0.9.8.x/src/env/omake_env.ml
+22 -2 omake-branches/0.9.8.x/src/env/omake_env.mli
+143 -39 omake-branches/0.9.8.x/src/env/omake_ir_ast.ml
+2 -1 omake-branches/0.9.8.x/src/env/omake_ir_semant.ml
+112 -43 omake-branches/0.9.8.x/src/eval/omake_eval.ml
+49 -21 omake-branches/0.9.8.x/src/eval/omake_value.ml
+1 -0 omake-branches/0.9.8.x/src/eval/omake_value.mli
+77 -31 omake-branches/0.9.8.x/src/ir/omake_cache.ml
+10 -4 omake-branches/0.9.8.x/src/ir/omake_cache.mli
+10 -7 omake-branches/0.9.8.x/src/ir/omake_cache_type.ml
+2 -1 omake-branches/0.9.8.x/src/ir/omake_ir.ml
+2 -1 omake-branches/0.9.8.x/src/ir/omake_ir_free_vars.ml
+3 -1 omake-branches/0.9.8.x/src/ir/omake_ir_print.ml
+3 -0 omake-branches/0.9.8.x/src/ir/omake_symbol.ml
+12 -4 omake-branches/0.9.8.x/src/ir/omake_value_print.ml
+18 -6 omake-branches/0.9.8.x/src/ir/omake_value_type.ml
+1 -0 omake-branches/0.9.8.x/src/ir/omake_var.ml
+1 -0 omake-branches/0.9.8.x/src/ir/omake_var.mli
+4 -2 omake-branches/0.9.8.x/src/main/omake_shell.ml