-all: Recursion/Eval.vo Recursion/Tactics.vo Recursion/Termination.vo Recursion/Monad.vo
+vfiles = $(shell find src -name \*.v)
+vofiles = $(vfiles:src/%.v=src/%.vo)
+
+all: $(vofiles)
clean:; rm */*.vo
-Recursion/Termination.vo: Recursion/Monad.vo
-Recursion/Tactics.vo: Recursion/Monad.vo
-Recursion/Eval.vo: Recursion/Termination.vo
+docs: $(vfiles:src/%.v=doc/%.html)
+
+src/%.vo: src/%.v
+ mkdir -p `dirname $@`
+ coqc -R src/Computation Computation $<
+doc/%.html: src/%.v
+ mkdir -p `dirname $@`
+ coqdoc --no-index --html -o $@ $<
-%.vo: %.v
- coqc -R Recursion Recursion $<
\ No newline at end of file
+src/Computation/Equivalence.vo: src/Computation/Monad.vo src/Computation/Termination.vo
+src/Computation/Termination.vo: src/Computation/Monad.vo
+src/Computation/Tactics.vo: src/Computation/Monad.vo
+src/Computation/Eval.vo: src/Computation/Termination.vo