diff options
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.java | 59 |
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) { |