aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/rules/objc/BinaryLinkingTargetFactory.java
diff options
context:
space:
mode:
authorGravatar Cal Peyser <cpeyser@google.com>2016-11-04 13:53:25 +0000
committerGravatar Laszlo Csomor <laszlocsomor@google.com>2016-11-04 14:33:21 +0000
commitafe0e22ea6c7eceec0c2bcb50d7a5d934b0f69ae (patch)
tree56fb8b03e55bf42d4109ae3181e1ba4958dd766e /src/main/java/com/google/devtools/build/lib/rules/objc/BinaryLinkingTargetFactory.java
parent8e33903e0a7d34202743822ea5ab1e548dcdbcaf (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.java57
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();
}