]> git.k1024.org Git - perf-null.git/blob - Makefile
Parametrise the perf repetition count
[perf-null.git] / Makefile
1 PROGS = \
2         c/c-diet-static-null c/c-diet-dynamic-null \
3         c/c-libc-static-null c/c-libc-dynamic-null \
4         c/c++-static-null c/c++-dynamic-null \
5         haskell/null-single haskell/null-threaded \
6         ocaml/null-byte ocaml/null-opt
7
8 SCRIPTS = \
9         dash/null.dash bash/null.bash \
10         lua/null.lua51 lua/null.lua52 lua/null.luajit \
11         perl/null.pl ruby/null.rb \
12         php/null.php php/null.php-n \
13         tcl/null.tcl84 tcl/null.tcl85 tcl/null.tcl86 \
14         python/null.py26 python/null.py26-s \
15         python/null.py27 python/null.py27-s \
16         python/null.py32 python/null.py32-s \
17         python/null.pypy
18
19 METRICS = \
20         cycles,instructions,branches,branch-misses \
21         dtlb-loads,dtlb-load-misses,itlb-loads,itlb-load-misses \
22         cycles,instructions,cache-references,cache-misses \
23         cycles,instructions,stalled-cycles-frontend,stalled-cycles-backend
24
25 REPS = 100
26
27 all: $(PROGS)
28
29 $(PROGS): Makefile
30
31 c-diet-static-%: %.c
32         diet gcc -static -O2 -Wall -o $@ $<
33         strip $@
34
35 c-diet-dynamic-%: %.c
36         diet gcc -O2 -Wall -o $@ $<
37         strip $@
38
39 c-libc-static-%: %.c
40         gcc -static -O2 -Wall -o $@ $<
41         strip $@
42
43 c-libc-dynamic-%: %.c
44         gcc -O2 -Wall -o $@ $<
45         strip $@
46
47 c++-static-%: %.c
48         g++ -static -O2 -Wall -o $@ $<
49         strip $@
50
51 c++-dynamic-%: %.c
52         g++ -O2 -Wall -o $@ $<
53         strip $@
54
55 haskell/null-single: haskell/null.hs
56         ghc --make -O2 -Wall -o $@ $<
57         strip $@
58
59 haskell/null-threaded: haskell/null.hs
60         ghc --make -O2 -Wall -threaded -o $@ $<
61         strip $@
62
63 ocaml/null-byte: ocaml/null.ml
64         ocamlc -o $@ $<
65         # no stripping as this is not an elf file
66
67 ocaml/null-opt: ocaml/null.ml
68         ocamlopt -o $@ $<
69         strip $@
70
71 log: $(PROGS) $(SCRIPTS) Makefile
72         rm -f log; \
73         for prog in $(PROGS) $(SCRIPTS); do \
74           echo $$prog; \
75           for metric in $(METRICS); do \
76             LC_ALL=C perf stat -e "$$metric" -r $(REPS) -o log --append ./$$prog; \
77           done; \
78         done
79
80 .PHONY: log
81
82 clean:
83         cd haskell && rm -f *.hi *.o
84         cd ocaml && rm -f *.cmo *.cmi *.cmx *.o
85         rm -f $(PROGS)