Просмотр исходного кода

Merge pull request #1584 from tsloughter/erl_opts_recompile

recompile only if new option effects code generation
pull/1587/head
Fred Hebert 7 лет назад
committed by GitHub
Родитель
Сommit
2326ad016c
1 измененных файлов: 17 добавлений и 2 удалений
  1. +17
    -2
      src/rebar_erlc_compiler.erl

+ 17
- 2
src/rebar_erlc_compiler.erl Просмотреть файл

@ -279,7 +279,7 @@ gather_src(Opts, BaseDirParts, [Dir|Rest], Srcs, CompileOpts) ->
end,
DirRecursive = dir_recursive(Opts, RelDir, CompileOpts),
gather_src(Opts, BaseDirParts, Rest, Srcs ++ rebar_utils:find_files(Dir, ?RE_PREFIX".*\\.erl\$", DirRecursive), CompileOpts).
%% Get files which need to be compiled first, i.e. those specified in erl_first_files
%% and parse_transform options. Also produce specific erl_opts for these first
%% files, so that yet to be compiled parse transformations are excluded from it.
@ -351,10 +351,25 @@ opts_changed(NewOpts, Target) ->
false -> NewOpts
end,
case compile_info(Target) of
{ok, Opts} -> lists:sort(Opts) =/= lists:sort(TotalOpts);
{ok, Opts} -> lists:any(fun effects_code_generation/1, lists:usort(TotalOpts) -- lists:usort(Opts));
_ -> true
end.
effects_code_generation(Option) ->
case Option of
beam -> false;
report_warnings -> false;
report_errors -> false;
return_errors-> false;
return_warnings-> false;
warnings_as_errors -> false;
binary -> false;
verbose -> false;
{cwd,_} -> false;
{outdir, _} -> false;
_ -> true
end.
compile_info(Target) ->
case beam_lib:chunks(Target, [compile_info]) of
{ok, {_mod, Chunks}} ->

Загрузка…
Отмена
Сохранить