mirror of
https://github.com/correl/rebar.git
synced 2024-12-18 11:06:20 +00:00
Merge pull request #75 from djnym/port_env_handling
Different fix for the OS environment vs Default environment
This commit is contained in:
commit
a34c1a7b12
1 changed files with 41 additions and 11 deletions
|
@ -153,7 +153,7 @@ setup_env(Config) ->
|
|||
DefaultEnvs = filter_envs(default_env(), []),
|
||||
PortEnvs = rebar_config:get_list(Config, port_envs, []),
|
||||
OverrideEnvs = filter_envs(PortEnvs, []),
|
||||
RawEnv = DefaultEnvs ++ OverrideEnvs ++ os_env(),
|
||||
RawEnv = apply_defaults(os_env(), DefaultEnvs) ++ OverrideEnvs,
|
||||
expand_vars_loop(merge_each_var(RawEnv, [])).
|
||||
|
||||
%% ===================================================================
|
||||
|
@ -266,7 +266,24 @@ compiler(".c++") -> "$CXX";
|
|||
compiler(".C") -> "$CXX";
|
||||
compiler(_) -> "$CC".
|
||||
|
||||
|
||||
%%
|
||||
%% Given a list of {Key, Value} variables, and another list of default
|
||||
%% {Key, Value} variables, return a merged list where the rule is if the
|
||||
%% default is expandable expand it with the value of the variable list,
|
||||
%% otherwise just return the value of the variable.
|
||||
%%
|
||||
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))).
|
||||
%%
|
||||
%% 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
|
||||
|
@ -324,6 +341,16 @@ expand_vars(Key, Value, Vars) ->
|
|||
[], Vars).
|
||||
|
||||
|
||||
%%
|
||||
%% Given a string, determine if it is expandable
|
||||
%%
|
||||
is_expandable(InStr) ->
|
||||
case re:run(InStr,"\\\$",[{capture,none}]) of
|
||||
match -> true;
|
||||
nomatch -> false
|
||||
end.
|
||||
|
||||
|
||||
%%
|
||||
%% Given env. variable FOO we want to expand all references to
|
||||
%% it in InStr. References can have two forms: $FOO and ${FOO}
|
||||
|
@ -374,17 +401,20 @@ default_env() ->
|
|||
{"ERLANG_ARCH", integer_to_list(8 * erlang:system_info(wordsize))},
|
||||
{"ERLANG_TARGET", rebar_utils:get_arch()},
|
||||
|
||||
{"solaris.*-64$", "CFLAGS", "-D_REENTRANT -m64"}, % Solaris specific flags
|
||||
{"solaris.*-64$", "CXXFLAGS", "-D_REENTRANT -m64"},
|
||||
{"solaris.*-64$", "LDFLAGS", "-m64"},
|
||||
%% Solaris specific flags
|
||||
{"solaris.*-64$", "CFLAGS", "-D_REENTRANT -m64 $CFLAGS"},
|
||||
{"solaris.*-64$", "CXXFLAGS", "-D_REENTRANT -m64 $CXXFLAGS"},
|
||||
{"solaris.*-64$", "LDFLAGS", "-m64 $LDFLAGS"},
|
||||
|
||||
{"darwin9.*-64$", "CFLAGS", "-m64"}, % OS X Leopard flags for 64-bit
|
||||
{"darwin9.*-64$", "CXXFLAGS", "-m64"},
|
||||
{"darwin9.*-64$", "LDFLAGS", "-arch x86_64"},
|
||||
%% OS X Leopard flags for 64-bit
|
||||
{"darwin9.*-64$", "CFLAGS", "-m64 $CFLAGS"},
|
||||
{"darwin9.*-64$", "CXXFLAGS", "-m64 $CXXFLAGS"},
|
||||
{"darwin9.*-64$", "LDFLAGS", "-arch x86_64 $LDFLAGS"},
|
||||
|
||||
{"darwin10.*-32", "CFLAGS", "-m32"}, % OS X Snow Leopard flags for 32-bit
|
||||
{"darwin10.*-32", "CXXFLAGS", "-m32"},
|
||||
{"darwin10.*-32", "LDFLAGS", "-arch i386"}
|
||||
%% OS X Snow Leopard flags for 32-bit
|
||||
{"darwin10.*-32", "CFLAGS", "-m32 $CFLAGS"},
|
||||
{"darwin10.*-32", "CXXFLAGS", "-m32 $CXXFLAGS"},
|
||||
{"darwin10.*-32", "LDFLAGS", "-arch i386 $LDFLAGS"}
|
||||
].
|
||||
|
||||
|
||||
|
|
Loading…
Reference in a new issue