Retire redundant debug symbol resolution methods.

-fdebug-compilation-map and -fdebug-prefix-map are not supported by
Swift, and have required the assistance of DBGVersion 2 path
remapping in dSYM bundles to work at all.

To simplify our debug symbol resolution story, we consolidate on
DBGVersion 2, as recommended by engineers closer to LLDB.

PiperOrigin-RevId: 186020447
diff --git a/src/TulsiGenerator/BazelBuildSettingsFeatures.swift b/src/TulsiGenerator/BazelBuildSettingsFeatures.swift
index 32834b4..53f2438 100644
--- a/src/TulsiGenerator/BazelBuildSettingsFeatures.swift
+++ b/src/TulsiGenerator/BazelBuildSettingsFeatures.swift
@@ -13,6 +13,6 @@
 // limitations under the License.
 
 let bazelBuildSettingsFeatures = [
-  // For non-distributed builds.
-  "TULSI_DEBUG_PREFIX_MAP",
+  // Export dSYMs to allow us to establish source maps that can handle multiple potential paths.
+  "TULSI_ALL_DSYM",
 ]
diff --git a/src/TulsiGenerator/Scripts/bazel_build.py b/src/TulsiGenerator/Scripts/bazel_build.py
index 1ef5ce3..66a96d4 100755
--- a/src/TulsiGenerator/Scripts/bazel_build.py
+++ b/src/TulsiGenerator/Scripts/bazel_build.py
@@ -188,7 +188,7 @@
   # The build configurations handled by this parser.
   KNOWN_CONFIGS = ['Debug', 'Release', 'Fastbuild']
 
-  def __init__(self, sdk_version, platform_name, arch, main_group_path):
+  def __init__(self, sdk_version, platform_name, arch):
     self.targets = []
     self.startup_options = collections.defaultdict(list)
     self.build_options = collections.defaultdict(
@@ -213,18 +213,6 @@
             ],
         })
 
-    # Options specific to debugger integration in Xcode.
-    xcode_version_major = int(os.environ['XCODE_VERSION_MAJOR'])
-    if xcode_version_major < 800:
-      xcode_lldb_options = [
-          '--copt=-Xclang', '--copt=-fdebug-compilation-dir',
-          '--copt=-Xclang', '--copt=%s' % main_group_path,
-          '--objccopt=-Xclang', '--objccopt=-fdebug-compilation-dir',
-          '--objccopt=-Xclang', '--objccopt=%s' % main_group_path,
-      ]
-      self.build_options['Debug'].extend(xcode_lldb_options)
-      self.build_options['Release'].extend(xcode_lldb_options)
-
     self.sdk_version = sdk_version
     self.platform_name = platform_name
 
@@ -509,8 +497,6 @@
 
     self.generate_dsym = (os.environ.get('TULSI_ALL_DSYM', 'NO') == 'YES' or
                           os.environ.get('TULSI_MUST_USE_DSYM', 'NO') == 'YES')
-    self.use_debug_prefix_map = os.environ.get('TULSI_DEBUG_PREFIX_MAP',
-                                               'NO') == 'YES'
     self.extra_remap_path = os.environ.get('TULSI_EXTRA_REMAP_PATH', '')
     self.remap_dotted_paths = os.environ.get('TULSI_REMAP_DOTTED_PATHS',
                                              'NO') == 'YES'
@@ -555,6 +541,11 @@
     self.xcode_version_major = int(os.environ['XCODE_VERSION_MAJOR'])
     self.xcode_version_minor = int(os.environ['XCODE_VERSION_MINOR'])
 
+    # Warn if the user is on an unsupported version of Xcode.
+    if self.xcode_version_major < 800:
+      _PrintXcodeWarning('Tulsi debugging is no longer supported for Xcode 7.')
+      _PrintXcodeWarning('Use Tulsi 0.4.185727384.20180214 for Xcode < 8.')
+
     # Path where Xcode expects the artifacts to be written to. This is not the
     # codesigning_path as device vs simulator builds have different signing
     # requirements, so Xcode expects different paths to be signed. This is
@@ -611,8 +602,7 @@
 
     parser = _OptionsParser(self.sdk_version,
                             self.platform_name,
-                            self.arch,
-                            self.main_group_path)
+                            self.arch)
     timer = Timer('Parsing options', 'parsing_options').Start()
     message, exit_code = parser.ParseOptions(args[1:])
     timer.End()
@@ -624,27 +614,6 @@
     self.bazel_bin_path = os.path.abspath(parser.bazel_bin_path)
     self.bazel_executable = parser.bazel_executable
 
-    # Use -fdebug-prefix-map to have debug symbols match Xcode-visible sources.
-    #
-    # NOTE: Use of -fdebug-prefix-map leads to producing binaries that cannot be
-    # reused across multiple machines by a distributed build system, unless the
-    # absolute paths to files visible to Xcode match perfectly between all of
-    # those machines.
-    #
-    # For this reason, -fdebug-prefix-map is provided as a default for non-
-    # distributed purposes.
-    if self.use_debug_prefix_map:
-      # Add the debug source maps now that we have bazel_executable.
-      source_maps = self._ExtractTargetSourceMaps()
-
-      prefix_maps = []
-      for source_map in source_maps:
-        prefix_maps.append('--copt=-fdebug-prefix-map=%s=%s' %
-                           source_map)
-
-      # Extend our list of build options with maps just prior to building.
-      parser.build_options[_OptionsParser.ALL_CONFIGS].extend(prefix_maps)
-
     self.build_path = os.path.join(self.bazel_bin_path,
                                    os.environ.get('TULSI_BUILD_PATH', ''))
 
@@ -741,7 +710,7 @@
     # correction applies to debug prefix maps as well.
     if self.xcode_version_major >= 800:
       timer = Timer('Updating .lldbinit', 'updating_lldbinit').Start()
-      clear_source_map = self.generate_dsym or self.use_debug_prefix_map
+      clear_source_map = self.generate_dsym
       exit_code = self._UpdateLLDBInit(clear_source_map)
       timer.End()
       if exit_code: