emqx/apps/emqx/rebar.config.script

59 lines
1.5 KiB
Erlang

%% -*- mode: erlang -*-
IsCentos6 = fun() ->
case file:read_file("/etc/centos-release") of
{ok, <<"CentOS release 6", _/binary>>} ->
true;
_ ->
false
end
end,
IsWin32 = fun() ->
win32 =:= element(1, os:type())
end,
IsMacOS = fun() ->
{unix, darwin} =:= os:type()
end,
IsQuicSupp = fun() ->
not (IsCentos6() orelse IsWin32() orelse
IsMacOS() orelse
false =/= os:getenv("BUILD_WITHOUT_QUIC")) orelse
"1" == os:getenv("BUILD_WITH_QUIC")
end,
Bcrypt = {bcrypt, {git, "https://github.com/emqx/erlang-bcrypt.git", {tag, "0.6.0"}}},
Quicer = {quicer, {git, "https://github.com/emqx/quic.git", {tag, "0.0.313"}}}.
Dialyzer = fun(Config) ->
{dialyzer, OldDialyzerConfig} = lists:keyfind(dialyzer, 1, Config),
Extra = [quicer || IsQuicSupp()],
NewDialyzerConfig = [{plt_extra_apps, Extra} | OldDialyzerConfig],
lists:keystore(
dialyzer,
1,
Config,
{dialyzer, NewDialyzerConfig}
)
end.
ExtraDeps = fun(C) ->
{deps, Deps0} = lists:keyfind(deps, 1, C),
{erl_opts, ErlOpts0} = lists:keyfind(erl_opts, 1, C),
IsQuic = IsQuicSupp(),
New = [
{deps, Deps0 ++ [Bcrypt || not IsWin32()] ++ [Quicer || IsQuic]},
{erl_opts, ErlOpts0 ++ [{d, 'BUILD_WITHOUT_QUIC'} || not IsQuic]}
],
lists:foldl(
fun({Key, _Val} = KV, Acc) ->
lists:keystore(Key, 1, Acc, KV)
end,
C,
New
)
end,
Dialyzer(ExtraDeps(CONFIG)).