diff options
Diffstat (limited to 'src/rebar_port_compiler.erl')
-rw-r--r-- | src/rebar_port_compiler.erl | 73 |
1 files changed, 37 insertions, 36 deletions
diff --git a/src/rebar_port_compiler.erl b/src/rebar_port_compiler.erl index 19c6f79..5ae1b40 100644 --- a/src/rebar_port_compiler.erl +++ b/src/rebar_port_compiler.erl @@ -115,20 +115,21 @@ compile(Config, AppFile) -> %% Only relink if necessary, given the SoName %% and list of new binaries lists:foreach( - fun({SoName,Bins}) -> - AllBins = [sets:from_list(Bins), sets:from_list(NewBins)], - Intersection = sets:intersection(AllBins), - case needs_link(SoName, sets:to_list(Intersection)) of - true -> - rebar_utils:sh( - ?FMT("$CC ~s $LDFLAGS $DRV_LDFLAGS -o ~s", - [string:join(Bins, " "), SoName]), - [{env, Env}]); - false -> - ?INFO("Skipping relink of ~s\n", [SoName]), - ok - end - end, SoSpecs) + fun({SoName,Bins}) -> + AllBins = [sets:from_list(Bins), + sets:from_list(NewBins)], + NewBins1 = sets:intersection(AllBins), + case needs_link(SoName, sets:to_list(NewBins1)) of + true -> + Fmt = "$CC ~s $LDFLAGS $DRV_LDFLAGS -o ~s", + Vars = [string:join(Bins, " "), SoName], + rebar_utils:sh(?FMT(Fmt, Vars), + [{env, Env}]); + false -> + ?INFO("Skipping relink of ~s\n", [SoName]), + ok + end + end, SoSpecs) end. clean(Config, AppFile) -> @@ -225,8 +226,8 @@ compile_each([Source | Rest], Config, Env, NewBins, ExistingBins) -> [Source, Bin]), [{env, Env}]); "$CXX" -> rebar_utils:sh( - ?FMT("$CXX -c $CXXFLAGS $DRV_CFLAGS ~s -o ~s", - [Source, Bin]), [{env, Env}]) + ?FMT("$CXX -c $CXXFLAGS $DRV_CFLAGS ~s -o ~s", + [Source, Bin]), [{env, Env}]) end, compile_each(Rest, Config, Env, [Bin | NewBins], ExistingBins); @@ -274,16 +275,16 @@ compiler(_) -> "$CC". %% apply_defaults(Vars, Defaults) -> dict:to_list( - dict:merge(fun(Key, VarValue, DefaultValue) -> - case is_expandable(DefaultValue) of - true -> - expand_env_variable(DefaultValue, - Key, VarValue); - false -> VarValue - end - end, - dict:from_list(Vars), - dict:from_list(Defaults))). + dict:merge(fun(Key, VarValue, DefaultValue) -> + case is_expandable(DefaultValue) of + true -> + expand_env_variable(DefaultValue, + Key, VarValue); + false -> VarValue + end + end, + dict:from_list(Vars), + dict:from_list(Defaults))). %% %% Given a list of {Key, Value} environment variables, where Key may be defined %% multiple times, walk the list and expand each self-reference so that we @@ -329,16 +330,16 @@ expand_vars_loop(Vars0, Count) -> %% expand_vars(Key, Value, Vars) -> lists:foldl( - fun({AKey, AValue}, Acc) -> - NewValue = case AKey of - Key -> - AValue; - _ -> - expand_env_variable(AValue, Key, Value) - end, - [{AKey, NewValue} | Acc] - end, - [], Vars). + fun({AKey, AValue}, Acc) -> + NewValue = case AKey of + Key -> + AValue; + _ -> + expand_env_variable(AValue, Key, Value) + end, + [{AKey, NewValue} | Acc] + end, + [], Vars). %% |