diff options
author | Cal Peyser <cpeyser@google.com> | 2017-03-28 13:57:22 +0000 |
---|---|---|
committer | Philipp Wollermann <philwo@google.com> | 2017-03-28 19:51:26 +0000 |
commit | caea6bd17766483503537cf17adf42860aaaf089 (patch) | |
tree | 83c20a1ef56ed2e874023042599cdedadb529a01 /src/main/java/com/google/devtools/build/lib/rules/objc/CrosstoolCompilationSupport.java | |
parent | c2cc768cb1d891f2f2f942feb007d5508e04f585 (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.java | 66 |
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) |