-
Notifications
You must be signed in to change notification settings - Fork 1
/
Makefile
142 lines (111 loc) · 3.53 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
## TODO: Fix this
#REPO ?= riak
#RIAK_TAG = $(shell git describe --tags)
#REVISION ?= $(shell echo $(RIAK_TAG) | sed -e 's/^$(REPO)-//')
#PKG_VERSION ?= $(shell echo $(REVISION) | tr - .)
.PHONY: rel stagedevrel deps
all: deps compile
compile:
./rebar compile
deps:
./rebar get-deps
clean:
./rebar clean
distclean: clean devclean relclean ballclean
./rebar delete-deps
test:
./rebar skip_deps=true eunit
##
## Release targets
##
rel: deps
./rebar compile generate
relclean:
rm -rf rel/riak
##
## Developer targets
##
stagedevrel: dev1 dev2 dev3
$(foreach dev,$^,\
$(foreach dep,$(wildcard deps/*), rm -rf dev/$(dev)/lib/$(shell basename $(dep))-* && ln -sf $(abspath $(dep)) dev/$(dev)/lib;))
devrel: dev1 dev2 dev3
dev1 dev2 dev3:
mkdir -p dev
(cd rel && ../rebar generate target_dir=../dev/$@ overlay_vars=vars/$@_vars.config)
devclean: clean
rm -rf dev
stage : rel
$(foreach dep,$(wildcard deps/*), rm -rf rel/riak/lib/$(shell basename $(dep))-* && ln -sf $(abspath $(dep)) rel/riak/lib;)
##
## Doc targets
##
docs:
./rebar skip_deps=true doc
@cp -R apps/luke/doc doc/luke
@cp -R apps/riak_core/doc doc/riak_core
@cp -R apps/riak_kv/doc doc/riak_kv
orgs: orgs-doc orgs-README
orgs-doc:
@emacs -l orgbatch.el -batch --eval="(riak-export-doc-dir \"doc\" 'html)"
orgs-README:
@emacs -l orgbatch.el -batch --eval="(riak-export-doc-file \"README.org\" 'ascii)"
@mv README.txt README
APPS = kernel stdlib sasl erts ssl tools os_mon runtime_tools crypto inets \
xmerl webtool snmp public_key mnesia eunit syntax_tools compiler
COMBO_PLT = $(HOME)/.riak_combo_dialyzer_plt
check_plt: compile
dialyzer --check_plt --plt $(COMBO_PLT) --apps $(APPS) \
deps/*/ebin
build_plt: compile
dialyzer --build_plt --output_plt $(COMBO_PLT) --apps $(APPS) \
deps/*/ebin
dialyzer: compile
@echo
@echo Use "'make check_plt'" to check PLT prior to using this target.
@echo Use "'make build_plt'" to build PLT prior to using this target.
@echo
@sleep 1
dialyzer -Wno_return --plt $(COMBO_PLT) deps/*/ebin | \
fgrep -v -f ./dialyzer.ignore-warnings
cleanplt:
@echo
@echo "Are you sure? It takes about 1/2 hour to re-build."
@echo Deleting $(COMBO_PLT) in 5 seconds.
@echo
sleep 5
rm $(COMBO_PLT)
# Release tarball creation
# Generates a tarball that includes all the deps sources so no checkouts are necessary
archivegit = git archive --format=tar --prefix=$(1)/ HEAD | (cd $(2) && tar xf -)
archivehg = hg archive $(2)/$(1)
archive = if [ -d ".git" ]; then \
$(call archivegit,$(1),$(2)); \
else \
$(call archivehg,$(1),$(2)); \
fi
buildtar = mkdir distdir && \
git clone . distdir/riak-clone && \
cd distdir/riak-clone && \
git checkout $(RIAK_TAG) && \
$(call archive,$(RIAK_TAG),..) && \
mkdir ../$(RIAK_TAG)/deps && \
make deps; \
for dep in deps/*; do \
cd $${dep} && \
$(call archive,$${dep},../../../$(RIAK_TAG)) && \
mkdir -p ../../../$(RIAK_TAG)/$${dep}/priv && \
git rev-list --max-count=1 HEAD > ../../../$(RIAK_TAG)/$${dep}/priv/git.vsn && \
cd ../..; done
distdir:
$(if $(RIAK_TAG), $(call buildtar), $(error "You can't generate a release tarball from a non-tagged revision. Run 'git checkout <tag>', then 'make dist'"))
dist $(RIAK_TAG).tar.gz: distdir
cd distdir; \
tar czf ../$(RIAK_TAG).tar.gz $(RIAK_TAG)
ballclean:
rm -rf $(RIAK_TAG).tar.gz distdir
package: dist
$(MAKE) -C package package
pkgclean:
$(MAKE) -C package pkgclean
.PHONY: package
export PKG_VERSION REPO REVISION RIAK_TAG