This repository was archived by the owner on Sep 22, 2024. It is now read-only.
forked from esl/MongooseIM
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
161 lines (121 loc) · 4.53 KB
/
Makefile
File metadata and controls
161 lines (121 loc) · 4.53 KB
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
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
.PHONY: rel deps test show_test_results
LOG=$(subst TARGET,$@,TARGET.log 2>&1 || (cat TARGET.log; exit 1))
SILENCE_COVER = | grep -v "logs.*\\.coverdata"
SILENCE_COVER += | grep -v "Analysis includes data from imported files"
SILENCE_COVER += | grep -v "WARNING: Deleting data for module"
LOG_SILENCE_COVER=$(subst TARGET,$@,TARGET.log 2>&1 || (cat TARGET.log $(SILENCE_COVER); exit 1))
EJABBERD_DIR = apps/ejabberd
EJD_INCLUDE = $(EJABBERD_DIR)/include
EJD_PRIV = $(EJABBERD_DIR)/priv
XEP_TOOL = tools/xep_tool
EJD_EBIN = $(EJABBERD_DIR)/ebin
DEVNODES = node1 node2 node3 fed1
all: deps compile
compile: rebar
./rebar $(OPTS) compile > $(LOG)
deps: rebar
./rebar get-deps > $(LOG)
clean: rebar configure.out
rm -rf apps/*/logs
. ./configure.out && ./rebar clean
quick_compile: rebar
./rebar $(OPTS) compile skip_deps=true > $(LOG)
reload: quick_compile
@E=`ls ./rel/mongooseim/lib/ | grep ejabberd-2 | sort -r | head -n 1` ;\
rsync -uW ./apps/ejabberd/ebin/*beam ./rel/mongooseim/lib/$$E/ebin/ ;\
reload_dev: quick_compile
@for NODE in $(DEVNODES); do \
E=`ls ./dev/mongooseim_$$NODE/lib/ | grep ejabberd-2 | sort -r | head -n 1` ;\
rsync -uW ./apps/ejabberd/ebin/*beam ./dev/mongooseim_$$NODE/lib/$$E/ebin/ ;\
done
# Run a single suite
# Example to run apps/ejabberd/test/cassandra_SUITE.erl:
# make ct SUITE=cassandra
ct: deps quick_compile
@(if [ "$(SUITE)" ]; \
then ./rebar $(OPTS) ct suite=$(SUITE) skip_deps=true; \
else ./rebar $(OPTS) ct skip_deps=true; fi) \
> $(LOG_SILENCE_COVER)
# This compiles and runs one test suite. For quick feedback/TDD.
# Example:
# $ make qct SUITE=amp_resolver_SUITE
qct:
mkdir -p /tmp/ct_log
@if [ "$(SUITE)" ]; then ct_run -pa apps/*/ebin -pa deps/*/ebin -pa ebin -dir apps/*/test\
-I apps/*/include -I apps/*/src -logdir /tmp/ct_log -suite $(SUITE)_SUITE -noshell;\
else ct_run -pa apps/*/ebin -pa deps/*/ebin -pa ebin -dir apps/*/test\
-I apps/*/include -I apps/*/src -logdir /tmp/ct_log -noshell; fi
test: test_deps
cd test/ejabberd_tests; make test
test_preset: test_deps
cd test/ejabberd_tests; make test_preset
rock:
@if [ "$(FILE)" ]; then elvis rock $(FILE);\
elif [ "$(BRANCH)" ]; then tools/rock_changed.sh $(BRANCH); \
else tools/rock_changed.sh; fi
run: deps compile quickrun
quickrun: etc/ejabberd.cfg etc/app.config certs_priv
erl -sname mongooseim@localhost -setcookie ejabberd \
-pa ebin deps/*/ebin apps/*/ebin -config etc/app.config \
-s mongooseim
etc/ejabberd.cfg:
@mkdir -p $(@D)
tools/generate_cfg.es etc/ejabberd.cfg rel/files/ejabberd.cfg
etc/app.config:
@mkdir -p $(@D)
tools/generate_cfg.es etc/app.config rel/files/app.config
cover_test: test_deps
cd test/ejabberd_tests; make cover_test
cover_test_preset: test_deps
cd test/ejabberd_tests; make cover_test_preset
quicktest: test_deps
cd test/ejabberd_tests; make quicktest
show_test_results:
$$BROWSER `ls -td test/ct_report/ct_run.test@*/index.html | head -n 1` & disown
eunit: rebar deps
./rebar compile
./rebar skip_deps=true eunit
rel: certs rebar deps configure.out rel/vars.config
. ./configure.out && ./rebar compile generate -f
rel/vars.config: rel/vars.config.in rel/configure.vars.config
cat $^ > $@
## Don't allow these files to go out of sync!
configure.out rel/configure.vars.config:
./tools/configure with-all
devrel: certs $(DEVNODES)
$(DEVNODES): rebar deps compile deps_dev configure.out rel/vars.config
@echo "building $@"
(. ./configure.out && \
cd rel && \
DEVNODE=true ../rebar generate -f target_dir=../dev/mongooseim_$@ overlay_vars=./reltool_vars/$@_vars.config) \
> $(LOG)
cp -R `dirname $(shell ./readlink.sh $(shell which erl))`/../lib/tools-* dev/mongooseim_$@/lib/
deps_dev:
mkdir -p dev
devclean:
-@rm -rf dev/* > /dev/null 2>&1
cover_report: /tmp/mongoose_combined.coverdata
erl -noshell -pa apps/*/ebin deps/*/ebin -eval 'ecoveralls:travis_ci("$?"), init:stop()' > $(LOG)
relclean:
rm -rf rel/mongooseim
certs: fake_cert.pem fake_server.pem fake_dh_server.pem
certs_priv: certs
@mkdir -p priv/ssl
@cp fake_*.pem priv/ssl
fake_cert.pem:
openssl req \
-x509 -nodes -days 365 \
-subj '/C=PL/ST=ML/L=Krakow/CN=mongoose-im' \
-newkey rsa:2048 -keyout fake_key.pem -out fake_cert.pem
fake_server.pem:
cat fake_cert.pem fake_key.pem > fake_server.pem
fake_dh_server.pem:
openssl dhparam -outform PEM -out fake_dh_server.pem 1024
include dialyzer.mk
xeplist: escript
escript $(XEP_TOOL)/xep_tool.escript markdown $(EJD_EBIN)
test_deps:
cd test/ejabberd_tests; make get-deps
install: configure.out rel
@. ./configure.out && tools/install
include tools/cd_tools/cd-targets