mirror of
https://github.com/ninenines/cowboy.git
synced 2025-07-14 12:20:24 +00:00
Spin-off erlang.mk as a separate project
This commit is contained in:
parent
76e9df51c0
commit
ed2efbc4a1
2 changed files with 140 additions and 97 deletions
108
Makefile
108
Makefile
|
@ -1,112 +1,26 @@
|
|||
# See LICENSE for licensing information.
|
||||
|
||||
PROJECT = cowboy
|
||||
ERLC_OPTS ?= -Werror +debug_info +warn_export_all +warn_export_vars \
|
||||
+warn_shadow_vars +warn_obsolete_guard # +bin_opt_info +warn_missing_spec
|
||||
|
||||
# Options.
|
||||
|
||||
COMPILE_FIRST = cowboy_middleware cowboy_sub_protocol
|
||||
CT_SUITES = eunit http ws
|
||||
PLT_APPS = crypto public_key ssl
|
||||
|
||||
# Dependencies.
|
||||
|
||||
DEPS = ranch
|
||||
dep_ranch = https://github.com/extend/ranch.git 0.8.1
|
||||
|
||||
DEPS_DIR ?= $(CURDIR)/deps
|
||||
export DEPS_DIR
|
||||
# Standard targets.
|
||||
|
||||
define get_dep =
|
||||
@mkdir -p $(DEPS_DIR)
|
||||
git clone -n -- $(word 1,$(dep_$(1))) $(DEPS_DIR)/$(1)
|
||||
cd $(DEPS_DIR)/$(1) ; git checkout -q $(word 2,$(dep_$(1)))
|
||||
endef
|
||||
include erlang.mk
|
||||
|
||||
# Makefile tweaks.
|
||||
# Extra targets.
|
||||
|
||||
V ?= 0
|
||||
|
||||
appsrc_verbose_0 = @echo " APP " $(PROJECT).app.src;
|
||||
appsrc_verbose = $(appsrc_verbose_$(V))
|
||||
|
||||
erlc_verbose_0 = @echo " ERLC " $(?F);
|
||||
erlc_verbose = $(erlc_verbose_$(V))
|
||||
|
||||
gen_verbose_0 = @echo " GEN " $@;
|
||||
gen_verbose = $(gen_verbose_$(V))
|
||||
|
||||
.PHONY: all clean-all app clean deps clean-deps docs clean-docs \
|
||||
build-tests tests autobahn build-plt dialyze
|
||||
|
||||
# Application.
|
||||
|
||||
all: deps app
|
||||
|
||||
clean-all: clean clean-deps clean-docs
|
||||
$(gen_verbose) rm -rf .$(PROJECT).plt $(DEPS_DIR) logs
|
||||
|
||||
MODULES = $(shell ls src/*.erl | sed 's/src\///;s/\.erl/,/' | sed '$$s/.$$//')
|
||||
|
||||
app: ebin/$(PROJECT).app
|
||||
$(appsrc_verbose) cat src/$(PROJECT).app.src \
|
||||
| sed 's/{modules, \[\]}/{modules, \[$(MODULES)\]}/' \
|
||||
> ebin/$(PROJECT).app
|
||||
|
||||
COMPILE_FIRST = src/cowboy_middleware.erl src/cowboy_sub_protocol.erl
|
||||
|
||||
ebin/$(PROJECT).app: src/*.erl
|
||||
@mkdir -p ebin/
|
||||
$(erlc_verbose) erlc -v $(ERLC_OPTS) -o ebin/ -pa ebin/ \
|
||||
$(COMPILE_FIRST) $?
|
||||
|
||||
clean:
|
||||
$(gen_verbose) rm -rf ebin/ test/*.beam erl_crash.dump
|
||||
|
||||
# Dependencies.
|
||||
|
||||
$(DEPS_DIR)/ranch:
|
||||
$(call get_dep,ranch)
|
||||
|
||||
deps: $(DEPS_DIR)/ranch
|
||||
@$(MAKE) -C $(DEPS_DIR)/ranch
|
||||
|
||||
clean-deps:
|
||||
-@$(MAKE) -C $(DEPS_DIR)/ranch clean
|
||||
|
||||
# Documentation.
|
||||
|
||||
docs: clean-docs
|
||||
$(gen_verbose) erl -noshell \
|
||||
-eval 'edoc:application($(PROJECT), ".", []), init:stop().'
|
||||
|
||||
clean-docs:
|
||||
$(gen_verbose) rm -f doc/*.css doc/*.html doc/*.png doc/edoc-info
|
||||
|
||||
# Tests.
|
||||
|
||||
build-tests:
|
||||
$(gen_verbose) erlc -v $(ERLC_OPTS) \
|
||||
-o test/ test/*.erl test/*/*.erl -pa ebin/
|
||||
|
||||
CT_RUN = ct_run \
|
||||
-no_auto_compile \
|
||||
-noshell \
|
||||
-pa ebin $(DEPS_DIR)/*/ebin \
|
||||
-dir test \
|
||||
-logdir logs
|
||||
# -cover test/cover.spec
|
||||
|
||||
tests: ERLC_OPTS += -DTEST=1 +'{parse_transform, eunit_autoexport}'
|
||||
tests: clean clean-deps deps app build-tests
|
||||
@mkdir -p logs/
|
||||
@$(CT_RUN) -suite eunit_SUITE http_SUITE ws_SUITE
|
||||
$(gen_verbose) rm -f test/*.beam
|
||||
.PHONY: autobahn
|
||||
|
||||
autobahn: clean clean-deps deps app build-tests
|
||||
@mkdir -p logs/
|
||||
@$(CT_RUN) -suite autobahn_SUITE
|
||||
|
||||
# Dialyzer.
|
||||
|
||||
build-plt: deps app
|
||||
@dialyzer --build_plt --output_plt .$(PROJECT).plt \
|
||||
--apps erts kernel stdlib crypto public_key ssl $(DEPS_DIR)/ranch
|
||||
|
||||
dialyze:
|
||||
@dialyzer --src src --plt .$(PROJECT).plt --no_native \
|
||||
-Werror_handling -Wrace_conditions -Wunmatched_returns # -Wunderspecs
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue