Makefile 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. # See LICENSE for licensing information.
  2. PROJECT = ranch
  3. ERLC_OPTS = -Werror +debug_info +warn_export_all # +bin_opt_info +warn_missing_spec
  4. DEPS_DIR ?= $(CURDIR)/deps
  5. export DEPS_DIR
  6. .PHONY: all clean-all app clean docs clean-docs tests build-plt dialyze
  7. # Application.
  8. all: app
  9. clean-all: clean clean-docs
  10. rm -f .$(PROJECT).plt
  11. rm -rf $(DEPS_DIR) logs
  12. MODULES = $(shell ls src/*.erl | sed 's/src\///;s/\.erl/,/' | sed '$$s/.$$//')
  13. app:
  14. @mkdir -p ebin/
  15. @cat src/$(PROJECT).app.src \
  16. | sed 's/{modules, \[\]}/{modules, \[$(MODULES)\]}/' \
  17. > ebin/$(PROJECT).app
  18. erlc -v $(ERLC_OPTS) -o ebin/ -pa ebin/ \
  19. src/$(PROJECT)_transport.erl src/*.erl
  20. clean:
  21. rm -rf ebin/
  22. rm -f test/*.beam
  23. rm -f erl_crash.dump
  24. # Documentation.
  25. docs: clean-docs
  26. erl -noshell -eval 'edoc:application($(PROJECT), ".", []), init:stop().'
  27. clean-docs:
  28. rm -f doc/*.css
  29. rm -f doc/*.html
  30. rm -f doc/*.png
  31. rm -f doc/edoc-info
  32. # Tests.
  33. CT_RUN = ct_run \
  34. -pa ebin $(DEPS_DIR)/*/ebin \
  35. -dir test \
  36. -logdir logs \
  37. -cover test/cover.spec
  38. tests: clean app
  39. @mkdir -p logs/
  40. @$(CT_RUN) -suite acceptor_SUITE
  41. # Dialyzer.
  42. build-plt: app
  43. @dialyzer --build_plt --output_plt .$(PROJECT).plt \
  44. --apps erts kernel stdlib crypto public_key ssl
  45. dialyze:
  46. @dialyzer --src src --plt .$(PROJECT).plt \
  47. -Werror_handling -Wrace_conditions -Wunmatched_returns # -Wunderspecs