aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar cpeyser <cpeyser@google.com>2017-11-02 16:37:33 -0400
committerGravatar John Cater <jcater@google.com>2017-11-03 09:53:14 -0400
commit10fb950253d3e947b07dcd18a42777a47e5de695 (patch)
treebdbb034eca45b05f1805c2485bc9539d4c9f5e85
parent7bf7483d0853c753905bd6c582da7dcf878b183d (diff)
Automated rollback of commit 5d42ae10195cd1acb9612df3a3d520f09b0c3e39.
*** Reason for rollback *** Breaks alphago targets. *** Original change description *** Remove CppConfiguration#getFeatures in favor of CcToolchainProvider#getFeatures. PiperOrigin-RevId: 174373331
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainProvider.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileActionTemplate.java16
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CppConfiguration.java8
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CppModel.java15
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/AppleStaticLibrary.java7
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/CompilationSupport.java5
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/CrosstoolCompilationSupport.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/J2ObjcAspect.java1
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/MultiArchBinarySupport.java1
9 files changed, 30 insertions, 29 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 30ef49edb0..72c1749bd0 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
@@ -300,7 +300,7 @@ public final class CcToolchainProvider extends ToolchainInfo {
*/
@Nullable
public CcToolchainFeatures getFeatures() {
- return toolchainInfo.getFeatures();
+ return cppConfiguration == null ? null : cppConfiguration.getFeatures();
}
/**
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileActionTemplate.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileActionTemplate.java
index 3a28981443..8fad25b074 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileActionTemplate.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileActionTemplate.java
@@ -39,7 +39,7 @@ public final class CppCompileActionTemplate implements ActionTemplate<CppCompile
private final CppCompileActionBuilder cppCompileActionBuilder;
private final Artifact sourceTreeArtifact;
private final Artifact outputTreeArtifact;
- private final CcToolchainProvider toolchain;
+ private final CppConfiguration cppConfiguration;
private final Iterable<ArtifactCategory> categories;
private final ActionOwner actionOwner;
private final NestedSet<Artifact> mandatoryInputs;
@@ -49,25 +49,25 @@ public final class CppCompileActionTemplate implements ActionTemplate<CppCompile
* Creates an CppCompileActionTemplate.
* @param sourceTreeArtifact the TreeArtifact that contains source files to compile.
* @param outputTreeArtifact the TreeArtifact that contains compilation outputs.
- * @param cppCompileActionBuilder An almost completely configured {@link CppCompileActionBuilder}
+ * @param cppCompileActionBuilder An almost completely configured {@link CppCompileActionBuilder}
* without the input and output files set. It is used as a template to instantiate expanded
* {CppCompileAction}s.
- * @param toolchain the CcToolchainProvider representing the c++ toolchain for this action
- * @param categories A list of {@link ArtifactCategory} used to calculate output file name from a
- * source file name.
+ * @param cppConfiguration configuration for cpp.
+ * @param categories A list of {@link ArtifactCategory} used to calculate output file name from
+ * a source file name.
* @param actionOwner the owner of this {@link ActionTemplate}.
*/
CppCompileActionTemplate(
Artifact sourceTreeArtifact,
Artifact outputTreeArtifact,
CppCompileActionBuilder cppCompileActionBuilder,
- CcToolchainProvider toolchain,
+ CppConfiguration cppConfiguration,
Iterable<ArtifactCategory> categories,
ActionOwner actionOwner) {
this.cppCompileActionBuilder = cppCompileActionBuilder;
this.sourceTreeArtifact = sourceTreeArtifact;
this.outputTreeArtifact = outputTreeArtifact;
- this.toolchain = toolchain;
+ this.cppConfiguration = cppConfiguration;
this.categories = categories;
this.actionOwner = actionOwner;
this.mandatoryInputs = cppCompileActionBuilder.buildMandatoryInputs();
@@ -124,7 +124,7 @@ public final class CppCompileActionTemplate implements ActionTemplate<CppCompile
String outputName = FileSystemUtils.removeExtension(
inputTreeFileArtifact.getParentRelativePath().getPathString());
for (ArtifactCategory category : categories) {
- outputName = toolchain.getFeatures().getArtifactNameForCategory(category, outputName);
+ outputName = cppConfiguration.getFeatures().getArtifactNameForCategory(category, outputName);
}
return outputName;
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppConfiguration.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppConfiguration.java
index b48b0e6a61..187d0fc552 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppConfiguration.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppConfiguration.java
@@ -612,6 +612,14 @@ public class CppConfiguration extends BuildConfiguration.Fragment {
}
/**
+ * Returns the configured features of the toolchain. Rules should not call this directly, but
+ * instead use {@code CcToolchainProvider.getFeatures}.
+ */
+ public CcToolchainFeatures getFeatures() {
+ return cppToolchainInfo.getFeatures();
+ }
+
+ /**
* Returns the configured current compilation mode. Rules should not call this directly, but
* instead use {@code CcToolchainProvider.getCompilationMode}.
*/
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppModel.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppModel.java
index c4bf33f17a..3a1c3d8e8e 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppModel.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppModel.java
@@ -1165,14 +1165,13 @@ public final class CppModel {
coptsFilter,
features);
// Make sure this builder doesn't reference ruleContext outside of analysis phase.
- CppCompileActionTemplate actionTemplate =
- new CppCompileActionTemplate(
- sourceArtifact,
- outputFiles,
- builder,
- ccToolchain,
- outputCategories,
- ruleContext.getActionOwner());
+ CppCompileActionTemplate actionTemplate = new CppCompileActionTemplate(
+ sourceArtifact,
+ outputFiles,
+ builder,
+ cppConfiguration,
+ outputCategories,
+ ruleContext.getActionOwner());
env.registerAction(actionTemplate);
return outputFiles;
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/AppleStaticLibrary.java b/src/main/java/com/google/devtools/build/lib/rules/objc/AppleStaticLibrary.java
index 8b8a27ea8e..f90aa1883e 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/AppleStaticLibrary.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/AppleStaticLibrary.java
@@ -40,7 +40,6 @@ import com.google.devtools.build.lib.rules.objc.ObjcProvider.Key;
import com.google.devtools.build.lib.rules.proto.ProtoSourcesProvider;
import java.util.List;
import java.util.Map;
-import java.util.Map.Entry;
import java.util.TreeMap;
/**
@@ -106,10 +105,7 @@ public class AppleStaticLibrary implements RuleConfiguredTargetFactory {
ruleContext.getPrerequisitesByConfiguration("deps", Mode.SPLIT, ObjcProtoProvider.class);
Map<String, NestedSet<Artifact>> outputGroupCollector = new TreeMap<>();
- for (Entry<BuildConfiguration, CcToolchainProvider> childConfigAndToolchain :
- childConfigurationsAndToolchains.entrySet()) {
- BuildConfiguration childConfig = childConfigAndToolchain.getKey();
- CcToolchainProvider childToolchain = childConfigAndToolchain.getValue();
+ for (BuildConfiguration childConfig : childConfigurationsAndToolchains.keySet()) {
Iterable<ObjcProtoProvider> objcProtoProviders = objcProtoProvidersMap.get(childConfig);
ProtobufSupport protoSupport =
new ProtobufSupport(
@@ -145,7 +141,6 @@ public class AppleStaticLibrary implements RuleConfiguredTargetFactory {
new CompilationSupport.Builder()
.setRuleContext(ruleContext)
.setConfig(childConfig)
- .setToolchainProvider(childToolchain)
.setOutputGroupCollector(outputGroupCollector)
.build();
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/CompilationSupport.java b/src/main/java/com/google/devtools/build/lib/rules/objc/CompilationSupport.java
index f098da5744..7a9282e7ce 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/CompilationSupport.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/CompilationSupport.java
@@ -342,9 +342,8 @@ public abstract class CompilationSupport {
this.usePch = usePch;
// TODO(b/62143697): Remove this check once all rules are using the crosstool support.
if (ruleContext
- .attributes()
- .has(CcToolchain.CC_TOOLCHAIN_DEFAULT_ATTRIBUTE_NAME, BuildType.LABEL)
- || ruleContext.attributes().has(":j2objc_cc_toolchain", BuildType.LABEL)) {
+ .attributes()
+ .has(CcToolchain.CC_TOOLCHAIN_DEFAULT_ATTRIBUTE_NAME, BuildType.LABEL)) {
if (toolchain == null) {
toolchain = CppHelper.getToolchainUsingDefaultCcToolchainAttribute(ruleContext);
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/CrosstoolCompilationSupport.java b/src/main/java/com/google/devtools/build/lib/rules/objc/CrosstoolCompilationSupport.java
index c1c72602dd..958e025f68 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/CrosstoolCompilationSupport.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/CrosstoolCompilationSupport.java
@@ -50,6 +50,7 @@ import com.google.devtools.build.lib.rules.cpp.CcToolchainFeatures.FeatureConfig
import com.google.devtools.build.lib.rules.cpp.CcToolchainFeatures.Variables.VariablesExtension;
import com.google.devtools.build.lib.rules.cpp.CcToolchainProvider;
import com.google.devtools.build.lib.rules.cpp.CppCompileAction;
+import com.google.devtools.build.lib.rules.cpp.CppConfiguration;
import com.google.devtools.build.lib.rules.cpp.CppHelper;
import com.google.devtools.build.lib.rules.cpp.CppLinkAction;
import com.google.devtools.build.lib.rules.cpp.CppLinkActionBuilder;
@@ -550,7 +551,8 @@ public class CrosstoolCompilationSupport extends CompilationSupport {
activatedCrosstoolSelectables.addAll(ruleContext.getFeatures());
try {
- return toolchain
+ return configuration
+ .getFragment(CppConfiguration.class)
.getFeatures()
.getFeatureConfiguration(
FeatureSpecification.create(
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/J2ObjcAspect.java b/src/main/java/com/google/devtools/build/lib/rules/objc/J2ObjcAspect.java
index 5b508c2366..998e8ded0c 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/J2ObjcAspect.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/J2ObjcAspect.java
@@ -262,7 +262,6 @@ public class J2ObjcAspect extends NativeAspectClass implements ConfiguredAspectF
CompilationSupport compilationSupport =
new CompilationSupport.Builder()
.setRuleContext(ruleContext)
- .setToolchainProvider(ccToolchain)
.setIntermediateArtifacts(ObjcRuleClasses.j2objcIntermediateArtifacts(ruleContext))
.doNotUsePch()
.build();
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/MultiArchBinarySupport.java b/src/main/java/com/google/devtools/build/lib/rules/objc/MultiArchBinarySupport.java
index f71d4ff67c..523d23363b 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/MultiArchBinarySupport.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/MultiArchBinarySupport.java
@@ -176,7 +176,6 @@ public class MultiArchBinarySupport {
new CompilationSupport.Builder()
.setRuleContext(ruleContext)
.setConfig(dependencySpecificConfiguration.config())
- .setToolchainProvider(dependencySpecificConfiguration.toolchain())
.setOutputGroupCollector(outputMapCollector)
.build();