/
Makefile
122 lines (92 loc) · 2.08 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
NODE = node
CPP = cpp
WINXED = winxed
PARROT = parrot
CPP_FLAGS = -E -P
OJS_CPP_FLAGS = -DJS
OWX_CPP_FLAGS = -DWINXED
# types of files
OMJS_LIB = \
ometa-js/lib.js \
ometa-js/ometa-base.js \
ometa-js/parser.js
OMWX_LIB = \
ometa-base.winxed \
parser.winxed
OMJS_GRAMMARS = \
ometa-js/bs-js-compiler.js \
ometa-js/bs-ometa-compiler.js \
ometa-js/bs-ometa-js-compiler.js \
ometa-js/bs-ometa-optimizer.js
JS_GRAMMARS = \
winxed-compiler.js \
ometa-compiler.js \
ometa-winxed-compiler.js \
ometa-optimizer.js
WX_ST1_GRAMMARS = \
winxed-compiler.st1.winxed \
ometa-compiler.st1.winxed \
ometa-winxed-compiler.st1.winxed \
ometa-optimizer.st1.winxed
WX_ST2_GRAMMARS = \
winxed-compiler.st2.winxed \
ometa-compiler.st2.winxed \
ometa-winxed-compiler.st2.winxed \
ometa-optimizer.st2.winxed
OMJS_FILES = \
$(OMJS_LIB) \
$(OMJS_GRAMMARS)
OMWX_ST1_FILES = \
$(OMWX_LIB) \
$(WX_ST1_GRAMMARS)
OMWX_ST2_FILES = \
$(OMWX_LIB) \
$(WX_ST2_GRAMMARS)
STAGE0_FILES = \
ojs.capo.js \
$(OMJS_LIB) \
$(JS_GRAMMARS) \
ojs.coda.js
STAGE1_FILES = \
Ωη.capo.winxed \
$(OMWX_ST1_FILES) \
Ωη.coda.winxed
STAGE2_FILES = \
Ωη.capo.winxed \
$(OMWX_ST2_FILES) \
Ωη.coda.winxed
GEN_FILES = \
$(JS_GRAMMARS) \
$(WX_ST1_GRAMMARS) \
$(WX_ST2_GRAMMARS) \
ometa-js.js \
stage0.js \
stage1.winxed \
stage1.pir \
stage1.pbc \
# suffix rules
%.ojs: %.dual
$(CPP) $(CPP_FLAGS) $(OJS_CPP_FLAGS) $< $@
%.js: %.ojs ometa-js.js ojsc.js
$(NODE) ojsc.js $<
%.Ωη: %.dual
$(CPP) $(CPP_FLAGS) $(OWX_CPP_FLAGS) $< $@
%.st1.winxed: %.Ωη stage0.js Ωηc.js
$(NODE) Ωηc.js $<
%.st2.winxed: %.Ωη stage1.pbc ometac.winxed
$(WINXED) ometac.winxed $<
%.pir: %.winxed
$(WINXED) -c $<
%.pbc: %.pir
$(PARROT) -o $@ $<
# magic targets
default: stage0.js stage1.winxed
clean:
rm -rf $(GEN_FILES)
# specialised rules
ometa-js.js: $(OMJS_FILES)
cat $^ > $@
stage0.js: $(STAGE0_FILES)
cat $^ > $@
stage1.winxed: $(STAGE1_FILES)
cat $^ > $@