No longer automatically set _GLIBCXX_DEBUG, _GLIBCXX_DEBUG_PEDANTIC, _GLIBCPP_CONCEPT_CHECKS for debug objc builds. -- MOS_MIGRATED_REVID=115022288
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 3fb34a8..9aa540d 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
@@ -171,6 +171,16 @@ + " and system libraries." ) public boolean prioritizeStaticLibs; + + @Option( + name = "objc_debug_with_GLIBCXX", + defaultValue = "true", + category = "undocumented", + help = + "If set, and compilation mode is set to 'dbg', define GLIBCXX_DEBUG, " + + " GLIBCXX_DEBUG_PEDANTIC and GLIBCPP_CONCEPT_CHECKS." + ) + public boolean debugWithGlibcxx; @VisibleForTesting static final String DEFAULT_MINIMUM_IOS = "7.0";
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 06ec7a8..a45dc41 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
@@ -38,11 +38,15 @@ @Immutable public class ObjcConfiguration extends BuildConfiguration.Fragment { @VisibleForTesting - static final ImmutableList<String> DBG_COPTS = ImmutableList.of("-O0", "-DDEBUG=1", - "-fstack-protector", "-fstack-protector-all", "-D_GLIBCXX_DEBUG_PEDANTIC", "-D_GLIBCXX_DEBUG", - "-D_GLIBCPP_CONCEPT_CHECKS"); + static final ImmutableList<String> DBG_COPTS = + ImmutableList.of("-O0", "-DDEBUG=1", "-fstack-protector", "-fstack-protector-all"); @VisibleForTesting + static final ImmutableList<String> GLIBCXX_DBG_COPTS = + ImmutableList.of( + "-D_GLIBCXX_DEBUG", "-D_GLIBCXX_DEBUG_PEDANTIC", "-D_GLIBCPP_CONCEPT_CHECKS"); + + @VisibleForTesting static final ImmutableList<String> OPT_COPTS = ImmutableList.of( "-Os", "-DNDEBUG=1", "-Wno-unused-variable", "-Winit-self", "-Wno-extra"); @@ -64,6 +68,7 @@ private final String xcodeOverrideWorkspaceRoot; private final boolean useAbsolutePathsForActions; private final boolean prioritizeStaticLibs; + private final boolean debugWithGlibcxx; ObjcConfiguration(ObjcCommandLineOptions objcOptions, BuildConfiguration.Options options, @Nullable BlazeDirectories directories) { @@ -86,6 +91,7 @@ this.xcodeOverrideWorkspaceRoot = objcOptions.xcodeOverrideWorkspaceRoot; this.useAbsolutePathsForActions = objcOptions.useAbsolutePathsForActions; this.prioritizeStaticLibs = objcOptions.prioritizeStaticLibs; + this.debugWithGlibcxx = objcOptions.debugWithGlibcxx; } /** @@ -129,7 +135,14 @@ public ImmutableList<String> getCoptsForCompilationMode() { switch (compilationMode) { case DBG: - return DBG_COPTS; + if (this.debugWithGlibcxx) { + return ImmutableList.<String>builder() + .addAll(DBG_COPTS) + .addAll(GLIBCXX_DBG_COPTS) + .build(); + } else { + return DBG_COPTS; + } case FASTBUILD: return fastbuildOptions; case OPT: