-all: Computation/Eval.vo Computation/Tactics.vo Computation/Termination.vo Computation/Monad.vo Computation/Equivalence.vo
+vfiles = $(shell find src -name \*.v)
+vofiles = $(vfiles:src/%.v=src/%.vo)
+
+all: $(vofiles)
clean:; rm */*.vo
-Computation/Equivalence.vo: Computation/Monad.vo Computation/Termination.vo
-Computation/Termination.vo: Computation/Monad.vo
-Computation/Tactics.vo: Computation/Monad.vo
-Computation/Eval.vo: Computation/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 Computation Computation $<
\ 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