Implement balanced binary tree and refactor
[tiger.ml.git] / exercises / ch01 / Makefile
index 2912309..8587a04 100644 (file)
@@ -4,30 +4,51 @@ OCAMLC_OPTIONS := -w A -warn-error A
 OCAMLC_BYTE    := ocamlc.opt   $(OCAMLC_OPTIONS)
 
 EXECUTABLES := \
-       straight_line_program_interpreter \
-       tree
+ straight_line_program_interpreter \
+ tree_demo
+EXECUTABLES := $(addsuffix .byte,$(EXECUTABLES))
 
-.PHONY: build clean demo_unbalanced
+SET_MEMBERS := \
+ a b c d e f g h i j k l m n o p q r s t u v foo bar kgkvbkvg \
+ lkhjlk gfjyfjf fdtrdchfhtr trhfgfch hjlilijhl iygkyugkgkhy
 
-build : $(EXECUTABLES)
 
-%: %.ml %.cmo %.cmi
-       $(OCAMLC_BYTE) -o $@ $*.cmo
+.PHONY: \
+ all \
+ clean \
+ build \
+ demos
 
-%.cmi: %.mli
-       $(OCAMLC_BYTE) -o $@ -c $<
-
-%.cmo: %.ml %.cmi
-       $(OCAMLC_BYTE) -c $<
+all:
+       $(MAKE) clean
+       $(MAKE) build
+       $(MAKE) demos
 
 clean:
-       rm -f $(EXECUTABLES) tree.dot  # There's also tree.png, but I'm keeping it.
+       rm -rf ./_build/
+       rm -f $(EXECUTABLES)
+       # There're also tree demo PNGs, but I want to keep them around, for
+       # referencing without having to build the project.
+
+build:
+       ocamlbuild $(EXECUTABLES)
+
+demos: \
+ run_straight_line_program_interpreter \
+ tree_demo_unbalanced.png \
+ tree_demo_balanced.png
+
+run_straight_line_program_interpreter: straight_line_program_interpreter.byte
+       ./$<
+
+tree_demo_unbalanced.dot: tree_demo.byte
+       ./$< unbalanced $(SET_MEMBERS) > $@
 
-tree.dot: tree
-       ./tree a b c d e f g h i j k l m n o p q r s t u v foo bar kgkvbkvg lkhjlk gfjyfjf fdtrdchfhtr trhfgfch hjlilijhl iygkyugkgkhy > tree.dot
+tree_demo_unbalanced.png: tree_demo_unbalanced.dot
+       neato -T png $< > $@
 
-tree.png: tree.dot
-       neato -T png tree.dot > tree.png
+tree_demo_balanced.dot: tree_demo.byte
+       ./$< balanced $(SET_MEMBERS) > $@
 
-demo_unbalanced: tree.png
-       sxiv ./tree.png
+tree_demo_balanced.png: tree_demo_balanced.dot
+       neato -T png $< > $@
This page took 0.029524 seconds and 4 git commands to generate.