diff options
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkAction.java')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkAction.java | 21 |
1 files changed, 17 insertions, 4 deletions
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); } /** |