-
-
Save martinrehfeld/4107226 to your computer and use it in GitHub Desktop.
Template Makefile for Erlang projects
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
DEPS = $(CURDIR)/deps | |
DIALYZER_OPTS = -Wunderspecs | |
# List dependencies that should be included in a cached dialyzer PLT file. | |
# DIALYZER_DEPS = deps/app1/ebin \ | |
# deps/app2/ebin | |
DEPS_PLT = {{name}}.plt | |
ERLANG_DIALYZER_APPS = asn1 \ | |
compiler \ | |
crypto \ | |
edoc \ | |
edoc \ | |
erts \ | |
eunit \ | |
eunit \ | |
gs \ | |
hipe \ | |
inets \ | |
kernel \ | |
mnesia \ | |
mnesia \ | |
observer \ | |
public_key \ | |
runtime_tools \ | |
runtime_tools \ | |
ssl \ | |
stdlib \ | |
syntax_tools \ | |
syntax_tools \ | |
tools \ | |
webtool \ | |
xmerl | |
all: compile eunit dialyzer | |
# Clean ebin and .eunit of this project | |
clean: | |
@rebar clean skip_deps=true | |
# Clean this project and all deps | |
allclean: | |
@rebar clean | |
compile: $(DEPS) | |
@rebar compile | |
$(DEPS): | |
@rebar get-deps | |
# Full clean and removal of all deps. Remove deps first to avoid | |
# wasted effort of cleaning deps before nuking them. | |
distclean: | |
@rm -rf deps $(DEPS_PLT) | |
@rebar clean | |
eunit: | |
@rebar skip_deps=true eunit | |
test: eunit | |
# Only include local PLT if we have deps that we are going to analyze | |
ifeq ($(strip $(DIALYZER_DEPS)),) | |
dialyzer: ~/.dialyzer_plt | |
@dialyzer $(DIALYZER_OPTS) -r ebin | |
else | |
dialyzer: ~/.dialyzer_plt $(DEPS_PLT) | |
@dialyzer $(DIALYZER_OPTS) --plts ~/.dialyzer_plt $(DEPS_PLT) -r ebin | |
$(DEPS_PLT): | |
@dialyzer --build_plt $(DIALYZER_DEPS) --output_plt $(DEPS_PLT) | |
endif | |
~/.dialyzer_plt: | |
@echo "ERROR: Missing ~/.dialyzer_plt. Please wait while a new PLT is compiled." | |
dialyzer --build_plt --apps $(ERLANG_DIALYZER_APPS) | |
@echo "now try your build again" | |
doc: | |
@rebar doc skip_deps=true | |
.PHONY: all compile eunit test dialyzer clean allclean distclean doc |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment