Changes by: Aleksey Nogin (nogin at cs.caltech.edu)
Date: 2003-12-01 17:52:48 -0800 (Mon, 01 Dec 2003)
Revision: 294
Log message:

      - When both NATIVE and BYTE are enabled, use the bytecode one for %.cmi : %.ml
      - (bug 121) Killed the debugging printout.
      

Changes  Path
+4 -5 omake/OMakeroot.src.in

Changes by: Jason Hickey (jyh at cs.caltech.edu)
Date: 2003-12-02 08:40:46 -0800 (Tue, 02 Dec 2003)
Revision: 295
Log message:

      | 1. Reorganized buultins into several files.
      | 2. Added the $(which <file>) command, which finds the executable
      |    in the path.
      | 3. Added "special" functions, where the arguments are always lazy.
      |    This could be used, for example, for the $(if e1, e2, e3) function,
      |    where only one of e2 and e3 should be evaluated.
      |
      |    There is an interesting issue with lazy functions, so "if" stays
      |    eager for now.  Consider this code, when "if" is lazy.
      |
      |    A = 1
      |    B = 2
      |    X = $(if true, $(A), $(B))
      |    A = 3
      |    print(A = $(A))
      |
      |    This would print "A = 3" because of implicit quoting on the arguments
      |    to if.  This may-or-may-not be the expected semantics.
      

Changes  Path
+86 -4 libmojave/stdlib/lm_filename_util.ml
+5 -0 libmojave/stdlib/lm_filename_util.mli
+15 -1 libmojave/stdlib/lm_string_util.ml
+7 -0 libmojave/stdlib/lm_string_util.mli
+81 -0 omake/Files
+4 -2 omake/Makefile.in
+2 -2 omake/Makefile.nt
+1 -1 omake/OMakefile.in
+1 -0 omake/OMakeroot.src.in
+33 -657 omake/src/build/omake_builtin.ml
Added omake/src/build/omake_builtin_base.ml
Properties omake/src/build/omake_builtin_base.ml
Added omake/src/build/omake_builtin_base.mli
Properties omake/src/build/omake_builtin_base.mli
Added omake/src/build/omake_builtin_file.ml
Properties omake/src/build/omake_builtin_file.ml
Added omake/src/build/omake_builtin_file.mli
Properties omake/src/build/omake_builtin_file.mli
Added omake/src/build/omake_builtin_io.ml
Properties omake/src/build/omake_builtin_io.ml
Added omake/src/build/omake_builtin_io.mli
Properties omake/src/build/omake_builtin_io.mli
Added omake/src/build/omake_builtin_type.ml
Properties omake/src/build/omake_builtin_type.ml
Added omake/src/build/omake_builtin_util.ml
Properties omake/src/build/omake_builtin_util.ml
Added omake/src/build/omake_builtin_util.mli
Properties omake/src/build/omake_builtin_util.mli
+28 -20 omake/src/env/omake_env.ml
+3 -2 omake/src/env/omake_env.mli
+7 -6 omake/src/eval/omake_eval.ml
+13 -9 omake/src/eval/omake_rule.ml
+1 -0 omake/src/eval/omake_rule.mli
+8 -2 omake/src/eval/omake_value.ml
+3 -3 omake/src/ir/omake_cache_type.ml
+9 -8 omake/src/ir/omake_command.ml

Changes by: Jason Hickey (jyh at cs.caltech.edu)
Date: 2003-12-02 16:58:37 -0800 (Tue, 02 Dec 2003)
Revision: 296
Log message:

      | Added support for omake commands, and changed the syntax of active rules.
      | The new syntax is like this:
      |
      | %.cmi: %.ml
      |     section rule
      |         if $(BYTE_ENABLED)
      |             %.cmi %.cmo: %.ml
      |                 $(OCAMLC) $(OCAMLCFLAGS) $(OCAMLPPFLAGS) $(OCAMLINCLUDES) -c $<
      |         else
      |             %.cmi %.cmx %$(EXT_OBJ): %.ml
      |                 $(OCAMLOPT) $(OCAMLOPTFLAGS) $(OCAMLPPFLAGS) $(OCAMLINCLUDES) -c $<
      |
      | There is also "section eval" for commands that are omake code.
      |
      | .version.ocaml: $(which $(OCAMLC))
      |     $(OCAMLC) -v > $@
      |     section eval
      |        if $(not $(grep q, 3.06, $@)) then
      |            eprint(You need ocaml version 3.06)
      |            exit 1
      

