5 RELDIR
=$(CURDIR
)/_build
/sinan
6 APPDIR
=$(RELDIR
)/lib
/sinan-
$(VSN
)
8 BINDIR
=$(DESTDIR
)/usr
/bin
9 INSTALL_TARGET
=$(DESTDIR
)/usr
/lib
/erlang
/lib
/sinan-
$(VSN
)
11 TARBALL
=..
/erlang-sinan_
$(VSN
).orig.
tar.gz
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
32 ERL_OBJ
= $(patsubst src
/%.erl
,$(BEAMDIR
)/%.beam
, $(wildcard $(SRCDIR
)/*erl
))
33 ERL_TEST_OBJ
= $(patsubst test/%.erl
,$(BEAMDIR
)/%.beam
, $(wildcard $(TESTDIR
)/*erl
))
38 for f in
$(COPYDIRS
) ; do \
39 mkdir
-p
$(APPDIR
)/$$f ; \
40 rsync
$(RSYNC_OPTIONS
) $$f $(APPDIR
); \
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
) $<
59 $(ERL
) $(ERLFLAGS
) -s sinan main
-extra
$(SINFLAGS
) build
62 $(ERL
) $(ERLFLAGS
) -s sinan main
-extra
$(SINFLAGS
) escript
65 $(ERL
) $(ERLFLAGS
) -s sinan main
-extra
$(SINFLAGS
) cucumber
68 $(ERL
) $(ERLFLAGS
) -s sinan main
-extra
$(SINFLAGS
) proper
71 $(ERL
) $(ERLFLAGS
) -s sinan main
-extra
$(SINFLAGS
) eunit
74 $(ERL
) $(ERLFLAGS
) -s sinan main
-extra
$(SINFLAGS
) dialyzer
80 $(ERL
) $(ERLFLAGS
) -s debugger start
83 for f in
$(wildcard $(SMOKETEST_DIR
)/tests
/*.py
) ; do \
84 PYTHONPATH
=$(PYPATH
) python
$$f ; \
88 ct_run
-dir $(CURDIR
)/test -logdir
$(LOGDIR
) -erl_args
-pa
$(BEAMDIR
)
90 testall
: cucumber proper eunit smoketests
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
104 rm -rf erl_crash.dump
105 find smoketests
-name \
*.pyc
-exec
rm -f
{} \
;
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
116 git add ebin
/sinan.app
117 git add src
/sin_task_version.erl
118 git commit
-m
"Version bump $(VSN)"
126 ## Debian packaging support for sinan
130 git archive
--format
=tar --prefix=sinan
/ HEAD | gzip
> $(TARBALL
)
133 mkdir
-p
$(INSTALL_TARGET
)
135 cp
-r
$(APPDIR
)/* $(INSTALL_TARGET
)
136 cp
-r _build
/sinan
/escript
/sinan
$(BINDIR
)
138 build-deb
: $(TARBALL
)
143 publish-ppa
: build-deb
144 dput
-f ppa
:afiniate
/ppa ..
/erlang-sinan_
$(VSN
)_source.changes