Makefile 1.7 KB

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