-
Notifications
You must be signed in to change notification settings - Fork 14
/
Makefile
145 lines (101 loc) · 4.26 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
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
C99FLAGS=-std=c99 -Wall -Wextra -Wno-unused-variable -Wno-unused-function -Wno-unused-parameter \
-Wno-unused-value -Wno-missing-braces -Wno-overlength-strings -Wno-infinite-recursion \
-Werror -pedantic -O0 -fmax-errors=9 -Wno-unused-command-line-argument
CC=gcc $(C99FLAGS)
CCSAN=$(CC) -fsanitize=undefined -fsanitize=address
SRCS=lib/std/* lib/arg-parser/* src/*
.PHONY: default show showsan build buildsan debug update check checksan clean \
install-vim install-code install-atom install profile play-snake test-verify test-update \
examples
default: show bin/snake.c bin/fractal.c
show: bin/mirth0.c bin/mirth1.c bin/mirth2.c bin/mirth3.c
diff --strip-trailing-cr bin/mirth0.c bin/mirth1.c | head -n 5
diff --strip-trailing-cr bin/mirth1.c bin/mirth2.c | head -n 10
diff --strip-trailing-cr bin/mirth2.c bin/mirth3.c
showsan: bin/mirth0.c bin/mirth1.c bin/mirth2.c bin/mirth3san.c
diff --strip-trailing-cr bin/mirth0.c bin/mirth1.c | head -n 5
diff --strip-trailing-cr bin/mirth1.c bin/mirth2.c | head -n 10
diff --strip-trailing-cr bin/mirth2.c bin/mirth3san.c
build: bin/mirth0 bin/mirth1 bin/mirth2 bin/mirth1.c bin/mirth2.c bin/mirth3.c
buildsan: bin/mirth0 bin/mirth1 bin/mirth2san bin/mirth1.c bin/mirth2.c bin/mirth3san.c
debug: bin/mirth3debug
update: bin/mirth0.c bin/mirth3.c
cp bin/mirth3.c bin/mirth0.c
check: bin/mirth0.c bin/mirth1.c bin/mirth2.c bin/mirth3.c
diff --strip-trailing-cr bin/mirth2.c bin/mirth3.c
diff --strip-trailing-cr bin/mirth1.c bin/mirth3.c
diff --strip-trailing-cr bin/mirth0.c bin/mirth3.c
checksan: bin/mirth0.c bin/mirth1.c bin/mirth2.c bin/mirth3san.c
diff --strip-trailing-cr bin/mirth0.c bin/mirth3san.c
diff --strip-trailing-cr bin/mirth1.c bin/mirth3san.c
diff --strip-trailing-cr bin/mirth2.c bin/mirth3san.c
clean:
cp bin/mirth0.c mirth0.c
rm -rf bin/*.c bin/*.exe bin/eval bin/test
mv mirth0.c bin/
install-vim:
mkdir -p ~/.vim/bundle
rm -rf ~/.vim/bundle/mirth-vim
cp -r tools/mirth-vim ~/.vim/bundle/
install-code:
code --install-extension tools/mirth-code/mirth-*.vsix
update-code:
cd tools/mirth-code && vsce package
install-atom:
apm link tools/mirth-atom
install: bin/mirth0
tools/install.sh bin/mirth0
profile: bin/mirth_prof
time bin/mirth_prof
play-snake: bin/snake
bin/snake
examples: bin/mirth2
bash tools/build-examples.sh
test-verify:
bash tools/mirth-test.sh -v
test-update:
bash tools/mirth-test.sh -u
#########
bin/%: bin/%.c
$(CC) -o $@ $^
bin/mirth0san: bin/mirth0.c
$(CCSAN) -o bin/mirth0san bin/mirth0.c
bin/mirth1san: bin/mirth1.c
$(CCSAN) -o bin/mirth1san bin/mirth1.c
bin/mirth2san: bin/mirth2.c
$(CCSAN) -o bin/mirth2san bin/mirth2.c
bin/mirth1debug: bin/mirth1debug.c
$(CC) -g -o bin/mirth1debug bin/mirth1debug.c
bin/mirth2debug: bin/mirth2debug.c
$(CC) -g -o bin/mirth2debug bin/mirth2debug.c
bin/mirth3debug: bin/mirth3debug.c
$(CC) -g -o bin/mirth3debug bin/mirth3debug.c
bin/mirth1.c: bin/mirth0 $(SRCS)
bin/mirth0 src/main.mth -o bin/mirth1.c
bin/mirth2.c: bin/mirth1 $(SRCS)
bin/mirth1 src/main.mth -o bin/mirth2.c
bin/mirth3.c: bin/mirth2 $(SRCS)
bin/mirth2 src/main.mth -o bin/mirth3.c
bin/mirth1debug.c: bin/mirth0 $(SRCS)
bin/mirth0 --debug src/main.mth -o bin/mirth1debug.c
bin/mirth2debug.c: bin/mirth1debug $(SRCS)
bin/mirth1debug --debug src/main.mth -o bin/mirth2debug.c
bin/mirth3debug.c: bin/mirth2debug $(SRCS)
bin/mirth2debug --debug src/main.mth -o bin/mirth3debug.c
bin/mirth3san.c: bin/mirth2san $(SRCS)
bin/mirth2san src/main.mth -o bin/mirth3san.c
bin/mirth_prof.c: bin/mirth3.c
bin/mirth_prof: bin/mirth_prof.c
$(CC) -g -fprofile-instr-generate -o bin/mirth_prof bin/mirth_prof.c
bin/snake.c: bin/mirth2 lib/std/* examples/snake.mth examples/sdl2.mth
bin/mirth2 --debug examples/snake.mth -o bin/snake.c
bin/snake: bin/snake.c
$(CC) -o bin/snake bin/snake.c `pkg-config --cflags --libs sdl2`
bin/fractal.c: bin/mirth2 lib/std/* examples/fractal.mth examples/sdl2.mth
bin/mirth2 --debug examples/fractal.mth -o bin/fractal.c
bin/fractal: bin/fractal.c examples/fractal-extern.c
$(CC) -o bin/fractal bin/fractal.c examples/fractal-extern.c `pkg-config --cflags --libs sdl2` -lm
bin/snake-infer-types: bin/snake-infer-types.c
$(CC) -o bin/snake-infer-types bin/snake-infer-types.c `pkg-config --cflags --libs sdl2`
bin/hello: bin/hello.c
$(CC) -o bin/hello bin/hello.c