Changes  Path
+8 -7 omake/OMakeroot.src.in
+99 -117 omake/omake_ast_parse.mly
+2 -9 omake/src/ast/omake_ast.ml
+1 -7 omake/src/ast/omake_ast_print.ml
+27 -23 omake/src/build/omake_build.ml
+3 -3 omake/src/build/omake_build_type.ml
+1 -2 omake/src/build/omake_builtin.ml
+30 -24 omake/src/env/omake_env.ml
+16 -13 omake/src/env/omake_env.mli
+25 -10 omake/src/env/omake_ir_ast.ml
+45 -23 omake/src/eval/omake_eval.ml
+272 -116 omake/src/eval/omake_rule.ml
+6 -4 omake/src/eval/omake_rule.mli
+20 -6 omake/src/exec/omake_exec_local.ml
+5 -5 omake/src/exec/omake_exec_print.ml
+5 -1 omake/src/ir/omake_cache_type.ml
+51 -20 omake/src/ir/omake_command.ml
+3 -2 omake/src/ir/omake_command.mli
+5 -4 omake/src/ir/omake_ir.ml
+15 -7 omake/src/ir/omake_ir_print.ml
+1 -0 omake/src/ir/omake_ir_util.ml

Changes by: Jason Hickey (jyh at cs.caltech.edu)
Date: 2003-12-02 19:47:13 -0800 (Tue, 02 Dec 2003)
Revision: 297
Log message:

      | Bug fixes to get section eval commands to work.
      | Next:
      |    1. Add the $(shell ...) function
      |    2. Figure out why scanners are not getting folded together.
      

Changes  Path
+2 -2 omake/src/build/omake_build_type.ml
+49 -30 omake/src/build/omake_builtin_io.ml
+1 -1 omake/src/env/omake_ast_lex.mll
+1 -1 omake/src/eval/omake_rule.mli
+3 -5 omake/src/exec/omake_exec_local.ml
+1 -1 omake/src/exec/omake_exec_remote.ml
+5 -5 omake/src/exec/omake_exec_type.ml
+12 -4 omake/src/ir/omake_cache.ml
+3 -3 omake/src/ir/omake_cache.mli
+10 -6 omake/src/ir/omake_cache_type.ml
+21 -5 omake/src/ir/omake_command.ml
+15 -10 omake/src/ir/omake_command.mli
+1 -1 omake/version.txt

Changes by: Jason Hickey (jyh at cs.caltech.edu)
Date: 2003-12-02 20:58:20 -0800 (Tue, 02 Dec 2003)
Revision: 298
Log message:

      Added the $(shell ...) builtin.
      

Changes  Path
+19 -19 omake/Files
+27 -25 omake/src/build/omake_build.ml
+2 -2 omake/src/build/omake_builtin.ml
+2 -1 omake/src/build/omake_builtin.mli
+22 -1 omake/src/build/omake_builtin_base.ml
+4 -4 omake/src/build/omake_builtin_file.ml
+2 -1 omake/src/build/omake_builtin_type.ml
+16 -7 omake/src/exec/omake_exec.ml
+115 -61 omake/src/exec/omake_exec_local.ml
+3 -0 omake/src/exec/omake_exec_local.mli
+2 -0 omake/src/exec/omake_exec_remote.ml
+8 -0 omake/src/exec/omake_exec_type.ml

Changes by: Jason Hickey (jyh at cs.caltech.edu)
Date: 2003-12-02 21:04:37 -0800 (Tue, 02 Dec 2003)
Revision: 299
Log message:

      The :effects: should be specified properly in the %.cmi: %.ml rule.
      

Changes  Path
+2 -2 omake/OMakeroot.src.in

