aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainFeatures.java6
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkAction.java21
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkActionBuilder.java4
-rw-r--r--tools/cpp/cc_configure.bzl15
4 files changed, 23 insertions, 23 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainFeatures.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainFeatures.java
index 83bcf05325..a22b2e015f 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainFeatures.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainFeatures.java
@@ -1455,10 +1455,8 @@ public class CcToolchainFeatures implements Serializable {
return commandLine;
}
- /**
- * @return the environment variables (key/value pairs) for the given {@code action}.
- */
- Map<String, String> getEnvironmentVariables(String action, Variables variables) {
+ /** @return the environment variables (key/value pairs) for the given {@code action}. */
+ ImmutableMap<String, String> getEnvironmentVariables(String action, Variables variables) {
ImmutableMap.Builder<String, String> envBuilder = ImmutableMap.builder();
for (Feature feature : enabledFeatures) {
feature.expandEnvironment(action, variables, envBuilder);
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkAction.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkAction.java
index 04dc86895e..4c868c74d8 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkAction.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkAction.java
@@ -53,6 +53,7 @@ import com.google.devtools.build.lib.vfs.Path;
import com.google.devtools.build.lib.vfs.PathFragment;
import java.io.IOException;
import java.util.Collection;
+import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import javax.annotation.Nullable;
@@ -100,7 +101,9 @@ public final class CppLinkAction extends AbstractAction
private final LibraryToLink outputLibrary;
private final Artifact linkOutput;
private final LibraryToLink interfaceOutputLibrary;
- private final Map<String, String> toolchainEnv;
+ private final ImmutableSet<String> clientEnvironmentVariables;
+ private final ImmutableMap<String, String> actionEnv;
+ private final ImmutableMap<String, String> toolchainEnv;
private final ImmutableSet<String> executionRequirements;
private final LinkCommandLine linkCommandLine;
@@ -150,7 +153,9 @@ public final class CppLinkAction extends AbstractAction
boolean isLTOIndexing,
Iterable<LTOBackendArtifacts> allLTOBackendArtifacts,
LinkCommandLine linkCommandLine,
- Map<String, String> toolchainEnv,
+ ImmutableSet<String> clientEnvironmentVariables,
+ ImmutableMap<String, String> actionEnv,
+ ImmutableMap<String, String> toolchainEnv,
ImmutableSet<String> executionRequirements) {
super(owner, inputs, outputs);
if (mnemonic == null) {
@@ -167,6 +172,8 @@ public final class CppLinkAction extends AbstractAction
this.isLTOIndexing = isLTOIndexing;
this.allLTOBackendArtifacts = allLTOBackendArtifacts;
this.linkCommandLine = linkCommandLine;
+ this.clientEnvironmentVariables = clientEnvironmentVariables;
+ this.actionEnv = actionEnv;
this.toolchainEnv = toolchainEnv;
this.executionRequirements = executionRequirements;
}
@@ -185,9 +192,15 @@ public final class CppLinkAction extends AbstractAction
}
@Override
+ public Iterable<String> getClientEnvironmentVariables() {
+ return clientEnvironmentVariables;
+ }
+
+ @Override
public ImmutableMap<String, String> getEnvironment() {
- ImmutableMap.Builder<String, String> result = ImmutableMap.<String, String>builder();
+ LinkedHashMap<String, String> result = new LinkedHashMap<>();
+ result.putAll(actionEnv);
result.putAll(toolchainEnv);
if (OS.getCurrent() == OS.WINDOWS) {
@@ -207,7 +220,7 @@ public final class CppLinkAction extends AbstractAction
.getParentDirectory()
.getPathString());
}
- return result.build();
+ return ImmutableMap.copyOf(result);
}
/**
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkActionBuilder.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkActionBuilder.java
index a368cbbe36..ed09f52223 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkActionBuilder.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkActionBuilder.java
@@ -727,7 +727,7 @@ public class CppLinkActionBuilder {
analysisEnvironment.registerAction(parameterFileWriteAction);
}
- Map<String, String> toolchainEnv =
+ ImmutableMap<String, String> toolchainEnv =
featureConfiguration.getEnvironmentVariables(getActionName(), buildVariables);
// If the crosstool uses action_configs to configure cc compilation, collect execution info
@@ -752,6 +752,8 @@ public class CppLinkActionBuilder {
isLTOIndexing,
allLTOArtifacts,
linkCommandLine,
+ configuration.getVariableShellEnvironment(),
+ configuration.getLocalShellEnvironment(),
toolchainEnv,
executionRequirements.build());
}
diff --git a/tools/cpp/cc_configure.bzl b/tools/cpp/cc_configure.bzl
index f2e9a06b89..07d94a133b 100644
--- a/tools/cpp/cc_configure.bzl
+++ b/tools/cpp/cc_configure.bzl
@@ -117,19 +117,6 @@ def _get_tool_paths(repository_ctx, darwin, cc):
}
-def _ld_library_paths(repository_ctx):
- """Use ${LD_LIBRARY_PATH} to compute the list -Wl,rpath flags."""
- if "LD_LIBRARY_PATH" in repository_ctx.os.environ:
- result = []
- for p in repository_ctx.os.environ["LD_LIBRARY_PATH"].split(":"):
- p = str(repository_ctx.path(p)) # Normalize the path
- result.append("-Wl,-rpath," + p)
- result.append("-L" + p)
- return result
- else:
- return []
-
-
def _cplus_include_paths(repository_ctx):
"""Use ${CPLUS_INCLUDE_PATH} to compute the list of flags for cxxflag."""
if "CPLUS_INCLUDE_PATH" in repository_ctx.os.environ:
@@ -244,7 +231,7 @@ def _crosstool_content(repository_ctx, cc, cpu_value, darwin):
# Gold linker only? Can we enable this by default?
# "-Wl,--warn-execstack",
# "-Wl,--detect-odr-violations"
- ]) + _ld_library_paths(repository_ctx),
+ ]),
"ar_flag": ["-static", "-s", "-o"] if darwin else [],
"cxx_builtin_include_directory": _get_cxx_inc_directories(repository_ctx, cc),
"objcopy_embed_flag": ["-I", "binary"],