aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Googler <noreply@google.com>2017-03-02 18:33:31 +0000
committerGravatar Yue Gan <yueg@google.com>2017-03-03 10:37:26 +0000
commit1b44df38b6e7979b58988e264a4c04b1b6146c85 (patch)
tree4fdbf3e54b4b907a28ea0103d6f1ba9754f2b512
parent44fcb229d794a44466a87729e5399dee4c34cf70 (diff)
Add dSYM binaries to AppleDebugOutputsProvider.
RELNOTES: Per-architecture dSYM binaries are now propagated by apple_binary's AppleDebugOutputsProvider. -- PiperOrigin-RevId: 149019153 MOS_MIGRATED_REVID=149019153
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/AppleBinary.java15
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/AppleDebugOutputsProvider.java13
2 files changed, 17 insertions, 11 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 ab07434c4d..d96d196951 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
@@ -174,15 +174,20 @@ public class AppleBinary implements RuleConfiguredTargetFactory {
for (BuildConfiguration childConfig : childConfigurations) {
AppleConfiguration childAppleConfig = childConfig.getFragment(AppleConfiguration.class);
+ ObjcConfiguration childObjcConfig = childConfig.getFragment(ObjcConfiguration.class);
+ IntermediateArtifacts intermediateArtifacts =
+ new IntermediateArtifacts(
+ ruleContext, /*archiveFileNameSuffix*/ "", /*outputPrefix*/ "", childConfig);
+ String arch = childAppleConfig.getSingleArchitecture();
+
if (childAppleConfig.getBitcodeMode() == AppleBitcodeMode.EMBEDDED) {
- String arch = childAppleConfig.getSingleArchitecture();
- IntermediateArtifacts intermediateArtifacts =
- new IntermediateArtifacts(
- ruleContext, /*archiveFileNameSuffix*/ "", /*outputPrefix*/ "", childConfig);
Artifact bitcodeSymbol = intermediateArtifacts.bitcodeSymbolMap();
-
builder.addOutput(arch, OutputType.BITCODE_SYMBOLS, bitcodeSymbol);
}
+ if (childObjcConfig.generateDsym()) {
+ Artifact dsymBinary = intermediateArtifacts.dsymSymbol(DsymOutputType.APP);
+ builder.addOutput(arch, OutputType.DSYM_BINARY, dsymBinary);
+ }
}
targetBuilder.addProvider(AppleDebugOutputsProvider.class, builder.build());
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/AppleDebugOutputsProvider.java b/src/main/java/com/google/devtools/build/lib/rules/objc/AppleDebugOutputsProvider.java
index b25c61630b..9484a50498 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/AppleDebugOutputsProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/AppleDebugOutputsProvider.java
@@ -33,10 +33,10 @@ import java.util.Map.Entry;
* Artifact, output_type: Artifact, ... } }
*
* <p>Where {@code arch} is any Apple architecture such as "arm64" or "armv7", {@code output_type}
- * is currently "bitcode_symbols", and the artifact is an instance of the {@link
- * Artifact} class.
+ * can currently be "bitcode_symbols" or "dsym_binary", and the artifact is an instance of the
+ * {@link Artifact} class.
*
- * <p>Example: { "arm64": { "bitcode_symbols": Artifact } }
+ * <p>Example: { "arm64": { "bitcode_symbols": Artifact, "dsym_binary": Artifact } }
*/
@Immutable
public final class AppleDebugOutputsProvider extends SkylarkClassObject
@@ -45,10 +45,11 @@ public final class AppleDebugOutputsProvider extends SkylarkClassObject
/** Expected types of debug outputs. */
enum OutputType {
- // TODO(b/33839914): Add DWARF binaries for dSYM outputs.
-
/** A Bitcode symbol map, per architecture. */
- BITCODE_SYMBOLS;
+ BITCODE_SYMBOLS,
+
+ /** A single-architecture DWARF binary with debug symbols. */
+ DSYM_BINARY;
@Override
public String toString() {