Move CppToolchainInfo.toolchainFeatures to CcToolchainProvider.toolchainFeatures
RELNOTES: None.
PiperOrigin-RevId: 252798611
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 e1492f9..8a66c74 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
@@ -53,6 +53,7 @@
/* values= */ ImmutableMap.of(),
/* cppConfiguration= */ null,
/* toolchainInfo= */ null,
+ /* toolchainFeatures= */ null,
/* crosstoolTopPathFragment= */ null,
/* allFiles= */ NestedSetBuilder.emptySet(Order.STABLE_ORDER),
/* allFilesMiddleman= */ NestedSetBuilder.emptySet(Order.STABLE_ORDER),
@@ -124,6 +125,7 @@
private final PathFragment targetSysroot;
private final boolean isHostConfiguration;
private final ImmutableMap<String, PathFragment> toolPaths;
+ private final CcToolchainFeatures toolchainFeatures;
/**
* WARNING: We don't like {@link FdoContext}. Its {@link FdoContext#fdoProfilePath} is pure path
* and that is horrible as it breaks many Bazel assumptions! Don't do bad stuff with it, don't
@@ -137,6 +139,7 @@
ImmutableMap<String, Object> values,
@Nullable CppConfiguration cppConfiguration,
CppToolchainInfo toolchainInfo,
+ CcToolchainFeatures toolchainFeatures,
PathFragment crosstoolTopPathFragment,
NestedSet<Artifact> allFiles,
NestedSet<Artifact> allFilesMiddleman,
@@ -214,6 +217,7 @@
this.isHostConfiguration = isHostConfiguration;
this.licensesProvider = licensesProvider;
this.toolPaths = toolPaths;
+ this.toolchainFeatures = toolchainFeatures;
}
/**
@@ -578,7 +582,7 @@
*/
@Nullable
public CcToolchainFeatures getFeatures() {
- return toolchainInfo.getFeatures();
+ return toolchainFeatures;
}
public Label getCcToolchainLabel() {
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainProviderHelper.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainProviderHelper.java
index 019a949..d9071f9 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainProviderHelper.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainProviderHelper.java
@@ -69,13 +69,14 @@
CppToolchainInfo toolchainInfo;
ImmutableMap<String, PathFragment> toolPaths;
+ CcToolchainFeatures toolchainFeatures;
+ PathFragment toolsDirectory = getToolsDirectory(ruleContext.getLabel());
try {
toolchainInfo =
CppToolchainInfo.create(ruleContext.getLabel(), attributes.getCcToolchainConfigInfo());
- toolPaths =
- computeToolPaths(
- attributes.getCcToolchainConfigInfo(),
- CppToolchainInfo.getToolsDirectory(ruleContext.getLabel()));
+ toolPaths = computeToolPaths(attributes.getCcToolchainConfigInfo(), toolsDirectory);
+ toolchainFeatures =
+ new CcToolchainFeatures(attributes.getCcToolchainConfigInfo(), toolsDirectory);
} catch (EvalException e) {
throw ruleContext.throwWithRuleError(e.getMessage());
}
@@ -181,8 +182,7 @@
ImmutableList.Builder<PathFragment> builtInIncludeDirectoriesBuilder = ImmutableList.builder();
for (String s : toolchainInfo.getRawBuiltInIncludeDirectories()) {
try {
- builtInIncludeDirectoriesBuilder.add(
- resolveIncludeDir(s, sysroot, toolchainInfo.getToolsDirectory()));
+ builtInIncludeDirectoriesBuilder.add(resolveIncludeDir(s, sysroot, toolsDirectory));
} catch (InvalidConfigurationException e) {
ruleContext.ruleError(e.getMessage());
}
@@ -194,7 +194,8 @@
getToolchainForSkylark(toolPaths),
cppConfiguration,
toolchainInfo,
- toolchainInfo.getToolsDirectory(),
+ toolchainFeatures,
+ toolsDirectory,
attributes.getAllFiles(),
attributes.getFullInputsForCrosstool(),
attributes.getCompilerFiles(),
@@ -445,4 +446,8 @@
static PathFragment getToolPathFragment(ImmutableMap<String, PathFragment> toolPaths, Tool tool) {
return toolPaths.get(tool.getNamePart());
}
+
+ static PathFragment getToolsDirectory(Label ccToolchainLabel) {
+ return ccToolchainLabel.getPackageIdentifier().getPathUnderExecRoot();
+ }
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppToolchainInfo.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppToolchainInfo.java
index 50e05dfd..b230010 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppToolchainInfo.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppToolchainInfo.java
@@ -39,7 +39,6 @@
@Immutable
public final class CppToolchainInfo {
private final String toolchainIdentifier;
- private final CcToolchainFeatures toolchainFeatures;
private final String compiler;
private final String abiGlibcVersion;
@@ -73,7 +72,6 @@
return new CppToolchainInfo(
ccToolchainConfigInfo.getToolchainIdentifier(),
- new CcToolchainFeatures(ccToolchainConfigInfo, getToolsDirectory(toolchainLabel)),
ccToolchainConfigInfo.getCompiler(),
ccToolchainConfigInfo.getAbiLibcVersion(),
ccToolchainConfigInfo.getTargetCpu(),
@@ -98,7 +96,6 @@
@AutoCodec.Instantiator
CppToolchainInfo(
String toolchainIdentifier,
- CcToolchainFeatures toolchainFeatures,
String compiler,
String abiGlibcVersion,
String targetCpu,
@@ -116,8 +113,6 @@
String legacyCcFlagsMakeVariable)
throws EvalException {
this.toolchainIdentifier = toolchainIdentifier;
- // Since this field can be derived from `crosstoolInfo`, it is re-derived instead of serialized.
- this.toolchainFeatures = toolchainFeatures;
this.compiler = compiler;
this.abiGlibcVersion = abiGlibcVersion;
this.targetCpu = targetCpu;
@@ -209,14 +204,6 @@
}
/**
- * Returns the configured features of the toolchain. Rules should not call this directly, but
- * instead use {@code CcToolchainProvider.getFeatures}.
- */
- public CcToolchainFeatures getFeatures() {
- return toolchainFeatures;
- }
-
- /**
* Returns the run time sysroot, which is where the dynamic linker and system libraries are found
* at runtime. This is usually an absolute path. If the toolchain compiler does not support
* sysroots, then this method returns <code>null</code>.
@@ -315,12 +302,4 @@
return legacyCcFlags;
}
-
- public PathFragment getToolsDirectory() {
- return getToolsDirectory(ccToolchainLabel);
- }
-
- static PathFragment getToolsDirectory(Label ccToolchainLabel) {
- return ccToolchainLabel.getPackageIdentifier().getPathUnderExecRoot();
- }
}