forked from erlydtl/erlydtl
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
executable file
·89 lines (70 loc) · 2.61 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
ERL=erl
ERLC=erlc
REBAR=./rebar $(REBAR_ARGS)
all: compile
compile: check-slex get-deps
@$(REBAR) compile
check-slex: src/erlydtl_scanner.erl
src/erlydtl_scanner.erl: src/erlydtl_scanner.slex
@echo Notice: $@ is outdated by $<, consider running "'make slex'".
get-deps:
@$(REBAR) get-deps
update-deps:
@$(REBAR) update-deps
.PHONY: tests
tests: export EXTRA_CONFIG=rebar-tests.config
tests: src/erlydtl_parser.erl
@$(REBAR) eunit
check: tests dialyze
## dialyzer
PLT_FILE = ~/erlydtl.plt
PLT_APPS ?= kernel stdlib compiler erts eunit syntax_tools
DIALYZER_OPTS ?= -Werror_handling -Wrace_conditions -Wunmatched_returns \
-Wunderspecs --verbose --fullpath
.PHONY: dialyze
dialyze: compile
@[ -f $(PLT_FILE) ] || $(MAKE) plt
@dialyzer --plt $(PLT_FILE) $(DIALYZER_OPTS) ebin || [ $$? -eq 2 ];
## In case you are missing a plt file for dialyzer,
## you can run/adapt this command
.PHONY: plt
plt: compile
# we need to remove second copy of file
rm -f deps/merl/priv/merl_transform.beam
@echo "Building PLT, may take a few minutes"
@dialyzer --build_plt --output_plt $(PLT_FILE) --apps \
$(PLT_APPS) deps/* || [ $$? -eq 2 ];
clean:
@[ ! -d deps/merl ] || { echo "Clean merl..." ; $(MAKE) -C deps/merl clean ;}
@$(REBAR) -C rebar-slex.config clean
rm -fv erl_crash.dump
really-clean: clean
rm -f $(PLT_FILE)
# rebuild any .slex files as well.. not included by default to avoid
# the slex dependency, which is only needed in case the .slex file has
# been modified locally.
slex: REBAR_DEPS ?= get-deps update-deps
slex: slex-compile
slex-skip-deps: REBAR_DEPS:=
slex-skip-deps: slex-compile
slex-compile:
@$(REBAR) -C rebar-slex.config $(REBAR_DEPS) compile
shell:
@$(ERL) -pz ebin deps/*/ebin
# this file must exist for rebar eunit to work
# but is only built when running rebar compile
src/erlydtl_parser.erl: compile
committed:
@git diff --no-ext-diff --quiet --exit-code || { echo "there are uncommitted changes in the repo." ; false ;}
release: committed check
@{ \
V0=$$(grep vsn src/erlydtl.app.src | sed -e 's/.*vsn,.*"\(.*\)".*/\1/') && \
V1=$$(grep '##' -m 1 NEWS.md | sed -e 's/##[^0-9]*\([0-9.-]*\).*/\1/') && \
read -e -p "OK, all tests passed, current version is $$V0, which version should we release now? ($$V1)" V2 && \
: $${V2:=$$V1} && \
echo "$$V2 it is..." && \
sed -i -e 's/vsn,.*}/vsn, "'$$V2'"}/' src/erlydtl.app.src && \
git ci -m "release v$$V2" src/erlydtl.app.src && \
git tag $$V2 && \
echo 'Updated src/erlydtl.app.src and tagged, run `git push origin master --tags` when ready' \
;}