Created
September 27, 2012 16:37
-
-
Save tsloughter/3795007 to your computer and use it in GitHub Desktop.
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
ERLFLAGS= -pa $(CURDIR)/.eunit -pa $(CURDIR)/ebin -pa $(CURDIR)/deps/*/ebin | |
PROJECT_PLT=$(CURDIR)/.project_plt | |
# ============================================================================= | |
# Verify that the programs we need to run are installed on this system | |
# ============================================================================= | |
ERL = $(shell which erl) | |
ifeq ($(ERL),) | |
$(error "Erlang not available on this system") | |
endif | |
REBAR=$(shell which rebar) | |
ifeq ($(REBAR),) | |
$(error "Rebar not available on this system") | |
endif | |
.PHONY: all compile doc clean test dialyzer typer shell distclean pdf \ | |
get-deps escript clean-common-test-data | |
all: compile escript dialyzer test | |
# ============================================================================= | |
# Include relevant sub-makefiles. | |
# ============================================================================= | |
# These are not subdirs, they are just additional makefile information | |
# that happens to live subdirectories | |
include $(CURDIR)/docs/docs.mkf | |
# ============================================================================= | |
# Rules to build the system | |
# ============================================================================= | |
get-deps: | |
$(REBAR) get-deps | |
$(REBAR) compile | |
compile: | |
$(REBAR) skip_deps=true compile | |
escript: compile | |
$(REBAR) skip_deps=true escriptize | |
doc: | |
$(REBAR) skip_deps=true doc | |
eunit: compile clean-common-test-data | |
$(REBAR) skip_deps=true eunit | |
ct: compile clean-common-test-data | |
$(REBAR) skip_deps=true ct | |
test: compile eunit ct | |
$(PROJECT_PLT): | |
@echo Building local plt at $(PROJECT_PLT) | |
@echo | |
dialyzer --output_plt $(PROJECT_PLT) --build_plt \ | |
--apps erts kernel stdlib -r deps | |
dialyzer: $(PROJECT_PLT) | |
dialyzer --plt $(PROJECT_PLT) --fullpath -Wrace_conditions \ | |
-I include -pa $(CURDIR)/ebin --src src | |
typer: | |
typer --plt $(PROJECT_PLT) -r ./src | |
shell: get-deps compile | |
# You often want *rebuilt* rebar tests to be available to the | |
# shell you have to call eunit (to get the tests | |
# rebuilt). However, eunit runs the tests, which probably | |
# fails (thats probably why You want them in the shell). This | |
# runs eunit but tells make to ignore the result. | |
- @$(REBAR) skip_deps=true eunit | |
@$(ERL) $(ERLFLAGS) | |
pdf: | |
pandoc README.md -o README.pdf | |
clean-common-test-data: | |
# We have to do this because of the unique way we generate test | |
# data. Without this rebar eunit gets very confused | |
- rm -rf $(CURDIR)/test/*_SUITE_data | |
clean: clean-common-test-data | |
- rm -rf $(CURDIR)/test/*.beam | |
- rm -rf $(CURDIR)/logs | |
$(REBAR) skip_deps=true clean | |
distclean: clean | |
- rm -rf $(PROJECT_PLT) | |
- rm -rvf $(CURDIR)/deps/* |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment