diff options
author | 2017-11-03 19:51:04 +0100 | |
---|---|---|
committer | 2017-11-06 20:20:12 +0100 | |
commit | 3b0405d6048b52da10500dfdfbdbed670452e132 (patch) | |
tree | 01308998350916cab9801ad94119239170edfdf6 /src/main/java/com | |
parent | 4cf32b085cdfb13a21f8d07245c0cf445bce2b51 (diff) |
Remove CppConfiguration#getFeatures in favor of
CcToolchainProvider#getFeatures.
PiperOrigin-RevId: 174492427
Diffstat (limited to 'src/main/java/com')
7 files changed, 29 insertions, 22 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 72c1749bd0..30ef49edb0 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 cppConfiguration == null ? null : cppConfiguration.getFeatures(); + return toolchainInfo.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 8fad25b074..3a28981443 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 CppConfiguration cppConfiguration; + private final CcToolchainProvider toolchain; 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 cppConfiguration configuration for cpp. - * @param categories A list of {@link ArtifactCategory} used to calculate output file name from - * a source file name. + * @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 actionOwner the owner of this {@link ActionTemplate}. */ CppCompileActionTemplate( Artifact sourceTreeArtifact, Artifact outputTreeArtifact, CppCompileActionBuilder cppCompileActionBuilder, - CppConfiguration cppConfiguration, + CcToolchainProvider toolchain, Iterable<ArtifactCategory> categories, ActionOwner actionOwner) { this.cppCompileActionBuilder = cppCompileActionBuilder; this.sourceTreeArtifact = sourceTreeArtifact; this.outputTreeArtifact = outputTreeArtifact; - this.cppConfiguration = cppConfiguration; + this.toolchain = toolchain; 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 = cppConfiguration.getFeatures().getArtifactNameForCategory(category, outputName); + outputName = toolchain.getFeatures().getArtifactNameForCategory(category, outputName); } return outputName; } 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 3a1c3d8e8e..c4bf33f17a 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,13 +1165,14 @@ 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, - cppConfiguration, - outputCategories, - ruleContext.getActionOwner()); + CppCompileActionTemplate actionTemplate = + new CppCompileActionTemplate( + sourceArtifact, + outputFiles, + builder, + ccToolchain, + 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 f90aa1883e..8b8a27ea8e 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,6 +40,7 @@ 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; /** @@ -105,7 +106,10 @@ public class AppleStaticLibrary implements RuleConfiguredTargetFactory { ruleContext.getPrerequisitesByConfiguration("deps", Mode.SPLIT, ObjcProtoProvider.class); Map<String, NestedSet<Artifact>> outputGroupCollector = new TreeMap<>(); - for (BuildConfiguration childConfig : childConfigurationsAndToolchains.keySet()) { + for (Entry<BuildConfiguration, CcToolchainProvider> childConfigAndToolchain : + childConfigurationsAndToolchains.entrySet()) { + BuildConfiguration childConfig = childConfigAndToolchain.getKey(); + CcToolchainProvider childToolchain = childConfigAndToolchain.getValue(); Iterable<ObjcProtoProvider> objcProtoProviders = objcProtoProvidersMap.get(childConfig); ProtobufSupport protoSupport = new ProtobufSupport( @@ -141,6 +145,7 @@ 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 7a843735b5..65b5e1d63f 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 @@ -96,7 +96,6 @@ 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.CppFileTypes; import com.google.devtools.build.lib.rules.cpp.CppHelper; import com.google.devtools.build.lib.rules.cpp.CppLinkAction; @@ -443,8 +442,7 @@ public class CompilationSupport { activatedCrosstoolSelectables.addAll(ruleContext.getFeatures()); try { - return configuration - .getFragment(CppConfiguration.class) + return toolchain .getFeatures() .getFeatureConfiguration( FeatureSpecification.create( @@ -640,8 +638,9 @@ public 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)) { + .attributes() + .has(CcToolchain.CC_TOOLCHAIN_DEFAULT_ATTRIBUTE_NAME, BuildType.LABEL) + || ruleContext.attributes().has(":j2objc_cc_toolchain", BuildType.LABEL)) { if (toolchain == null) { toolchain = CppHelper.getToolchainUsingDefaultCcToolchainAttribute(ruleContext); } 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 998e8ded0c..5b508c2366 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,6 +262,7 @@ 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 523d23363b..f71d4ff67c 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,6 +176,7 @@ public class MultiArchBinarySupport { new CompilationSupport.Builder() .setRuleContext(ruleContext) .setConfig(dependencySpecificConfiguration.config()) + .setToolchainProvider(dependencySpecificConfiguration.toolchain()) .setOutputGroupCollector(outputMapCollector) .build(); |