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 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 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 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 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 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 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 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 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 |