-
Notifications
You must be signed in to change notification settings - Fork 1
/
Makefile
executable file
·90 lines (61 loc) · 2.85 KB
/
Makefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
PYPY?=../pypy
RPYTHON?=${PYPY}/rpython/bin/rpython
VERSION=0.1
all: test
test:
python -m unittest discover -s src/test -p "*.py" -t .
integration-test: integration-test-parsing integration-test-evaluating
integration-test-parsing: bin/tiger-parser
$(foreach test, $(shell find src/test/appel-tests/*.tig), ./src/integration-test/python-vs-rpython-parsing.sh $(test);)
integration-test-evaluating: bin/tiger-interpreter
$(foreach test, $(shell find src/test/print-tests/*.tig), ./src/integration-test/rpython-evaluating.sh $(test);)
binaries: bin/tiger-parser bin/tiger-interpreter bin/tiger-interpreter-no-jit
bin/tiger-parser: src/main/tiger_parser.py src/native_functions.py $(shell find src/*.py)
mkdir -p bin
PYTHONPATH=. python ${RPYTHON} --log --opt=3 --output=$@ $<
bin/tiger-interpreter: src/main/tiger_interpreter.py src/native_functions.py $(shell find src/*.py)
mkdir -p bin
PYTHONPATH=. python ${RPYTHON} --log --opt=jit --output=$@ $<
bin/tiger-interpreter-no-jit: src/main/tiger_interpreter.py src/native_functions.py $(shell find src/*.py)
mkdir -p bin
PYTHONPATH=. python ${RPYTHON} --log --opt=3 --output=$@ $<
benchmarks: binaries
$(foreach program, $(shell find src/benchmark/*/*.tig), ./src/benchmark/benchmark.sh $(program);)
PHONY: benchmarks
BENCHMARKS_C=permute queens sieve sumprimes towers
$(BENCHMARKS_C): %: src/benchmark/suite-c/%.c
# mkdir -p bin
gcc -O0 -o bin/$@-O0 $<
gcc -O2 -o bin/$@-O2 $<
benchmarks-c: $(BENCHMARKS_C)
benchmarks-c-while:
gcc src/benchmark/while_loop/while-parameterized.c -O0 -o bin/while-parameterized
time bin/while-parameterized 100000000
benchmarks-c-sumprimes:
gcc src/benchmark/sumprimes/sumprimes.c -O0 -o bin/sumprimes
time bin/sumprimes 10000
benchmarks-sumprimes: binaries
./src/benchmark/benchmark.sh src/benchmark/sumprimes/sumprimes-10k.tig
benchmarks-suite: binaries
$(foreach program, $(shell find src/benchmark/suite/*.tig), ./src/benchmark/benchmark.sh $(program);)
benchmarks-environment-comparison: bin/tiger-interpreter
PYTHONPATH=. python src/benchmark/environment-comparison/benchmark.py
benchmarks-jit-vs-no-jit: binaries
PYTHONPATH=. python src/benchmark/jit-vs-no-jit/benchmark.py
benchmarks-warmup: bin/tiger-interpreter
PYTHONPATH=. python src/benchmark/warmup/benchmark.py
venv:
python -m virtualenv --python=/usr/bin/python2.7 venv
source venv/bin/activate && pip install -r requirements.txt
ln -s $(shell realpath ${PYPY}/rpython) venv/lib/python2.7/site-packages/
ln -s $(shell realpath ${PYPY}/dotviewer) venv/lib/python2.7/site-packages/
ln -s $(shell realpath ${PYPY}/py) venv/lib/python2.7/site-packages/
ln -s $(shell realpath ${PYPY}/_pytest) venv/lib/python2.7/site-packages/
ln -s $(shell realpath ${PYPY}/pytest.py) venv/lib/python2.7/site-packages/
clean: clean-pyc
rm -f *.log
rm -rf bin
PHONY: clean
clean-pyc:
rm -f $(shell find src/**/*.pyc)
PHONY: clean-pyc