-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
142 lines (93 loc) · 3.55 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
# ---------- UTILS ----------
Q := @
# ---------- COMMAND ----------
ERL := erl
ERLC := erlc
EMAKE := erl -make
# ---------- COMMON ----------
.PHONY: compile clean test erlang
.PHONY: compile_ruby test_ruby setup_ruby_dirs erlang_for_ruby
.PHONY: compile_irb test_irb setup_irb_dirs erlang_for_irb
.PHONY: compile_epmd test_epmd setup_epmd_dirs erlang_for_epmd
default: compile
compile: compile_ruby compile_irb compile_epmd
test: test_ruby test_irb test_epmd
ci: compile test
# ---------- PRE BUILD RUBY ----------
setup_ruby_dirs:
$(Q) cd lib/ruby && mkdir -p ebin
RUBY_PARSER := lib/ruby/src/ruby_parser.erl
$(RUBY_PARSER): lib/ruby/src/ruby_parser.yrl
$(Q) echo ===== build ruby parser
$(Q) $(ERLC) -o $@ $<
# ---------- BUILD RUBY ----------
RUBY_APP_FILE := lib/ruby/ebin/ruby.app
RUBY_APP_SRC_FILE := lib/ruby/src/ruby.app.src
compile_ruby: setup_ruby_dirs $(RUBY_PARSER) $(RUBY_APP_FILE) erlang_for_ruby
$(RUBY_APP_FILE): $(RUBY_APP_SRC_FILE)
$(Q) echo ===== create ruby appfile
$(Q) cp $< $(RUBY_APP_FILE)
erlang_for_ruby: $(RUBY_PARSER)
$(Q) cd lib/ruby && $(EMAKE)
# ---------- TEST RUBY ----------
TEST_RUBY_EBIN = lib/ruby/test/ebin
TEST_RUBY_ERL_DIR = lib/ruby/test/erlang
TEST_RUBY_TARGETS = $(addprefix $(TEST_RUBY_EBIN)/, $(addsuffix .beam, $(basename $(notdir $(wildcard $(TEST_RUBY_ERL_DIR)/*.erl)))))
test_ruby: compile_ruby $(TEST_RUBY_TARGETS)
$(Q) echo ===== run ruby tests
$(Q) $(ERL) -pa $(TEST_RUBY_EBIN) -s test_helper test
$(TEST_RUBY_EBIN)/%.beam: $(TEST_RUBY_ERL_DIR)/%.erl
$(Q) mkdir -p $(TEST_RUBY_EBIN)
$(Q) $(ERLC) -o $(TEST_RUBY_EBIN) $<
# ---------- PRE BUILD IRB ----------
setup_irb_dirs:
$(Q) cd lib/irb && mkdir -p ebin
# ---------- BUILD IRB ----------
IRB_APP_FILE := lib/irb/ebin/irb.app
IRB_APP_SRC_FILE := lib/irb/src/irb.app.src
compile_irb: setup_irb_dirs $(IRB_APP_FILE) erlang_for_irb
$(IRB_APP_FILE): $(IRB_APP_SRC_FILE)
$(Q) echo ===== create irb appfile
$(Q) cp $< $(IRB_APP_FILE)
erlang_for_irb:
$(Q) cd lib/irb && $(EMAKE)
# ---------- TEST IRB ----------
TEST_IRB_EBIN = lib/irb/test/ebin
TEST_IRB_ERL_DIR = lib/irb/test/erlang
TEST_IRB_TARGETS = $(addprefix $(TEST_IRB_EBIN)/, $(addsuffix .beam, $(basename $(notdir $(wildcard $(TEST_IRB_ERL_DIR)/*.erl)))))
test_irb: compile_irb $(TEST_IRB_TARGETS)
$(Q) echo ===== run irb tests
$(Q) $(ERL) -pa $(TEST_IRB_EBIN) -s test_helper test
$(TEST_IRB_EBIN)/%.beam: $(TEST_IRB_ERL_DIR)/%.erl
$(Q) mkdir -p $(TEST_IRB_EBIN)
$(Q) $(ERLC) -o $(TEST_IRB_EBIN) $<
# ---------- PRE BUILD EPMD ----------
setup_epmd_dirs:
$(Q) cd lib/epmd && mkdir -p ebin
# ---------- BUILD EPMD ----------
EPMD_APP_FILE := lib/epmd/ebin/epmd.app
EPMD_APP_SRC_FILE := lib/epmd/src/epmd.app.src
compile_epmd: setup_epmd_dirs $(EPMD_APP_FILE) erlang_for_epmd
$(EPMD_APP_FILE): $(EPMD_APP_SRC_FILE)
$(Q) echo ===== create epmd appfile
$(Q) cp $< $(EPMD_APP_FILE)
erlang_for_epmd:
$(Q) cd lib/epmd && $(EMAKE)
# ---------- TEST EPMD ----------
TEST_EPMD_EBIN = lib/epmd/test/ebin
TEST_EPMD_ERL_DIR = lib/epmd/test/erlang
TEST_EPMD_TARGETS = $(addprefix $(TEST_EPMD_EBIN)/, $(addsuffix .beam, $(basename $(notdir $(wildcard $(TEST_EPMD_ERL_DIR)/*.erl)))))
test_epmd: compile_ruby $(TEST_EPMD_TARGETS)
$(Q) echo ===== run epmd tests
$(Q) $(ERL) -pa $(TEST_EPMD_EBIN) -s test_helper test
$(TEST_EPMD_EBIN)/%.beam: $(TEST_EPMD_ERL_DIR)/%.erl
$(Q) mkdir -p $(TEST_EPMD_EBIN)
$(Q) $(ERLC) -o $(TEST_EPMD_EBIN) $<
# ---------- CLEANUP ----------
clean:
$(Q) echo ===== cleanup files
rm -rf lib/*/ebin/
rm -rf lib/*/test/ebin/
rm -f erl_crash.dump
rm -rf $(RUBY_PARSER)
rm -rf lib/**/*.beam