diff --git a/plugins/deps_erl_opts.erl b/plugins/deps_erl_opts.erl new file mode 100644 index 000000000..725802664 --- /dev/null +++ b/plugins/deps_erl_opts.erl @@ -0,0 +1,12 @@ +-module(deps_erl_opts). +-export([preprocess/2]). + +preprocess(Config, Dirs) -> + ExtraOpts = rebar_config:get(Config, deps_erl_opts, []), + Opts = rebar_config:get(Config, erl_opts, []), + NewOpts = lists:foldl(fun(Opt, Acc) when is_tuple(Opt) -> + lists:keystore(element(1, Opt), 1, Acc, Opt); + (Opt, Acc) -> + [Opt | lists:delete(Opt, Acc)] + end, Opts, ExtraOpts), + {ok, rebar_config:set(Config, erl_opts, NewOpts), []}. diff --git a/rebar.config.script b/rebar.config.script index e47890036..0204e7b70 100644 --- a/rebar.config.script +++ b/rebar.config.script @@ -157,10 +157,10 @@ CfgXrefs = lists:flatmap( ElixirConfig = case lists:keysearch(elixir, 1, Cfg) of {value, {elixir, true}} -> - [{plugins, [rebar_elixir_compiler, rebar_exunit] }, + [{plugins, [deps_erl_opts, rebar_elixir_compiler, rebar_exunit] }, {lib_dirs, ["deps/elixir/lib"]}]; _ -> - [] + [{plugins, [deps_erl_opts]}] end, {ok, Cwd} = file:get_cwd(), @@ -181,6 +181,7 @@ AllDeps = case lists:keytake(lager, 1, AllDeps0) of Config = [{erl_opts, Macros ++ HiPE ++ DebugInfo ++ [{src_dirs, [asn1, src | SrcDirs]}]}, + {deps_erl_opts, HiPE}, {sub_dirs, ["rel"]}, {keep_build_info, true}, {ct_extra_params, "-ct_hooks cth_surefire "