diff --git a/src/rebar_compiler_erl.erl b/src/rebar_compiler_erl.erl index c849e47c..9a8a9377 100644 --- a/src/rebar_compiler_erl.erl +++ b/src/rebar_compiler_erl.erl @@ -217,17 +217,18 @@ filename_to_atom(F) -> list_to_atom(filename:rootname(filename:basename(F))). %% Get subset of SourceFiles which need to be recompiled, respecting %% dependencies induced by given graph G. needed_files(Graph, ErlOpts, RebarOpts, Dir, OutDir, SourceFiles) -> + PrivIncludes = [{i, filename:join(Dir, Src)} + || Src <- rebar_dir:all_src_dirs(RebarOpts, ["src"], [])], + SharedOpts = [{i, filename:join(Dir, "include")}, + {i, Dir}] ++ PrivIncludes ++ ErlOpts, + CompilerOptsSet = erl_compiler_opts_set(), lists:filter(fun(Source) -> TargetBase = target_base(OutDir, Source), Target = TargetBase ++ ".beam", - PrivIncludes = [{i, filename:join(Dir, Src)} - || Src <- rebar_dir:all_src_dirs(RebarOpts, ["src"], [])], - AllOpts = [{outdir, filename:dirname(Target)} - ,{i, filename:join(Dir, "include")} - ,{i, Dir}] ++ PrivIncludes ++ ErlOpts, + AllOpts = [{outdir, filename:dirname(Target)} | SharedOpts], digraph:vertex(Graph, Source) > {Source, filelib:last_modified(Target)} orelse opts_changed(Graph, AllOpts, Target, TargetBase) - orelse erl_compiler_opts_set() + orelse CompilerOptsSet end, SourceFiles). target_base(OutDir, Source) ->