| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140 |
- .PHONY: plugins tests
- PROJECT = emqx
- PROJECT_DESCRIPTION = EMQ X Broker
- PROJECT_VERSION = 3.0
- DEPS = jsx gproc gen_rpc lager ekka esockd cowboy clique lager_syslog
- dep_jsx = git https://github.com/talentdeficit/jsx 2.9.0
- dep_gproc = git https://github.com/uwiger/gproc 0.8.0
- dep_gen_rpc = git https://github.com/emqx/gen_rpc 2.2.0
- dep_lager = git https://github.com/erlang-lager/lager 3.6.5
- dep_esockd = git https://github.com/emqx/esockd v5.4.2
- dep_ekka = git https://github.com/emqx/ekka v0.4.1
- dep_cowboy = git https://github.com/ninenines/cowboy 2.4.0
- dep_clique = git https://github.com/emqx/clique develop
- dep_lager_syslog = git https://github.com/basho/lager_syslog 3.0.1
- NO_AUTOPATCH = cuttlefish
- ERLC_OPTS += +debug_info -DAPPLICATION=emqx
- ERLC_OPTS += +'{parse_transform, lager_transform}'
- BUILD_DEPS = cuttlefish
- dep_cuttlefish = git https://github.com/emqx/cuttlefish emqx30
- #TEST_DEPS = emqx_ct_helplers
- #dep_emqx_ct_helplers = git git@github.com:emqx/emqx-ct-helpers
- TEST_ERLC_OPTS += +debug_info -DAPPLICATION=emqx
- TEST_ERLC_OPTS += +'{parse_transform, lager_transform}'
- EUNIT_OPTS = verbose
- # CT_SUITES = emqx_frame
- ## emqx_trie emqx_router emqx_frame emqx_mqtt_compat
- CT_SUITES = emqx emqx_client emqx_zone emqx_banned emqx_session \
- emqx_access emqx_broker emqx_cm emqx_frame emqx_guid emqx_inflight emqx_json \
- emqx_keepalive emqx_lib emqx_metrics emqx_mod emqx_mod_sup emqx_mqtt_caps \
- emqx_mqtt_props emqx_mqueue emqx_net emqx_pqueue emqx_router emqx_sm \
- emqx_tables emqx_time emqx_topic emqx_trie emqx_vm emqx_mountpoint \
- emqx_listeners emqx_protocol emqx_pool emqx_shared_sub emqx_bridge emqx_hooks
- CT_NODE_NAME = emqxct@127.0.0.1
- CT_OPTS = -cover test/ct.cover.spec -erl_args -name $(CT_NODE_NAME)
- COVER = true
- PLT_APPS = sasl asn1 ssl syntax_tools runtime_tools crypto xmerl os_mon inets public_key ssl lager compiler mnesia
- DIALYZER_DIRS := ebin/
- DIALYZER_OPTS := --verbose --statistics -Werror_handling -Wrace_conditions #-Wunmatched_returns
- include erlang.mk
- clean:: gen-clean rebar-clean
- .PHONY: gen-clean
- gen-clean:
- @rm -rf bbmustache
- @rm -f etc/gen.emqx.conf
- bbmustache:
- $(verbose) git clone https://github.com/soranoba/bbmustache.git && cd bbmustache && ./rebar3 compile && cd ..
- # This hack is to generate a conf file for testing
- # relx overlay is used for release
- etc/gen.emqx.conf: bbmustache etc/emqx.conf
- $(verbose) erl -noshell -pa bbmustache/_build/default/lib/bbmustache/ebin -eval \
- "{ok, Temp} = file:read_file('etc/emqx.conf'), \
- {ok, Vars0} = file:consult('vars'), \
- Vars = [{atom_to_list(N), list_to_binary(V)} || {N, V} <- Vars0], \
- Targ = bbmustache:render(Temp, Vars), \
- ok = file:write_file('etc/gen.emqx.conf', Targ), \
- halt(0)."
- CUTTLEFISH_SCRIPT = _build/default/lib/cuttlefish/cuttlefish
- app.config: $(CUTTLEFISH_SCRIPT) etc/gen.emqx.conf
- $(verbose) $(CUTTLEFISH_SCRIPT) -l info -e etc/ -c etc/gen.emqx.conf -i priv/emqx.schema -d data/
- ct: app.config
- rebar-cover:
- @rebar3 cover
- coveralls:
- @rebar3 coveralls send
- $(CUTTLEFISH_SCRIPT): rebar-deps
- @if [ ! -f cuttlefish ]; then make -C _build/default/lib/cuttlefish; fi
- rebar-xref:
- @rebar3 xref
- rebar-deps:
- @rebar3 get-deps
- rebar-eunit: $(CUTTLEFISH_SCRIPT)
- @rebar3 eunit
- rebar-compile:
- @rebar3 compile
- rebar-ct: app.config
- @rebar3 as test compile
- @ln -s -f '../../../../etc' _build/test/lib/emqx/
- @ln -s -f '../../../../data' _build/test/lib/emqx/
- @rebar3 ct -v --readable=false --name $(CT_NODE_NAME) --suite=$(shell echo $(foreach var,$(CT_SUITES),test/$(var)_SUITE) | tr ' ' ',')
- rebar-clean:
- @rebar3 clean
- distclean:: rebar-clean
- @rm -rf _build cover deps logs log data
- @rm -f rebar.lock compile_commands.json cuttlefish
- ## Below are for version consistency check during erlang.mk and rebar3 dual mode support
- none=
- space = $(none) $(none)
- comma = ,
- quote = \"
- curly_l = "{"
- curly_r = "}"
- dep-versions = [$(foreach dep,$(DEPS) $(BUILD_DEPS),$(curly_l)$(dep),$(quote)$(word 3,$(dep_$(dep)))$(quote)$(curly_r)$(comma))[]]
- .PHONY: dep-vsn-check
- dep-vsn-check:
- $(verbose) erl -noshell -eval \
- "MkVsns = lists:sort(lists:flatten($(dep-versions))), \
- {ok, Conf} = file:consult('rebar.config'), \
- {_, Deps1} = lists:keyfind(deps, 1, Conf), \
- {_, Deps2} = lists:keyfind(github_emqx_deps, 1, Conf), \
- F = fun({N, V}) when is_list(V) -> {N, V}; ({N, {git, _, {branch, V}}}) -> {N, V} end, \
- RebarVsns = lists:sort(lists:map(F, Deps1 ++ Deps2)), \
- case {RebarVsns -- MkVsns, MkVsns -- RebarVsns} of \
- {[], []} -> halt(0); \
- {Rebar, Mk} -> erlang:error({deps_version_discrepancy, [{rebar, Rebar}, {mk, Mk}]}) \
- end."
|