PDFLATEX := pdflatex
PDFLATEXFLAGS := -halt-on-error -file-line-error
+PLOTS := stw pause time mem
+PROGS := bigarr conalloc concpu mcore rnddata sbtree split \
+ bh bisort em3d tsp voronoi dil
+
+STATS := ./stats.py
+TEMPLITE := ./templite.py
+
+AWK := awk
+EPSTOPDF := epstopdf
+GNUPLOT := gnuplot
+
+comma := ,
+
imgs := $O/img/mark-sweep-0.pdf \
$(patsubst %.dot,$O/%.pdf,$(wildcard img/mark-sweep-*.dot)) \
- $O/img/heap.pdf
+ $O/img/heap.pdf \
+ $(patsubst %,$O/img/norm-hist-%.pdf,$(PLOTS))
+
+# Verbosity flag (empty show nice messages, non-empty use make messages)
+# When used internal, $V expand to @ is nice messages should be printed, this
+# way it's easy to add $V in front of commands that should be silenced when
+# displaying the nice messages.
+override V := $(if $V,,@)
+# honour make -s flag
+override V := $(if $(findstring s,$(MAKEFLAGS)),,$V)
presentacion.pdf: $O/presentacion.tex $(imgs)
- @echo "$(PDFLATEX) $< > $@"
- @cd $O && $(PDFLATEX) $(PDFLATEXFLAGS) $(<F) > $@.log
- @cd $O && $(PDFLATEX) $(PDFLATEXFLAGS) $(<F) >> $@.log
- @mv $O/$@ $@
+ $(if $V,@echo "$(PDFLATEX) $< > $@")
+ $V cd $O && $(PDFLATEX) $(PDFLATEXFLAGS) $(<F) > $@.log
+ $V cd $O && $(PDFLATEX) $(PDFLATEXFLAGS) $(<F) >> $@.log
+ $V mv $O/$@ $@
$O/presentacion.tex: presentacion.rst $(R2B)
- @echo "$(R2B) $< > $@"
- @$(R2B) $(R2BFLAGS) $< | $(R2BFILTER) > $@
+ $(if $V,@echo "$(R2B) $< > $@")
+ $V $(R2B) $(R2BFLAGS) $< | $(R2BFILTER) > $@
$O/img/%.pdf: img/%.dot
- @echo "$(DOT) $< > $@"
- @$(DOT) $(DOTFLAGS) -Tpdf -o $@ $<
- @#pdftops mark-sweep-$i.pdf && ps2pdf14 mark-sweep-$i.ps && rm mark-sweep-$i.ps
+ $(DOT) $(DOTFLAGS) -Tpdf -o $@ $<
$O/img/%.pdf: img/%.aafig
- @echo "$(AAFIG) $< > $@"
- @$(AAFIG) $(AAFIGFLAGS) -t pdf -o $@ $<
+ $(AAFIG) $(AAFIGFLAGS) -t pdf -o $@ $<
+
+$O/img/norm-hist-%.csv: img/raw-hist-%.csv
+ $(if $V,@echo "norm $< > $@")
+ $V $(AWK) -F, -v m=`cut -d, -f4 $< | $(STATS) '$$1' '%(max)s'` \
+ '{print $$1 "," $$2/m "," $$3/m "," $$4/m "," $$5/m}' \
+ $< > $@
+
+$O/img/norm-hist-%.eps: $(patsubst %,$O/img/norm-hist-\%-%.csv,$(PROGS))
+ $(if $V,@echo "plot $< > $@")
+ $V $(TEMPLITE) "progs=($(patsubst %,'%'$(comma),$(PROGS))), " \
+ "files=($(patsubst %,'%'$(comma),$^))" \
+ < histogram-plot.tpl.gpi | $(GNUPLOT) > $@
+
+$O/img/norm-hist-%.pdf: $O/img/norm-hist-%.eps
+ $(EPSTOPDF) --outfile=$@ $<
$O/img/%.pdf: img/%.pdf
- @echo "cp $< > $@"
- @cp $< $@
+ cp $< $@
$O/heap.pdf: AAFIGFLAGS += -s 1.4 -a 0.8