3 ### Build script for start-up benchmarks
5 ### (c) 2020 Mark Wooding
8 ###----- Licensing notice ---------------------------------------------------
10 ### This file is part of Runlisp, a tool for invoking Common Lisp scripts.
12 ### Runlisp is free software: you can redistribute it and/or modify it
13 ### under the terms of the GNU General Public License as published by the
14 ### Free Software Foundation; either version 3 of the License, or (at your
15 ### option) any later version.
17 ### Runlisp is distributed in the hope that it will be useful, but WITHOUT
18 ### ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
19 ### FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
22 ### You should have received a copy of the GNU General Public License
23 ### along with Runlisp. If not, see <https://www.gnu.org/licenses/>.
25 include $(top_srcdir)/vars.am
33 ###--------------------------------------------------------------------------
36 v_bench = $(v_bench_@AM_V@)
37 v_bench_ = $(v_bench_@AM_DEFAULT_V@)
38 v_bench_0 = @echo " BENCH $@";
43 noinst_PROGRAMS += timeit
44 timeit_SOURCES = timeit.c
46 CLEANFILES += *.out *.bench
48 ###--------------------------------------------------------------------------
49 ### Lisp systems using `runlisp'.
51 RUNLISP = $(top_builddir)/runlisp -I$(top_builddir)/
54 RUNLISP_BENCHES = $(foreach l,$(LISPS), runlisp.$l.bench)
55 BENCHES += $(RUNLISP_BENCHES)
56 $(RUNLISP_BENCHES): runlisp.%.bench: timeit $(FORCE)
57 $(v_bench)./timeit $(RUNLISP) -L$* -- $(srcdir)/t.lisp a b c >runlisp.$*.out 2>$@
59 RUNLISP_NOIMAGE_BENCHES = $(foreach l,$(LISPS), runlisp-noimage.$l.bench)
60 BENCHES += $(RUNLISP_NOIMAGE_BENCHES)
61 $(RUNLISP_NOIMAGE_BENCHES): runlisp-noimage.%.bench: timeit $(FORCE)
62 $(v_bench)./timeit $(RUNLISP) -D -L$* -- $(srcdir)/t.lisp a b c >runlisp-noimage.$*.out 2>$@
64 ###--------------------------------------------------------------------------
65 ### Lisp systems using `cl-launch'.
67 CL_LAUNCH_BENCHES = $(foreach l,$(LISPS), cl-launch.$l.bench)
68 BENCHES += $(CL_LAUNCH_BENCHES)
69 $(CL_LAUNCH_BENCHES): cl-launch.%.bench: timeit $(FORCE)
70 $(v_bench)./timeit cl-launch -X -l $* -- $(srcdir)/t.lisp a b c >cl-launch.$*.out 2>$@
72 ###--------------------------------------------------------------------------
73 ### C programs (as a baseline).
75 BENCHES += c.tcc.bench
76 c.tcc.bench: timeit $(FORCE)
77 $(v_bench)./timeit tcc -run $(srcdir)/t.c a b c >c.tcc.out 2>$@
79 BENCHES += c.gcc.bench
80 noinst_PROGRAMS += t.c.gcc
82 c.gcc.bench: t.c.gcc timeit $(FORCE)
83 $(v_bench)./timeit ./t.c.gcc a b c >c.gcc.out 2>$@
85 ###--------------------------------------------------------------------------
86 ### Other scripting languages.
90 perl.bench: timeit $(FORCE)
91 $(v_bench)./timeit perl -- $(srcdir)/t.pl a b c >perl.out 2>$@
93 BENCHES += python.bench
95 python.bench: timeit $(FORCE)
96 $(v_bench)./timeit python -- $(srcdir)/t.py a b c >python.out 2>$@
98 SHELLS = dash bash zsh
100 SHELL_BENCHES = $(foreach s,$(SHELLS), shell.$s.bench)
101 BENCHES += $(SHELL_BENCHES)
102 $(SHELL_BENCHES): shell.%.bench: timeit $(FORCE)
103 $(v_bench)TEST_SHELL=$* ./timeit $* -- $(srcdir)/t.sh a b c >shell.$*.out 2>$@
105 ###--------------------------------------------------------------------------
109 noinst_DATA += $(GRAPHS)
110 CLEANFILES += $(GRAPHS)
112 v_massage = $(v_massage_@AM_V@)
113 v_massage_ = $(v_massage_@AM_DEFAULT_V@)
114 v_massage_0 = @echo " MASSAGE $@";
116 v_gnuplot = $(v_gnuplot_@AM_V@)
117 v_gnuplot_ = $(v_gnuplot_@AM_DEFAULT_V@)
118 v_gnuplot_0 = @echo " GNUPLOT $@";
120 CLEANFILES += bench.data
121 bench.data: $(BENCHES) massage-benchmarks
122 $(v_massage)$(srcdir)/massage-benchmarks >$@.new && mv $@.new $@
124 GRAPHS += lisp-graph.tikz
125 lisp-graph.tikz: lisp-graph.gp bench.data
126 $(v_gnuplot)$(GNUPLOT) $< >$@.new && mv $@.new $@
128 GRAPHS += interp-graph.tikz
129 interp-graph.tikz: interp-graph.gp bench.data
130 $(v_gnuplot)$(GNUPLOT) $< >$@.new && mv $@.new $@
135 ###----- That's all, folks --------------------------------------------------