Merge remote-tracking branch 'canonical/next'
[sinan.git] / Makefile
blob9f928c420e373aa726826e6880d7150d264c705e
1 VSN=4.1.1
2 ERLC=/usr/bin/env erlc
3 ERL=/usr/bin/env erl
5 RELDIR=$(CURDIR)/_build/sinan
6 APPDIR=$(RELDIR)/lib/sinan-$(VSN)
7 LOGDIR=$(RELDIR)/logs
8 BINDIR=$(DESTDIR)/usr/bin
9 INSTALL_TARGET=$(DESTDIR)/usr/lib/erlang/lib/sinan-$(VSN)
11 TARBALL=../erlang-sinan_$(VSN).orig.tar.gz
12 SRCDIR=src
13 TESTDIR=test
14 COPYDIRS= include src test
15 BEAMDIR=$(APPDIR)/ebin
16 SMOKETEST_DIR=$(CURDIR)/smoketests
17 PYPATH=$(PYTHONPATH):$(SMOKETEST_DIR)
18 BEHAVIOURS= src/sin_task.erl src/sin_dep_resolver.erl
20 .PHONY=all setup build escript cucumber proper eunit dialyzer \
21 run debug smoketests testall gh-pages clean install-deb \
22 build-deb publish-ppa update-version
24 SINFLAGS=-s $(CURDIR) -p sinan -n $(VSN)
25 ERLFLAGS= -noinput -pa $(BEAMDIR)
27 RSYNC_OPTIONS=-vaz --delete
28 .SUFFIXES: .erl .beam .yrl
30 vpath %.erl src test
32 ERL_OBJ = $(patsubst src/%.erl,$(BEAMDIR)/%.beam, $(wildcard $(SRCDIR)/*erl))
33 ERL_TEST_OBJ = $(patsubst test/%.erl,$(BEAMDIR)/%.beam, $(wildcard $(TESTDIR)/*erl))
35 all: main
37 setup:
38 for f in $(COPYDIRS) ; do \
39 mkdir -p $(APPDIR)/$$f ; \
40 rsync $(RSYNC_OPTIONS) $$f $(APPDIR); \
41 done
42 mkdir -p $(APPDIR)/ebin;
43 rsync $(RSYNC_OPTIONS) ebin/sinan.app $(APPDIR)/ebin/sinan.app
45 build_behaviours: $(BEHAVIOURS)
46 # make sure sin_task gets built first so its always available
47 $(ERLC) -pa $(BEAMDIR) +warn_export_vars +warn_export_all \
48 +warn_obsolete_guard \
49 +warnings_as_errors +bin_opt_info +debug_info -W -o $(BEAMDIR) $(BEHAVIOURS)
51 main: setup build_behaviours ${ERL_OBJ} ${ERL_TEST_OBJ}
53 $(BEAMDIR)/%.beam: %.erl
54 $(ERLC) -pa $(BEAMDIR) +warn_export_vars +warn_export_all \
55 +warn_obsolete_guard \
56 +warnings_as_errors +bin_opt_info +debug_info -W -o $(BEAMDIR) $<
58 build: main
59 $(ERL) $(ERLFLAGS) -s sinan main -extra $(SINFLAGS) build
61 escript: main
62 $(ERL) $(ERLFLAGS) -s sinan main -extra $(SINFLAGS) escript
64 cucumber: main
65 $(ERL) $(ERLFLAGS) -s sinan main -extra $(SINFLAGS) cucumber
67 proper: main
68 $(ERL) $(ERLFLAGS) -s sinan main -extra $(SINFLAGS) proper
70 eunit: main
71 $(ERL) $(ERLFLAGS) -s sinan main -extra $(SINFLAGS) eunit
73 dialyzer: main
74 $(ERL) $(ERLFLAGS) -s sinan main -extra $(SINFLAGS) dialyzer
76 run: main
77 $(ERL) -pa $(BEAMDIR)
79 debug: main
80 $(ERL) $(ERLFLAGS) -s debugger start
82 smoketests: main
83 for f in $(wildcard $(SMOKETEST_DIR)/tests/*.py) ; do \
84 PYTHONPATH=$(PYPATH) python $$f ; \
85 done
87 ct: main $(LOGDIR)
88 ct_run -dir $(CURDIR)/test -logdir $(LOGDIR) -erl_args -pa $(BEAMDIR)
90 testall : cucumber proper eunit smoketests
92 gh-pages:
93 ./do-gh-pages
95 clean:
96 rm -f ../erlang-sinan_*.debian.tar.gz
97 rm -f ../erlang-sinan_*.dsc
98 rm -f ../erlang-sinan_*.build
99 rm -f ../erlang-sinan_*.changes
100 rm -rf debian/patches
101 rm -rf debian/erlang-sinan
102 rm -rf $(CURDIR)/usr
103 rm -rf _build
104 rm -rf erl_crash.dump
105 find smoketests -name \*.pyc -exec rm -f {} \;
107 update-version:
108 awk '{sub(/project_vsn, \"[0-9]+\.[0-9]+\.[0-9]+[a-z]?\"/,"project_vsn, \"$(VSN)\"");print}' sinan.config > tmp.txt
109 @mv tmp.txt sinan.config
110 awk '{sub(/vsn, \"[0-9]+\.[0-9]+\.[0-9]+[a-z]?\"/,"vsn, \"$(VSN)\"");print}' ebin/sinan.app > tmp.txt
111 @mv tmp.txt ebin/sinan.app
112 awk '{sub(/\"v[0-9]+\.[0-9]+\.[0-9]+[a-z]?\"/,"\"v$(VSN)\"");print}' src/sin_task_version.erl > tmp.txt
113 @mv tmp.txt src/sin_task_version.erl
114 git add sinan.config
115 git add Makefile
116 git add ebin/sinan.app
117 git add src/sin_task_version.erl
118 git commit -m "Version bump $(VSN)"
119 git tag v$(VSN)
121 $(LOGDIR):
122 mkdir -p $(LOGDIR)
126 ## Debian packaging support for sinan
129 $(TARBALL):
130 git archive --format=tar --prefix=sinan/ HEAD | gzip > $(TARBALL)
132 install-deb:
133 mkdir -p $(INSTALL_TARGET)
134 mkdir -p $(BINDIR)
135 cp -r $(APPDIR)/* $(INSTALL_TARGET)
136 cp -r _build/sinan/escript/sinan $(BINDIR)
138 build-deb: $(TARBALL)
139 pdebuild
140 debuild -S
143 publish-ppa: build-deb
144 dput -f ppa:afiniate/ppa ../erlang-sinan_$(VSN)_source.changes