Changes by: Jason Hickey (jyh at cs.caltech.edu)
Date: 2003-12-04 10:03:42 -0800 (Thu, 04 Dec 2003)
Revision: 300
Log message:

      | Fixed bug #123.
      |
      | Each rule can specify "side-effects": files that may be created/modified
      | by executing the rule, but are not to be considered as targets.  Consider
      | the following two rules:
      |
      | %.cmo: %.ml
      |    ocamlc -c $<
      |
      | %.cmi: %.ml :effects: %.cmo
      |    ocamlc -c $<
      |
      | The %.cmi rule states that the %.cmo file may be constructed as a side-effect
      | of the rule.  Every target includes itself as a side-effect.
      |
      | Side-effects are used for two purposes:
      |    1. Dependency merging.  The dependencies for a target are the union
      |       of the dependencies of all of the effects.  So the %.cmi rule
      |       states that the dependencies of %.cmi include the dependencies
      |       of the %.cmo, and vice versa.
      |
      |    2. Limiting parallelization.  Commands that have intersecting effects
      |       cannot be run in parallel.
      |
      | An invariant of effects is that they must be symmetric: if target1 includes
      | target2 as a side-effect, target2 must also include target1.
      |
      | Before this fix, this invariant was enforced by taking the intersection of
      | the effect sets for any target in the effects.  That is, since the rule for
      | %.cmo did not mention %.cmi, then %.cmi cannot mention %.cmo.  This is clearly
      | wrong.  This update takes the union of the effects.
      

Changes  Path
+40 -12 omake/src/build/omake_build.ml
+8 -3 omake/src/eval/omake_rule.ml
+1 -1 omake/src/exec/omake_exec_print.ml

Changes by: Jason Hickey (jyh at cs.caltech.edu)
Date: 2003-12-04 10:51:03 -0800 (Thu, 04 Dec 2003)
Revision: 301
Log message:

      | Added more expressive arity checking, addressing bug #124.
      |
      | Note, arity checking uses static scope.  So, for example, this
      | code will not raise an arity exception at parse time (but it will
      | at run time).
      |
      | F(a) =
      |    eprintln($(a))
      |
      | G(b) =
      |    F($(b))
      |
      | F(a, b) =
      |    eprintln($(a): $(b))
      |
      | G(fail)
      

Changes  Path
+2 -1 omake/omake_exn.ml
+2 -1 omake/omake_pos.ml
+61 -61 omake/src/build/omake_builtin_base.ml
+3 -2 omake/src/build/omake_builtin_base.mli
+17 -16 omake/src/build/omake_builtin_file.ml
+3 -2 omake/src/build/omake_builtin_file.mli
+20 -19 omake/src/build/omake_builtin_io.ml
+3 -2 omake/src/build/omake_builtin_io.mli
+7 -7 omake/src/env/omake_env.ml
+4 -4 omake/src/env/omake_env.mli
+25 -13 omake/src/env/omake_ir_ast.ml
+1 -1 omake/src/env/omake_ir_ast.mli
+1 -1 omake/src/eval/omake_eval.ml
+14 -0 omake/src/ir/omake_ir.ml
+13 -0 omake/src/ir/omake_ir_print.ml
+3 -2 omake/src/ir/omake_ir_print.mli

Changes by: Jason Hickey (jyh at cs.caltech.edu)
Date: 2003-12-04 10:55:58 -0800 (Thu, 04 Dec 2003)
Revision: 302
Log message:

      Strip surrounding whitespace from the $(shell ...) command.
      

Changes  Path
+1 -1 omake/src/build/omake_builtin_base.ml
+1 -1 omake/src/ir/omake_ir_print.ml

Changes by: Jason Hickey (jyh at cs.caltech.edu)
Date: 2003-12-04 11:04:10 -0800 (Thu, 04 Dec 2003)
Revision: 303
Log message:

      Newlines turn into whitespace in $(shell ...) commands.
      

Changes  Path
+1 -1 omake/src/build/omake_builtin_base.ml
+17 -13 omake/src/exec/omake_exec_local.ml

Changes by: Jason Hickey (jyh at cs.caltech.edu)
Date: 2003-12-04 12:30:41 -0800 (Thu, 04 Dec 2003)
Revision: 304
Log message:

      Print a sensible error message when the scanner produces ill-formed output.
      

Changes  Path
+27 -11 omake/src/build/omake_build.ml
+1 -1 omake/src/exec/omake_exec_local.ml
+16 -0 omake/src/exec/omake_exec_print.ml
+12 -1 omake/src/exec/omake_exec_print.mli
+1 -0 omake/src/ir/omake_state.ml
+1 -0 omake/src/ir/omake_state.mli

Changes by: Jason Hickey (jyh at cs.caltech.edu)
Date: 2003-12-04 12:56:41 -0800 (Thu, 04 Dec 2003)
Revision: 305
Log message:

      Fail if a rule does not build the target.
      

