diff options
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/rules/objc/ReleaseBundlingSupport.java')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/rules/objc/ReleaseBundlingSupport.java | 47 |
1 files changed, 37 insertions, 10 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ReleaseBundlingSupport.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ReleaseBundlingSupport.java index d52dad9ed1..39e6d2ce13 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/objc/ReleaseBundlingSupport.java +++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ReleaseBundlingSupport.java @@ -22,6 +22,9 @@ import static com.google.devtools.build.lib.rules.objc.ObjcRuleClasses.ReleaseBu import static com.google.devtools.build.lib.rules.objc.ObjcRuleClasses.ReleaseBundlingRule.EXTRA_ENTITLEMENTS_ATTR; import static com.google.devtools.build.lib.rules.objc.TargetDeviceFamily.UI_DEVICE_FAMILY_VALUES; +import com.dd.plist.NSArray; +import com.dd.plist.NSDictionary; +import com.dd.plist.NSObject; import com.google.common.annotations.VisibleForTesting; import com.google.common.base.Joiner; import com.google.common.collect.ImmutableList; @@ -63,14 +66,8 @@ import com.google.devtools.build.lib.rules.objc.BundleSupport.ExtraActoolArgs; import com.google.devtools.build.lib.rules.objc.Bundling.Builder; import com.google.devtools.build.lib.shell.ShellUtils; import com.google.devtools.build.xcode.xcodegen.proto.XcodeGenProtos.XcodeprojBuildSetting; - -import com.dd.plist.NSArray; -import com.dd.plist.NSDictionary; -import com.dd.plist.NSObject; - import java.util.List; import java.util.Map.Entry; - import javax.annotation.Nullable; /** @@ -299,6 +296,7 @@ public final class ReleaseBundlingSupport { registerCopyDsymPlistAction(dsymOutputType); registerCopyLinkmapFilesAction(); registerSwiftStdlibActionsIfNecessary(); + registerSwiftSupportActionsIfNecessary(); registerEmbedLabelPlistAction(); registerEnvironmentPlistAction(); @@ -1051,10 +1049,13 @@ public final class ReleaseBundlingSupport { AppleConfiguration appleConfiguration = ruleContext.getFragment(AppleConfiguration.class); - CustomCommandLine.Builder commandLine = CustomCommandLine.builder() - .addPath(intermediateArtifacts.swiftFrameworksFileZip().getExecPath()) - .add("--platform").add(AppleToolchain.swiftPlatform(appleConfiguration)) - .addExecPath("--scan-executable", intermediateArtifacts.combinedArchitectureBinary()); + CustomCommandLine.Builder commandLine = + CustomCommandLine.builder() + .addPath(intermediateArtifacts.swiftFrameworksFileZip().getExecPath()) + .add("Frameworks") + .add("--platform") + .add(AppleToolchain.swiftPlatform(appleConfiguration)) + .addExecPath("--scan-executable", intermediateArtifacts.combinedArchitectureBinary()); ruleContext.registerAction( ObjcRuleClasses.spawnAppleEnvActionBuilder(ruleContext) @@ -1066,6 +1067,32 @@ public final class ReleaseBundlingSupport { .build(ruleContext)); } + /** Registers an action to copy Swift standard library dylibs into SwiftSupport root directory. */ + private void registerSwiftSupportActionsIfNecessary() { + if (!objcProvider.is(USES_SWIFT)) { + return; + } + + AppleConfiguration appleConfiguration = ruleContext.getFragment(AppleConfiguration.class); + + CustomCommandLine.Builder commandLine = + CustomCommandLine.builder() + .addPath(intermediateArtifacts.swiftSupportZip().getExecPath()) + .add("SwiftSupport/" + AppleToolchain.swiftPlatform(appleConfiguration)) + .add("--platform") + .add(AppleToolchain.swiftPlatform(appleConfiguration)) + .addExecPath("--scan-executable", intermediateArtifacts.combinedArchitectureBinary()); + + ruleContext.registerAction( + ObjcRuleClasses.spawnAppleEnvActionBuilder(ruleContext) + .setMnemonic("SwiftCopySwiftSupport") + .setExecutable(attributes.swiftStdlibToolWrapper()) + .setCommandLine(commandLine.build()) + .addOutput(intermediateArtifacts.swiftSupportZip()) + .addInput(intermediateArtifacts.combinedArchitectureBinary()) + .build(ruleContext)); + } + private String extractPlistCommand(Artifact provisioningProfile) { return "security cms -D -i " + ShellUtils.shellEscape(provisioningProfile.getExecPathString()); } |