aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google
diff options
context:
space:
mode:
authorGravatar Dmitry Shevchenko <dmishe@google.com>2016-05-02 20:37:12 +0000
committerGravatar Damien Martin-Guillerez <dmarting@google.com>2016-05-03 08:37:50 +0000
commit81a1605ac079e0570ba5747346360dafbb3907ea (patch)
tree49e5af5a81ca579b8c799493a00e03274e1ea1d5 /src/main/java/com/google
parent90ec7cf18820c3ead4ce9523da3116a3f3505b3b (diff)
Adds a new flag for generation of dSYMs for all apple rules.
* This flag forces -g and enables dSYM bundle actions. * All instances of breakpad generation are now gated by the old --objc_generate_debug_symbols option. -- MOS_MIGRATED_REVID=121304681
Diffstat (limited to 'src/main/java/com/google')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/BinaryLinkingTargetFactory.java3
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/CompilationSupport.java17
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCommandLineOptions.java19
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCommon.java5
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/ObjcConfiguration.java12
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/ReleaseBundlingSupport.java15
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/XcodeSupport.java3
7 files changed, 58 insertions, 16 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 9b8add01e9..442a847494 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
@@ -224,7 +224,8 @@ abstract class BinaryLinkingTargetFactory implements RuleConfiguredTargetFactory
builder.addDepObjcProviders(createSkylarkObjcProviders(ruleContext));
- if (ObjcRuleClasses.objcConfiguration(ruleContext).generateDebugSymbols()) {
+ if (ObjcRuleClasses.objcConfiguration(ruleContext).generateDebugSymbols()
+ || ObjcRuleClasses.objcConfiguration(ruleContext).generateDsym()) {
builder.addDebugArtifacts(DsymOutputType.APP);
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/CompilationSupport.java b/src/main/java/com/google/devtools/build/lib/rules/objc/CompilationSupport.java
index 1b84341fec..e2d0a0bd10 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/CompilationSupport.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/CompilationSupport.java
@@ -545,7 +545,7 @@ public final class CompilationSupport {
.add("-enable-objc-interop")
.add(objcConfiguration.getSwiftCoptsForCompilationMode());
- if (objcConfiguration.generateDebugSymbols()) {
+ if (objcConfiguration.generateDebugSymbols() || objcConfiguration.generateDsym()) {
commandLine.add("-g");
}
@@ -627,7 +627,7 @@ public final class CompilationSupport {
.add("-target").add(swiftTarget(appleConfiguration))
.add(objcConfiguration.getSwiftCoptsForCompilationMode());
- if (objcConfiguration.generateDebugSymbols()) {
+ if (objcConfiguration.generateDebugSymbols() || objcConfiguration.generateDsym()) {
commandLine.add("-g");
}
@@ -797,9 +797,13 @@ public final class CompilationSupport {
DsymOutputType dsymOutputType) {
Optional<Artifact> dsymBundleZip;
Optional<Artifact> linkmap;
- if (objcConfiguration.generateDebugSymbols()) {
+ if (objcConfiguration.generateDebugSymbols() || objcConfiguration.generateDsym()) {
registerDsymActions(dsymOutputType);
dsymBundleZip = Optional.of(intermediateArtifacts.tempDsymBundleZip(dsymOutputType));
+
+ if (objcConfiguration.generateDebugSymbols()) {
+ registerBreakpadAction(intermediateArtifacts.dsymSymbol(dsymOutputType));
+ }
} else {
dsymBundleZip = Optional.absent();
}
@@ -1346,6 +1350,10 @@ public final class CompilationSupport {
.addOutput(debugSymbolFile)
.build(ruleContext));
+ return this;
+ }
+
+ private void registerBreakpadAction(Artifact debugSymbolFile) {
Artifact dumpsyms = ruleContext.getPrerequisiteArtifact("$dumpsyms", Mode.HOST);
Artifact breakpadFile = intermediateArtifacts.breakpadSym();
ruleContext.registerAction(ObjcRuleClasses.spawnOnDarwinActionBuilder()
@@ -1360,7 +1368,6 @@ public final class CompilationSupport {
ShellUtils.shellEscape(breakpadFile.getExecPathString())))
.addOutput(breakpadFile)
.build(ruleContext));
- return this;
}
private PathFragment removeSuffix(PathFragment path, String suffix) {
@@ -1433,7 +1440,7 @@ public final class CompilationSupport {
builder.add("-miphoneos-version-min=" + objcConfiguration.getMinimumOs());
}
- if (objcConfiguration.generateDebugSymbols()) {
+ if (objcConfiguration.generateDebugSymbols() || objcConfiguration.generateDsym()) {
builder.add("-g");
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCommandLineOptions.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCommandLineOptions.java
index 397ae0341e..007ba4d547 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCommandLineOptions.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCommandLineOptions.java
@@ -54,10 +54,13 @@ public class ObjcCommandLineOptions extends FragmentOptions {
+ "on the machine the simulator will be run on.")
public String iosSimulatorDevice;
- @Option(name = "objc_generate_debug_symbols",
- defaultValue = "false",
- category = "flags",
- help = "Specifies whether to generate debug symbol(.dSYM) file.")
+ // TODO(b/28110492): Deprecate this.
+ @Option(
+ name = "objc_generate_debug_symbols",
+ defaultValue = "false",
+ category = "flags",
+ help = "Specifies whether to generate debug symbol(.dSYM) file."
+ )
public boolean generateDebugSymbols;
@Option(name = "objc_generate_linkmap",
@@ -128,6 +131,14 @@ public class ObjcCommandLineOptions extends FragmentOptions {
)
public boolean enableBinaryStripping;
+ @Option(
+ name = "apple_generate_dsym",
+ defaultValue = "false",
+ category = "flags",
+ help = "Whether to generate debug symbol(.dSYM) file(s)."
+ )
+ public boolean appleGenerateDsym;
+
// This option exists because two configurations are not allowed to have the same cache key
// (partially derived from options). Since we have multiple transitions (see
// getPotentialSplitTransitions below) that may result in the same configuration values at runtime
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCommon.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCommon.java
index 33b652a288..5f832ebc27 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCommon.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCommon.java
@@ -660,9 +660,12 @@ public final class ObjcCommon {
if (dsymOutputType != null) {
objcProvider
- .add(BREAKPAD_FILE, intermediateArtifacts.breakpadSym())
.add(DEBUG_SYMBOLS, intermediateArtifacts.dsymSymbol(dsymOutputType))
.add(DEBUG_SYMBOLS_PLIST, intermediateArtifacts.dsymPlist(dsymOutputType));
+
+ if (ObjcRuleClasses.objcConfiguration(context).generateDebugSymbols()) {
+ objcProvider.add(BREAKPAD_FILE, intermediateArtifacts.breakpadSym());
+ }
}
return new ObjcCommon(objcProvider.build(), compilationArtifacts);
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcConfiguration.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcConfiguration.java
index 8398638ea0..7337ad82c2 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcConfiguration.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcConfiguration.java
@@ -59,6 +59,7 @@ public class ObjcConfiguration extends BuildConfiguration.Fragment {
private final DottedVersion iosSimulatorVersion;
private final String iosSimulatorDevice;
private final boolean generateDebugSymbols;
+ private final boolean generateDsym;
private final boolean generateLinkmap;
private final boolean runMemleaks;
private final ImmutableList<String> copts;
@@ -86,6 +87,7 @@ public class ObjcConfiguration extends BuildConfiguration.Fragment {
this.iosSimulatorVersion =
Preconditions.checkNotNull(objcOptions.iosSimulatorVersion, "iosSimulatorVersion");
this.generateDebugSymbols = objcOptions.generateDebugSymbols;
+ this.generateDsym = objcOptions.appleGenerateDsym;
this.generateLinkmap = objcOptions.generateLinkmap;
this.runMemleaks = objcOptions.runMemleaks;
this.copts = ImmutableList.copyOf(objcOptions.copts);
@@ -127,10 +129,20 @@ public class ObjcConfiguration extends BuildConfiguration.Fragment {
return iosSimulatorVersion;
}
+ /**
+ * Returns whether dSYM + breakpad generation is enabled.
+ */
public boolean generateDebugSymbols() {
return generateDebugSymbols;
}
+ /**
+ * Returns whether dSYM generation is enabled.
+ */
+ public boolean generateDsym() {
+ return generateDsym;
+ }
+
public boolean generateLinkmap() {
return generateLinkmap;
}
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 1d8bf7c210..9c2e330a26 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
@@ -622,8 +622,8 @@ public final class ReleaseBundlingSupport {
filesToBuild.add(linkmapFile);
}
- if (ObjcRuleClasses.objcConfiguration(ruleContext).generateDebugSymbols()) {
- filesToBuild.addAll(getBreakpadFiles().values());
+ if (ObjcRuleClasses.objcConfiguration(ruleContext).generateDebugSymbols()
+ || ObjcRuleClasses.objcConfiguration(ruleContext).generateDsym()) {
filesToBuild.addAll(getDsymFiles(dsymOutputType).values());
// TODO(bazel-team): Remove the 'if' when the objc_binary rule does not generate a bundle any
@@ -641,8 +641,15 @@ public final class ReleaseBundlingSupport {
if (linkedBinary == LinkedBinary.LOCAL_AND_DEPENDENCIES) {
debugSymbolBuilder
.add(intermediateArtifacts.dsymPlist(dsymOutputType))
- .add(intermediateArtifacts.dsymSymbol(dsymOutputType))
- .add(intermediateArtifacts.breakpadSym());
+ .add(intermediateArtifacts.dsymSymbol(dsymOutputType));
+ }
+ }
+
+ if (ObjcRuleClasses.objcConfiguration(ruleContext).generateDebugSymbols()) {
+ filesToBuild.addAll(getBreakpadFiles().values());
+
+ if (linkedBinary == LinkedBinary.LOCAL_AND_DEPENDENCIES) {
+ debugSymbolBuilder.add(intermediateArtifacts.breakpadSym());
}
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/XcodeSupport.java b/src/main/java/com/google/devtools/build/lib/rules/objc/XcodeSupport.java
index e50f2da56e..aa6a1ec8ad 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/XcodeSupport.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/XcodeSupport.java
@@ -268,7 +268,8 @@ public final class XcodeSupport {
this.appleCpus = multiCpus;
}
this.minimumOs = objcConfiguration.getMinimumOs().toString();
- this.generateDebugSymbols = objcConfiguration.generateDebugSymbols();
+ this.generateDebugSymbols =
+ objcConfiguration.generateDebugSymbols() || objcConfiguration.generateDsym();
}
@Override