aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainProvider.java
diff options
context:
space:
mode:
authorGravatar hlopko <hlopko@google.com>2017-09-19 15:42:58 +0200
committerGravatar László Csomor <laszlocsomor@google.com>2017-09-19 17:17:56 +0200
commit6434af053cfffa38909bc86afe69e33b573b6179 (patch)
treecb6ca52ddada1f718089d4ff2e21d5d3eb79eee3 /src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainProvider.java
parente85b5a7a7c4968ff3451573b4b8ca2a52a3e9961 (diff)
Do not duplicate build variables, reuse variables from cc toolchain
Before this cl each linking and compilation action would contain a full copy of all build variables. However, some build variables can be reused, for the memory consumption benefit. With this cl, we contruct a Variables instance in the CcToolchain, and make it a parent of all per-linking and per-compilation variables. RELNOTES: None. PiperOrigin-RevId: 169233756
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainProvider.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainProvider.java18
1 files changed, 8 insertions, 10 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainProvider.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainProvider.java
index b79164bbeb..8fc5075c46 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainProvider.java
@@ -23,12 +23,12 @@ import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
import com.google.devtools.build.lib.collect.nestedset.Order;
import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
import com.google.devtools.build.lib.events.Location;
+import com.google.devtools.build.lib.rules.cpp.CcToolchainFeatures.Variables;
import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
import com.google.devtools.build.lib.util.Pair;
import com.google.devtools.build.lib.util.Preconditions;
import com.google.devtools.build.lib.vfs.PathFragment;
-import java.util.Map;
import javax.annotation.Nullable;
/** Information about a C++ compiler used by the <code>cc_*</code> rules. */
@@ -59,7 +59,7 @@ public final class CcToolchainProvider extends ToolchainInfo {
CppCompilationContext.EMPTY,
false,
false,
- ImmutableMap.<String, String>of(),
+ Variables.EMPTY,
ImmutableList.<Artifact>of(),
NestedSetBuilder.<Pair<String, String>>emptySet(Order.COMPILE_ORDER),
null,
@@ -87,7 +87,7 @@ public final class CcToolchainProvider extends ToolchainInfo {
private final CppCompilationContext cppCompilationContext;
private final boolean supportsParamFiles;
private final boolean supportsHeaderParsing;
- private final ImmutableMap<String, String> buildVariables;
+ private final Variables buildVariables;
private final ImmutableList<Artifact> builtinIncludeFiles;
private final NestedSet<Pair<String, String>> coverageEnvironment;
@Nullable private final Artifact linkDynamicLibraryTool;
@@ -116,7 +116,7 @@ public final class CcToolchainProvider extends ToolchainInfo {
CppCompilationContext cppCompilationContext,
boolean supportsParamFiles,
boolean supportsHeaderParsing,
- Map<String, String> buildVariables,
+ Variables buildVariables,
ImmutableList<Artifact> builtinIncludeFiles,
NestedSet<Pair<String, String>> coverageEnvironment,
Artifact linkDynamicLibraryTool,
@@ -144,7 +144,7 @@ public final class CcToolchainProvider extends ToolchainInfo {
this.cppCompilationContext = Preconditions.checkNotNull(cppCompilationContext);
this.supportsParamFiles = supportsParamFiles;
this.supportsHeaderParsing = supportsHeaderParsing;
- this.buildVariables = ImmutableMap.copyOf(buildVariables);
+ this.buildVariables = buildVariables;
this.builtinIncludeFiles = builtinIncludeFiles;
this.coverageEnvironment = coverageEnvironment;
this.linkDynamicLibraryTool = linkDynamicLibraryTool;
@@ -298,11 +298,9 @@ public final class CcToolchainProvider extends ToolchainInfo {
public CppConfiguration getCppConfiguration() {
return cppConfiguration;
}
-
- /**
- * Returns build variables to be templated into the crosstool.
- */
- public ImmutableMap<String, String> getBuildVariables() {
+
+ /** Returns build variables to be templated into the crosstool. */
+ public Variables getBuildVariables() {
return buildVariables;
}