diff options
author | 2016-11-04 13:53:25 +0000 | |
---|---|---|
committer | 2016-11-04 14:33:21 +0000 | |
commit | afe0e22ea6c7eceec0c2bcb50d7a5d934b0f69ae (patch) | |
tree | 56fb8b03e55bf42d4109ae3181e1ba4958dd766e /src/main/java/com/google/devtools/build/lib/rules/objc/BinaryLinkingTargetFactory.java | |
parent | 8e33903e0a7d34202743822ea5ab1e548dcdbcaf (diff) |
Refactor new compilation, archiving, and fully linking logic into a subclass of
CompilationSupport.
--
MOS_MIGRATED_REVID=138185198
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/rules/objc/BinaryLinkingTargetFactory.java')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/rules/objc/BinaryLinkingTargetFactory.java | 57 |
1 files changed, 24 insertions, 33 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/BinaryLinkingTargetFactory.java b/src/main/java/com/google/devtools/build/lib/rules/objc/BinaryLinkingTargetFactory.java index 2af307fd94..59eddc2d90 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/objc/BinaryLinkingTargetFactory.java +++ b/src/main/java/com/google/devtools/build/lib/rules/objc/BinaryLinkingTargetFactory.java @@ -27,7 +27,6 @@ import com.google.devtools.build.lib.analysis.RuleConfiguredTarget.Mode; import com.google.devtools.build.lib.analysis.RuleConfiguredTargetBuilder; import com.google.devtools.build.lib.analysis.RuleContext; import com.google.devtools.build.lib.analysis.RunfilesSupport; -import com.google.devtools.build.lib.analysis.TransitiveInfoProviderMap; import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder; import com.google.devtools.build.lib.rules.RuleConfiguredTargetFactory; import com.google.devtools.build.lib.rules.apple.AppleConfiguration; @@ -116,38 +115,33 @@ abstract class BinaryLinkingTargetFactory implements RuleConfiguredTargetFactory ruleContext.getPrerequisites("deps", Mode.TARGET, J2ObjcEntryClassProvider.class)) .build(); - CompilationSupport compilationSupport = - new CompilationSupport(ruleContext) - .addXcodeSettings(xcodeProviderBuilder, common) - .registerLinkActions( - objcProvider, - j2ObjcMappingFileProvider, - j2ObjcEntryClassProvider, - getExtraLinkArgs(ruleContext), - ImmutableList.<Artifact>of(), - DsymOutputType.APP) - .validateAttributes(); + CompilationSupport compilationSupport; + LegacyCompilationSupport legacyCompilationSupport = new LegacyCompilationSupport(ruleContext); - TransitiveInfoProviderMap compilationProviders; - if (usesCrosstool == UsesCrosstool.EXPERIMENTAL - && ruleContext.getFragment(ObjcConfiguration.class).useCrosstoolForBinary()) { - CrosstoolSupport crosstoolSupport = new CrosstoolSupport(ruleContext, objcProvider); - CompilationArtifacts compilationArtifacts = - CompilationSupport.compilationArtifacts(ruleContext); - if (compilationArtifacts.getArchive().isPresent()) { - compilationProviders = crosstoolSupport.registerCompileAndArchiveActions(common); - } else { - compilationProviders = crosstoolSupport.registerCompileActions(common); - } - crosstoolSupport.registerFullyLinkAction(common); + if (usesCrosstool != UsesCrosstool.EXPERIMENTAL + || !ruleContext.getFragment(ObjcConfiguration.class).useCrosstoolForBinary()) { + compilationSupport = legacyCompilationSupport; } else { - compilationProviders = null; - compilationSupport - .registerCompileAndArchiveActions(common) - .registerFullyLinkAction( - common.getObjcProvider(), - ruleContext.getImplicitOutputArtifact(CompilationSupport.FULLY_LINKED_LIB)); + compilationSupport = new CrosstoolCompilationSupport(ruleContext); } + + compilationSupport + .addXcodeSettings(xcodeProviderBuilder, common) + .registerCompileAndArchiveActions(common) + .registerFullyLinkAction( + common.getObjcProvider(), + ruleContext.getImplicitOutputArtifact(CompilationSupport.FULLY_LINKED_LIB)) + .validateAttributes(); + + // TODO(b/29582284): Factor into the above if/else once CrosstoolCompilationSupport supports + // executable linking. + legacyCompilationSupport.registerLinkActions( + objcProvider, + j2ObjcMappingFileProvider, + j2ObjcEntryClassProvider, + getExtraLinkArgs(ruleContext), + ImmutableList.<Artifact>of(), + DsymOutputType.APP); Optional<XcTestAppProvider> xcTestAppProvider; Optional<RunfilesSupport> maybeRunfilesSupport = Optional.absent(); @@ -217,9 +211,6 @@ abstract class BinaryLinkingTargetFactory implements RuleConfiguredTargetFactory RunfilesSupport runfilesSupport = maybeRunfilesSupport.get(); targetBuilder.setRunfilesSupport(runfilesSupport, runfilesSupport.getExecutable()); } - if (compilationProviders != null) { - targetBuilder.addProviders(compilationProviders); - } configureTarget(targetBuilder, ruleContext); return targetBuilder.build(); } |