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