summaryrefslogtreecommitdiff
path: root/src/rebar_port_compiler.erl
diff options
context:
space:
mode:
Diffstat (limited to 'src/rebar_port_compiler.erl')
-rw-r--r--src/rebar_port_compiler.erl20
1 files changed, 15 insertions, 5 deletions
diff --git a/src/rebar_port_compiler.erl b/src/rebar_port_compiler.erl
index 0abb044..35adc3c 100644
--- a/src/rebar_port_compiler.erl
+++ b/src/rebar_port_compiler.erl
@@ -498,10 +498,20 @@ erts_dir() ->
os_env() ->
ReOpts = [{return, list}, {parts, 2}, unicode],
- Os = [list_to_tuple(re:split(S, "=", ReOpts)) || S <- os:getenv()],
+ Os = [list_to_tuple(re:split(S, "=", ReOpts)) ||
+ S <- lists:filter(fun discard_deps_vars/1, os:getenv())],
%% Drop variables without a name (win32)
[T1 || {K, _V} = T1 <- Os, K =/= []].
+%%
+%% To avoid having multiple repetitions of the same environment variables
+%% (ERL_LIBS), avoid exporting any variables that may cause conflict with
+%% those exported by the rebar_deps module (ERL_LIBS, REBAR_DEPS_DIR)
+%%
+discard_deps_vars("ERL_LIBS=" ++ _Value) -> false;
+discard_deps_vars("REBAR_DEPS_DIR=" ++ _Value) -> false;
+discard_deps_vars(_Var) -> true.
+
select_compile_template(drv, Compiler) ->
select_compile_drv_template(Compiler);
select_compile_template(exe, Compiler) ->
@@ -555,10 +565,10 @@ default_env() ->
{"EXE_CFLAGS" , "-g -Wall -fPIC $ERL_CFLAGS"},
{"EXE_LDFLAGS", "$ERL_LDFLAGS"},
- {"ERL_CFLAGS", lists:concat([" -I", erl_interface_dir(include),
- " -I", filename:join(erts_dir(), "include"),
- " "])},
- {"ERL_EI_LIBDIR", erl_interface_dir(lib)},
+ {"ERL_CFLAGS", lists:concat([" -I\"", erl_interface_dir(include),
+ "\" -I\"", filename:join(erts_dir(), "include"),
+ "\" "])},
+ {"ERL_EI_LIBDIR", lists:concat(["\"", erl_interface_dir(lib), "\""])},
{"ERL_LDFLAGS" , " -L$ERL_EI_LIBDIR -lerl_interface -lei"},
{"ERLANG_ARCH" , rebar_utils:wordsize()},
{"ERLANG_TARGET", rebar_utils:get_arch()},