diff options
| author | Fred Hebert <mononcqc@ferd.ca> | 2016-09-30 13:45:24 -0400 | 
|---|---|---|
| committer | GitHub <noreply@github.com> | 2016-09-30 13:45:24 -0400 | 
| commit | c0e5f8a95fb577887623b32ecb4b1ebeba2f6524 (patch) | |
| tree | 2cf3ebe89b797127bf9ce30c28d8236bd1e497d5 /src | |
| parent | 7ed3ecdf4e73d04f1dc25554ac80baba908315bd (diff) | |
| parent | 82e7616745bdb05143b78e1b3d3c15db709a7f0a (diff) | |
Merge pull request #1340 from ferd/fix-test-includes-in-compile
Fix private includes when compiling in test profile
Diffstat (limited to 'src')
| -rw-r--r-- | src/rebar_erlc_compiler.erl | 23 | 
1 files changed, 14 insertions, 9 deletions
| diff --git a/src/rebar_erlc_compiler.erl b/src/rebar_erlc_compiler.erl index e6f2b71..36a247e 100644 --- a/src/rebar_erlc_compiler.erl +++ b/src/rebar_erlc_compiler.erl @@ -203,8 +203,8 @@ compile_dirs(RebarOpts, BaseDir, SrcDirs, OutDir, Opts) ->      G = init_erlcinfo(include_abs_dirs(ErlOpts, BaseDir), AllErlFiles, BaseDir, OutDir),      {ParseTransforms, Rest} = split_source_files(AllErlFiles, ErlOpts), -    NeededErlFiles = case needed_files(G, ErlOpts, BaseDir, OutDir, ParseTransforms) of -        [] -> needed_files(G, ErlOpts, BaseDir, OutDir, Rest); +    NeededErlFiles = case needed_files(G, ErlOpts, RebarOpts, BaseDir, OutDir, ParseTransforms) of +        [] -> needed_files(G, ErlOpts, RebarOpts, BaseDir, OutDir, Rest);          %% at least one parse transform in the opts needs updating, so recompile all          _  -> AllErlFiles      end, @@ -224,7 +224,7 @@ compile_dirs(RebarOpts, BaseDir, SrcDirs, OutDir, Opts) ->                                     true -> ErlOptsFirst;                                     false -> ErlOpts                                 end, -                    internal_erl_compile(C, BaseDir, S, OutDir, ErlOpts1) +                    internal_erl_compile(C, BaseDir, S, OutDir, ErlOpts1, RebarOpts)              end)      after          true = digraph:delete(SubGraph), @@ -312,13 +312,15 @@ 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(G, ErlOpts, Dir, OutDir, SourceFiles) -> +needed_files(G, ErlOpts, RebarOpts, Dir, OutDir, SourceFiles) ->      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}] ++ ErlOpts, +                                   ,{i, Dir}] ++ PrivIncludes ++ ErlOpts,                           digraph:vertex(G, Source) > {Source, filelib:last_modified(Target)}                                orelse opts_changed(AllOpts, TargetBase)                                orelse erl_compiler_opts_set() @@ -518,12 +520,15 @@ expand_file_names(Files, Dirs) ->        end, Files).  -spec internal_erl_compile(rebar_dict(), file:filename(), file:filename(), -    file:filename(), list()) -> ok | {ok, any()} | {error, any(), any()}. -internal_erl_compile(Opts, Dir, Module, OutDir, ErlOpts) -> +                           file:filename(), list(), rebar_dict()) -> +      ok | {ok, any()} | {error, any(), any()}. +internal_erl_compile(Opts, Dir, Module, OutDir, ErlOpts, RebarOpts) ->      Target = target_base(OutDir, Module) ++ ".beam",      ok = filelib:ensure_dir(Target), -    AllOpts = [{outdir, filename:dirname(Target)}] ++ ErlOpts ++ -        [{i, filename:join(Dir, "include")}, {i, Dir}, return], +    PrivIncludes = [{i, filename:join(Dir, Src)} +                    || Src <- rebar_dir:all_src_dirs(RebarOpts, ["src"], [])], +    AllOpts = [{outdir, filename:dirname(Target)}] ++ ErlOpts ++ PrivIncludes ++ +              [{i, filename:join(Dir, "include")}, {i, Dir}, return],      case compile:file(Module, AllOpts) of          {ok, _Mod} ->              ok; | 