Changes  Path
+6 -1 omake/src/build/omake_build.ml

Changes by: Jason Hickey (jyh at cs.caltech.edu)
Date: 2003-12-04 13:31:18 -0800 (Thu, 04 Dec 2003)
Revision: 306
Log message:

      Addressed bug #108.  omake will now abort unless the current directory
      is part of the current project.  This can be disabled with the --project
      option, which runs the build as if it were in the project root directory.
      

Changes  Path
+15 -0 omake/src/build/omake_build.ml
+1 -1 omake/src/exec/omake_exec_remote.ml
+1 -1 omake/src/ir/omake_node.ml
+1 -1 omake/src/ir/omake_node_sig.ml
+2 -1 omake/src/ir/omake_options_type.ml
+4 -1 omake/src/ir/omake_state.ml

Changes by: Jason Hickey (jyh at cs.caltech.edu)
Date: 2003-12-04 13:57:55 -0800 (Thu, 04 Dec 2003)
Revision: 307
Log message:

      Print a warning if any of the effects of a rule have different environments.
      This addresses bug #113.
      

Changes  Path
+19 -0 omake/src/build/omake_build.ml

Changes by: Jason Hickey (jyh at cs.caltech.edu)
Date: 2003-12-04 14:06:24 -0800 (Thu, 04 Dec 2003)
Revision: 308
Log message:

      Use the parallel argument in the build_targets function.
      

Changes  Path
+7 -6 omake/src/build/omake_build.ml

Changes by: Jason Hickey (jyh at cs.caltech.edu)
Date: 2003-12-04 14:55:23 -0800 (Thu, 04 Dec 2003)
Revision: 309
Log message:

      Enforce the simple semantics for computed rules: they must have exactly
      the same target that is being computed.  This addresses the problem in
      bug #120, although I think I like Aleksey's semantics better.
      

Changes  Path
+2 -0 omake/omake_exn.ml
+2 -0 omake/omake_pos.ml
+25 -15 omake/src/env/omake_env.ml
+1 -1 omake/src/env/omake_env.mli
+1 -1 omake/src/eval/omake_rule.ml

Changes by: Jason Hickey (jyh at cs.caltech.edu)
Date: 2003-12-08 16:11:41 -0800 (Mon, 08 Dec 2003)
Revision: 310
Log message:

      Oops!  Forgot to commit to recent MetaPRL change.
      

Changes  Path
+1 -21 omake/src/build/omake_build.ml
+0 -1 omake/src/build/omake_build.mli
+13 -0 omake/src/build/omake_builtin_base.ml
+0 -2 omake/src/main/omake_main.ml
+1 -1 omake/version.txt

Changes by: Jason Hickey (jyh at cs.caltech.edu)
Date: 2003-12-10 15:35:21 -0800 (Wed, 10 Dec 2003)
Revision: 312
Log message:

      Added -w option to print make-style Entering/leaving directory messages.
      This addresses bug #134.
      

Changes  Path
+5 -1 omake/src/build/omake_build.ml
+31 -4 omake/src/exec/omake_exec_print.ml
+5 -0 omake/src/exec/omake_exec_print.mli
+1 -0 omake/src/ir/omake_options_type.ml
+4 -0 omake/src/ir/omake_state.ml

Changes by: Jason Hickey (jyh at cs.caltech.edu)
Date: 2003-12-10 15:51:45 -0800 (Wed, 10 Dec 2003)
Revision: 313
Log message:

      Oops, my previous commit produced unbalanced entering/leaving
      message for directories.  Fixed.
      

Changes  Path
+130 -65 omake/Makefile.dep.nt
+11 -10 omake/src/exec/omake_exec_print.ml

Changes by: Jason Hickey (jyh at cs.caltech.edu)
Date: 2003-12-10 16:42:42 -0800 (Wed, 10 Dec 2003)
Revision: 314
Log message:

      When a command fails, abort *all* effects.  This fixes bug #133.
      

Changes  Path
+8 -4 omake/src/build/omake_build.ml

Changes by: Aleksey Nogin (nogin at cs.caltech.edu)
Date: 2003-12-21 16:05:48 -0800 (Sun, 21 Dec 2003)
Revision: 317
Log message:

      cvs_realclean: rm_command was initialized to early, so the "-f" option was ignored - fixed.
      

Changes  Path
+46 -44 omake/src/main/cvs_realclean.ml