Makefile 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  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: ebin/$(PROJECT).app
  14. @cat src/$(PROJECT).app.src \
  15. | sed 's/{modules, \[\]}/{modules, \[$(MODULES)\]}/' \
  16. > ebin/$(PROJECT).app
  17. ebin/$(PROJECT).app: src/*.erl
  18. @mkdir -p ebin/
  19. erlc -v $(ERLC_OPTS) -o ebin/ -pa ebin/ \
  20. src/$(PROJECT)_transport.erl $?
  21. clean:
  22. rm -rf ebin/
  23. rm -f test/*.beam
  24. rm -f erl_crash.dump
  25. # Documentation.
  26. docs: clean-docs
  27. erl -noshell -eval 'edoc:application($(PROJECT), ".", []), init:stop().'
  28. clean-docs:
  29. rm -f doc/*.css
  30. rm -f doc/*.html
  31. rm -f doc/*.png
  32. rm -f doc/edoc-info
  33. # Tests.
  34. CT_RUN = ct_run \
  35. -pa ebin $(DEPS_DIR)/*/ebin \
  36. -dir test \
  37. -logdir logs \
  38. -cover test/cover.spec
  39. tests: clean app
  40. @mkdir -p logs/
  41. @$(CT_RUN) -suite acceptor_SUITE
  42. # Dialyzer.
  43. build-plt: app
  44. @dialyzer --build_plt --output_plt .$(PROJECT).plt \
  45. --apps erts kernel stdlib crypto public_key ssl
  46. dialyze:
  47. @dialyzer --src src --plt .$(PROJECT).plt \
  48. -Werror_handling -Wrace_conditions -Wunmatched_returns # -Wunderspecs