P_LD = @echo ' LD $@';
P_PLOT = @echo ' PLOT $@';
P_MAKE = @echo ' MAKE $@';
-P_RUN = @echo ' RUN $<';
+P_RUN = @echo ' RUN $< $(arg1) $(arg2) $(arg3)';
P_AWK = @echo ' AWK $@';
endif
.PRECIOUS: $(STAT_DIR)/%.c.csv $(STAT_DIR)/%.a.csv
$(STAT_DIR)/%.c.csv $(STAT_DIR)/%.a.csv: $(BIN_DIR)/%
- $(P_RUN) ./$<
+ $(P_RUN) ./$< $(args)
$P mv gc-collections.csv $(STAT_DIR)/$*.c.csv
$P mv gc-mallocs.csv $(STAT_DIR)/$*.a.csv
+# special command line arguments for benchmarks
+$(STAT_DIR)/split.c.csv $(STAT_DIR)/split.a.csv: override args := bible.txt
.PRECIOUS: $(STAT_DIR)/%.h.csv
-$(STAT_DIR)/%.h.csv: $(STAT_DIR)/%.a.csv
- $(P_AWK) awk -F, 'BEGIN { print "Size,Count" } NR > 1 { a[$$3]++ } \
- END { for (i in a) print i "," a[i] }' $< | sort > $@
+$(STAT_DIR)/%.h.csv: $(STAT_DIR)/%.a.csv hist.awk
+ $(P_AWK) awk -F, -f $(lastword $^) $< > $@
.PHONY: plot
plot: $(graphs)
-$(PLOT_DIR)/%.c.eps: $(STAT_DIR)/%.c.csv plot-c.gpi
+.PRECIOUS: $(PLOT_DIR)/%.tics
+$(PLOT_DIR)/%.tics: $(STAT_DIR)/%.h.csv tics.awk
+ $(P_AWK) awk -F, -f $(lastword $^) $< > $@
+
+$(PLOT_DIR)/%.c.eps: $(STAT_DIR)/%.c.csv $(STAT_DIR)/%.a.csv \
+ $(STAT_DIR)/%.h.csv $(PLOT_DIR)/%.tics plot-c.gpi
$(P_PLOT) sed "s|@@PRG@@|$(*F)|g; s|@@COL@@|$(VERS)|g; \
- s|@@IN@@|$<|g; s|@@OUT@@|$@|g" $(lastword $^) \
+ s|@@INC@@|$(word 1,$^)|g; s|@@INA@@|$(word 2,$^)|g; \
+ s|@@INH@@|$(word 3,$^)|g; s|@@OUT@@|$@|g; \
+ s|@@TICS@@|$(shell cat $(word 4,$^))|g" $(word 5,$^) \
| $(GNUPLOT)
.PHONY: clean