| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- %% -*- 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)).
|