GENERATED_DOT_FILES = \
	codestats_fsm_pt1.dot \
	codestats_fsm_pt2.dot \
	codestats_fsm_pt3.dot \
	codestats_fsm_pt4.dot \
	codestats_fsm_pt5.dot \
	codestats_fsm_pt6.dot \
	codestats_fsm_pt6.dot \
	codestats_fsm_pt7.dot

GENERATED_PNG_FILES = \
	$(subst .dot,.png,$(GENERATED_DOT_FILES))

GENERATED_SVG_FILES = \
	$(subst .dot,.svg,$(GENERATED_DOT_FILES))

GENERATED_PDF_FILES = \
	$(subst .dot,.pdf,$(GENERATED_DOT_FILES))

GENERATED_FILES = \
	$(GENERATED_DOT_FILES) \
	$(GENERATED_PDF_FILES) \
	$(GENERATED_PNG_FILES) \
	$(GENERATED_SVG_FILES)

default: pngs svgs pdfs

pdfs: $(GENERATED_PDF_FILES)

pngs: $(GENERATED_PNG_FILES)

svgs: $(GENERATED_SVG_FILES)

clean:
	rm -f *~

immaculate: clean
	rm -f $(GENERATED_FILES)

codestats_fsm_pt1.dot: codestats_fsm.dot
	unifdef -DPART=1 -o $@ $< || exit 0

codestats_fsm_pt2.dot: codestats_fsm.dot
	unifdef -DPART=2 -o $@ $< || exit 0

codestats_fsm_pt3.dot: codestats_fsm.dot
	unifdef -DPART=3 -o $@ $< || exit 0

codestats_fsm_pt4.dot: codestats_fsm.dot
	unifdef -DPART=4 -o $@ $< || exit 0

codestats_fsm_pt5.dot: codestats_fsm.dot
	unifdef -DPART=5 -o $@ $< || exit 0

codestats_fsm_pt6.dot: codestats_fsm.dot
	unifdef -DPART=6 -o $@ $< || exit 0

codestats_fsm_pt7.dot: codestats_fsm.dot
	unifdef -DPART=7 -o $@ $< || exit 0

DOT_PNG_FLAGS = -Gdpi=400

codestats_fsm_pt%.png: codestats_fsm_pt%.dot
	dot -Tpng $(DOT_PNG_FLAGS) -o$@ $<

codestats_fsm_pt%.svg: codestats_fsm_pt%.dot
	dot -Tsvg -o$@ $<

codestats_fsm_pt%.pdf: codestats_fsm_pt%.dot
	dot -Tpdf -o$@ $<

preview_%: codestats_fsm_pt%.png
	evince $<
