diff --git a/.gitignore b/.gitignore index 3bde15b..d053947 100644 --- a/.gitignore +++ b/.gitignore @@ -7,3 +7,4 @@ erl_crash.dump .project log deps +.local_dialyzer_plt diff --git a/Makefile b/Makefile index 6b78d1a..4c61dd6 100644 --- a/Makefile +++ b/Makefile @@ -15,39 +15,6 @@ clean: distclean: clean ./rebar delete-deps -test: - ./rebar compile eunit - -## -## Doc targets -## -docs: - ./rebar doc - -APPS = kernel stdlib sasl erts ssl tools os_mon runtime_tools crypto inets \ - xmerl webtool snmp public_key mnesia eunit -PLT ?= $(HOME)/.riak_combo_dialyzer_plt - -check_plt: compile - dialyzer --check_plt --plt $(PLT) --apps $(APPS) - -build_plt: compile - dialyzer --build_plt --output_plt $(PLT) --apps $(APPS) - -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 -Wunmatched_returns --plt $(PLT) ebin | \ - fgrep -v -f ./dialyzer.ignore-warnings - -cleanplt: - @echo - @echo "Are you sure? It takes about 1/2 hour to re-build." - @echo Deleting $(PLT) in 5 seconds. - @echo - sleep 5 - rm $(PLT) +DIALYZER_APPS = kernel stdlib erts sasl eunit syntax_tools compiler crypto +include tools.mk diff --git a/tools.mk b/tools.mk new file mode 100644 index 0000000..7e73423 --- /dev/null +++ b/tools.mk @@ -0,0 +1,39 @@ +test: compile + ./rebar eunit skip_deps=true + +docs: + ./rebar doc skip_deps=true + +PLT ?= $(HOME)/.riak_combo_dialyzer_plt +LOCAL_PLT = .local_dialyzer_plt +DIALYZER_FLAGS ?= -Wunmatched_returns + +${PLT}: compile +ifneq (,$(wildcard $(PLT))) + dialyzer --check_plt --plt $(PLT) --apps $(DIALYZER_APPS) && \ + dialyzer --add_to_plt --plt $(PLT) --output_plt $(PLT) --apps $(DIALYZER_APPS) ; test $$? -ne 1 +else + dialyzer --build_plt --output_plt $(PLT) --apps $(DIALYZER_APPS); test $$? -ne 1 +endif + +${LOCAL_PLT}: compile +ifneq (,$(wildcard $(LOCAL_PLT))) + dialyzer --check_plt --plt $(LOCAL_PLT) deps/*/ebin && \ + dialyzer --add_to_plt --plt $(LOCAL_PLT) --output_plt $(LOCAL_PLT) deps/*/ebin ; test $$? -ne 1 +else + dialyzer --build_plt --output_plt $(LOCAL_PLT) deps/*/ebin ; test $$? -ne 1 +endif + +dialyzer: ${PLT} ${LOCAL_PLT} + @echo "==> $(shell basename $(shell pwd)) (dialyzer)" + dialyzer $(DIALYZER_FLAGS) --plts $(PLT) $(LOCAL_PLT) -c ebin + +cleanplt: + @echo + @echo "Are you sure? It takes several minutes to re-build." + @echo Deleting $(PLT) and $(LOCAL_PLT) in 5 seconds. + @echo + sleep 5 + rm $(PLT) + rm $(LOCAL_PLT) +