aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/rules/objc/AppleBinary.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/rules/objc/AppleBinary.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/AppleBinary.java59
1 files changed, 30 insertions, 29 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/AppleBinary.java b/src/main/java/com/google/devtools/build/lib/rules/objc/AppleBinary.java
index bc26cf74ed..ec64b37603 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/AppleBinary.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/AppleBinary.java
@@ -15,6 +15,7 @@
package com.google.devtools.build.lib.rules.objc;
import com.google.common.annotations.VisibleForTesting;
+import com.google.common.base.Optional;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableListMultimap;
import com.google.devtools.build.lib.actions.Artifact;
@@ -37,10 +38,8 @@ import com.google.devtools.build.lib.rules.apple.AppleConfiguration.Configuratio
import com.google.devtools.build.lib.rules.apple.Platform.PlatformType;
import com.google.devtools.build.lib.rules.cpp.CcToolchainProvider;
import com.google.devtools.build.lib.rules.objc.CompilationSupport.ExtraLinkArgs;
-import com.google.devtools.build.lib.rules.objc.ObjcCommon.CompilationAttributes;
import com.google.devtools.build.lib.rules.objc.ObjcCommon.ResourceAttributes;
import com.google.devtools.build.lib.rules.objc.ProtoSupport.TargetType;
-import com.google.devtools.build.lib.vfs.PathFragment;
import java.util.List;
import java.util.Set;
@@ -113,18 +112,21 @@ public class AppleBinary implements RuleConfiguredTargetFactory {
archivesToLipo.add(common.getCompilationArtifacts().get().getArchive().get());
binariesToLipo.add(intermediateArtifacts.strippedSingleArchitectureBinary());
- ProtoSupport protoSupport = new ProtoSupport(ruleContext, TargetType.LINKING_TARGET);
- Iterable<PathFragment> priorityHeaders;
ObjcConfiguration objcConfiguration = childConfig.getFragment(ObjcConfiguration.class);
if (objcConfiguration.experimentalAutoTopLevelUnionObjCProtos()) {
- protoSupport.registerActions();
- priorityHeaders = protoSupport.getUserHeaderSearchPaths();
- } else {
- priorityHeaders = ImmutableList.of();
+ ProtoSupport protoSupport =
+ new ProtoSupport(ruleContext, TargetType.LINKING_TARGET).registerActions();
+
+ ObjcCommon protoCommon = protoSupport.getCommon();
+ new CompilationSupport(
+ ruleContext,
+ protoSupport.getIntermediateArtifacts(),
+ new CompilationAttributes.Builder().build())
+ .registerCompileAndArchiveActions(protoCommon, protoSupport.getUserHeaderSearchPaths());
}
new CompilationSupport(ruleContext, childConfig)
- .registerCompileAndArchiveActions(common, priorityHeaders)
+ .registerCompileAndArchiveActions(common)
.registerLinkActions(
common.getObjcProvider(),
j2ObjcMappingFileProvider,
@@ -162,32 +164,31 @@ public class AppleBinary implements RuleConfiguredTargetFactory {
CompilationArtifacts compilationArtifacts =
CompilationSupport.compilationArtifacts(ruleContext, intermediateArtifacts);
+ Optional<Artifact> protoLib;
ObjcConfiguration objcConfiguration = buildConfiguration.getFragment(ObjcConfiguration.class);
if (objcConfiguration.experimentalAutoTopLevelUnionObjCProtos()) {
ProtoSupport protoSupport = new ProtoSupport(ruleContext, TargetType.LINKING_TARGET);
- compilationArtifacts =
- new CompilationArtifacts.Builder()
- .setPchFile(compilationArtifacts.getPchFile())
- .setIntermediateArtifacts(ObjcRuleClasses.intermediateArtifacts(ruleContext))
- .addAllSources(compilationArtifacts)
- .addAllSources(protoSupport.getCompilationArtifacts())
- .build();
+ protoLib = protoSupport.getCommon().getCompiledArchive();
+ } else {
+ protoLib = Optional.absent();
}
return new ObjcCommon.Builder(ruleContext, buildConfiguration)
- .setCompilationAttributes(new CompilationAttributes(ruleContext))
- .setCompilationArtifacts(compilationArtifacts)
- .setResourceAttributes(new ResourceAttributes(ruleContext))
- .addDefines(ruleContext.getTokenizedStringListAttr("defines"))
- .addDeps(propagatedDeps)
- .addDepObjcProviders(
- ruleContext.getPrerequisites("bundles", Mode.TARGET, ObjcProvider.class))
- .addNonPropagatedDepObjcProviders(nonPropagatedObjcDeps)
- .setIntermediateArtifacts(intermediateArtifacts)
- .setAlwayslink(false)
- .setHasModuleMap()
- .setLinkedBinary(intermediateArtifacts.strippedSingleArchitectureBinary())
- .build();
+ .setCompilationAttributes(
+ CompilationAttributes.Builder.fromRuleContext(ruleContext).build())
+ .setCompilationArtifacts(compilationArtifacts)
+ .setResourceAttributes(new ResourceAttributes(ruleContext))
+ .addDefines(ruleContext.getTokenizedStringListAttr("defines"))
+ .addDeps(propagatedDeps)
+ .addDepObjcProviders(
+ ruleContext.getPrerequisites("bundles", Mode.TARGET, ObjcProvider.class))
+ .addNonPropagatedDepObjcProviders(nonPropagatedObjcDeps)
+ .setIntermediateArtifacts(intermediateArtifacts)
+ .setAlwayslink(false)
+ .setHasModuleMap()
+ .setLinkedBinary(intermediateArtifacts.strippedSingleArchitectureBinary())
+ .addExtraImportLibraries(protoLib.asSet())
+ .build();
}
private <T> List<T> nullToEmptyList(List<T> inputList) {