aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/rules/objc/CrosstoolCompilationSupport.java
diff options
context:
space:
mode:
authorGravatar Cal Peyser <cpeyser@google.com>2017-03-28 13:57:22 +0000
committerGravatar Philipp Wollermann <philwo@google.com>2017-03-28 19:51:26 +0000
commitcaea6bd17766483503537cf17adf42860aaaf089 (patch)
tree83c20a1ef56ed2e874023042599cdedadb529a01 /src/main/java/com/google/devtools/build/lib/rules/objc/CrosstoolCompilationSupport.java
parentc2cc768cb1d891f2f2f942feb007d5508e04f585 (diff)
Apple binary configures actions not just with it's child's config and provider,
but also its toolchain. -- PiperOrigin-RevId: 151444602 MOS_MIGRATED_REVID=151444602
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/rules/objc/CrosstoolCompilationSupport.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/CrosstoolCompilationSupport.java66
1 files changed, 35 insertions, 31 deletions
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 6f561a4731..50afcd3c14 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
@@ -140,12 +140,13 @@ public class CrosstoolCompilationSupport extends CompilationSupport {
@Nullable FdoSupportProvider fdoSupport) throws RuleErrorException, InterruptedException {
Preconditions.checkNotNull(ccToolchain);
Preconditions.checkNotNull(fdoSupport);
- ObjcVariablesExtension.Builder extension = new ObjcVariablesExtension.Builder()
- .setRuleContext(ruleContext)
- .setObjcProvider(objcProvider)
- .setCompilationArtifacts(compilationArtifacts)
- .setIntermediateArtifacts(intermediateArtifacts)
- .setConfiguration(ruleContext.getConfiguration());
+ ObjcVariablesExtension.Builder extension =
+ new ObjcVariablesExtension.Builder()
+ .setRuleContext(ruleContext)
+ .setObjcProvider(objcProvider)
+ .setCompilationArtifacts(compilationArtifacts)
+ .setIntermediateArtifacts(intermediateArtifacts)
+ .setConfiguration(buildConfiguration);
CcLibraryHelper helper;
if (compilationArtifacts.getArchive().isPresent()) {
@@ -185,14 +186,15 @@ public class CrosstoolCompilationSupport extends CompilationSupport {
.getPackageDirectory()
.getRelative(labelName.replaceName("lib" + labelName.getBaseName()))
.getPathString();
- ObjcVariablesExtension extension = new ObjcVariablesExtension.Builder()
- .setRuleContext(ruleContext)
- .setObjcProvider(objcProvider)
- .setConfiguration(ruleContext.getConfiguration())
- .setIntermediateArtifacts(intermediateArtifacts)
- .setFullyLinkArchive(outputArchive)
- .addVariableCategory(VariableCategory.FULLY_LINK_VARIABLES)
- .build();
+ ObjcVariablesExtension extension =
+ new ObjcVariablesExtension.Builder()
+ .setRuleContext(ruleContext)
+ .setObjcProvider(objcProvider)
+ .setConfiguration(buildConfiguration)
+ .setIntermediateArtifacts(intermediateArtifacts)
+ .setFullyLinkArchive(outputArchive)
+ .addVariableCategory(VariableCategory.FULLY_LINK_VARIABLES)
+ .build();
CppLinkAction fullyLinkAction =
new CppLinkActionBuilder(ruleContext, outputArchive, ccToolchain, fdoSupport)
.addActionInputs(objcProvider.getObjcLibraries())
@@ -223,7 +225,9 @@ public class CrosstoolCompilationSupport extends CompilationSupport {
J2ObjcEntryClassProvider j2ObjcEntryClassProvider,
ExtraLinkArgs extraLinkArgs,
Iterable<Artifact> extraLinkInputs,
- DsymOutputType dsymOutputType) throws InterruptedException {
+ DsymOutputType dsymOutputType,
+ CcToolchainProvider toolchain)
+ throws InterruptedException {
Iterable<Artifact> prunedJ2ObjcArchives =
computeAndStripPrunedJ2ObjcArchives(
j2ObjcEntryClassProvider, j2ObjcMappingFileProvider, objcProvider);
@@ -248,30 +252,30 @@ public class CrosstoolCompilationSupport extends CompilationSupport {
? LinkTargetType.OBJCPP_EXECUTABLE
: LinkTargetType.OBJC_EXECUTABLE;
- ObjcVariablesExtension extension = new ObjcVariablesExtension.Builder()
- .setRuleContext(ruleContext)
- .setObjcProvider(objcProvider)
- .setConfiguration(ruleContext.getConfiguration())
- .setIntermediateArtifacts(intermediateArtifacts)
- .setFrameworkNames(frameworkNames(objcProvider))
- .setLibraryNames(libraryNames(objcProvider))
- .setForceLoadArtifacts(getForceLoadArtifacts(objcProvider))
- .setAttributeLinkopts(attributes.linkopts())
- .addVariableCategory(VariableCategory.EXECUTABLE_LINKING_VARIABLES)
- .build();
+ ObjcVariablesExtension extension =
+ new ObjcVariablesExtension.Builder()
+ .setRuleContext(ruleContext)
+ .setObjcProvider(objcProvider)
+ .setConfiguration(buildConfiguration)
+ .setIntermediateArtifacts(intermediateArtifacts)
+ .setFrameworkNames(frameworkNames(objcProvider))
+ .setLibraryNames(libraryNames(objcProvider))
+ .setForceLoadArtifacts(getForceLoadArtifacts(objcProvider))
+ .setAttributeLinkopts(attributes.linkopts())
+ .addVariableCategory(VariableCategory.EXECUTABLE_LINKING_VARIABLES)
+ .build();
Artifact binaryToLink = getBinaryToLink();
- CcToolchainProvider ccToolchain = CppHelper.getToolchain(ruleContext, ":cc_toolchain");
FdoSupportProvider fdoSupport = CppHelper.getFdoSupport(ruleContext, ":cc_toolchain");
CppLinkAction executableLinkAction =
- new CppLinkActionBuilder(ruleContext, binaryToLink, ccToolchain, fdoSupport)
+ new CppLinkActionBuilder(ruleContext, binaryToLink, toolchain, fdoSupport)
.setMnemonic("ObjcLink")
.addActionInputs(bazelBuiltLibraries)
.addActionInputs(objcProvider.getCcLibraries())
.addTransitiveActionInputs(objcProvider.get(IMPORTED_LIBRARY))
.addTransitiveActionInputs(objcProvider.get(STATIC_FRAMEWORK_FILE))
.addTransitiveActionInputs(objcProvider.get(DYNAMIC_FRAMEWORK_FILE))
- .setCrosstoolInputs(ccToolchain.getLink())
+ .setCrosstoolInputs(toolchain.getLink())
.addActionInputs(prunedJ2ObjcArchives)
.addActionInput(inputFileList)
.setLinkType(linkType)
@@ -388,13 +392,13 @@ public class CrosstoolCompilationSupport extends CompilationSupport {
.add(CppRuleClasses.INCLUDE_PATHS)
.add(configuration.getCompilationMode().toString());
- if (ruleContext.getConfiguration().getFragment(ObjcConfiguration.class).moduleMapsEnabled()) {
+ if (configuration.getFragment(ObjcConfiguration.class).moduleMapsEnabled()) {
activatedCrosstoolSelectables.add(OBJC_MODULE_FEATURE_NAME);
}
if (!CompilationAttributes.Builder.fromRuleContext(ruleContext).build().enableModules()) {
activatedCrosstoolSelectables.add(NO_ENABLE_MODULES_FEATURE_NAME);
}
- if (ruleContext.getConfiguration().getFragment(ObjcConfiguration.class).shouldStripBinary()) {
+ if (configuration.getFragment(ObjcConfiguration.class).shouldStripBinary()) {
activatedCrosstoolSelectables.add(DEAD_STRIP_FEATURE_NAME);
}
if (ruleContext.attributes().has("pch", BuildType.LABEL)