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