Rollback AppleCrosstoolChange

--
PiperOrigin-RevId: 142692398
MOS_MIGRATED_REVID=142692398
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelConfigurationCollection.java b/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelConfigurationCollection.java
index 52e4f4c..a539a6c 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelConfigurationCollection.java
+++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelConfigurationCollection.java
@@ -19,7 +19,6 @@
 import com.google.common.collect.HashBasedTable;
 import com.google.common.collect.ImmutableListMultimap;
 import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.Iterables;
 import com.google.common.collect.ListMultimap;
 import com.google.common.collect.Table;
 import com.google.devtools.build.lib.analysis.ConfigurationCollectionFactory;
@@ -35,10 +34,7 @@
 import com.google.devtools.build.lib.packages.Attribute.ConfigurationTransition;
 import com.google.devtools.build.lib.packages.Attribute.SplitTransition;
 import com.google.devtools.build.lib.packages.Attribute.Transition;
-import com.google.devtools.build.lib.packages.Target;
-import com.google.devtools.build.lib.rules.apple.AppleConfiguration;
 import com.google.devtools.build.lib.rules.cpp.CppRuleClasses.LipoTransition;
-import com.google.devtools.build.lib.rules.objc.AppleCrosstoolTransition;
 import java.util.LinkedHashSet;
 import java.util.Map;
 import java.util.Set;
@@ -108,17 +104,6 @@
         return super.getDynamicTransition(configurationTransition);
       }
     }
-
-    @Override
-    public BuildConfiguration toplevelConfigurationHook(Target toTarget) {
-      return (AppleConfiguration.APPLE_CROSSTOOL_RULE_CLASSES
-          .contains(toTarget.getAssociatedRule().getRuleClass()))
-          ? Iterables.getOnlyElement(
-              configuration
-                  .getTransitions()
-                  .getSplitConfigurations(AppleCrosstoolTransition.APPLE_CROSSTOOL_TRANSITION))
-          : configuration;
-    } 
   }
 
   @Override
diff --git a/src/main/java/com/google/devtools/build/lib/rules/apple/AppleCommandLineOptions.java b/src/main/java/com/google/devtools/build/lib/rules/apple/AppleCommandLineOptions.java
index 6724465..648e396 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/apple/AppleCommandLineOptions.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/apple/AppleCommandLineOptions.java
@@ -136,16 +136,6 @@
       help = "Specifies to target CPU of iOS compilation.")
   public String iosCpu;
 
-  @Option(
-      name = "apple_crosstool_top",
-      defaultValue = "@bazel_tools//tools/cpp:toolchain",
-      category = "version",
-      converter = LabelConverter.class,
-      help = "The label of the crosstool package to be used in Apple and Objc rules and their"
-            + " dependencies."
-    )
-  public Label appleCrosstoolTop;  
-
   @Option(name = "apple_platform_type",
       defaultValue = "IOS",
       category = "undocumented",
diff --git a/src/main/java/com/google/devtools/build/lib/rules/apple/AppleConfiguration.java b/src/main/java/com/google/devtools/build/lib/rules/apple/AppleConfiguration.java
index b685056..34a6a05 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/apple/AppleConfiguration.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/apple/AppleConfiguration.java
@@ -65,20 +65,8 @@
    **/
   public static final String APPLE_SDK_PLATFORM_ENV_NAME = "APPLE_SDK_PLATFORM";
 
-  /**
-   * Rule classes that need a top level transition to the apple crosstool.
-   * 
-   * <p>This list must not contain any rule classes that require some other split transition, as
-   * that transition would be suppressed by the top level transition to the apple crosstool. For
-   * example, if "apple_binary" were in this list, the multi-arch transition would not occur.
-   */
-  public static final ImmutableList<String> APPLE_CROSSTOOL_RULE_CLASSES = ImmutableList.of(
-      "objc_library",
-      "objc_binary",
-      "experimental_objc_library"); 
-
   private static final DottedVersion MINIMUM_BITCODE_XCODE_VERSION = DottedVersion.fromString("7");
-  
+
   private final DottedVersion iosSdkVersion;
   private final DottedVersion iosMinimumOs;
   private final DottedVersion watchosSdkVersion;
@@ -640,7 +628,5 @@
     APPLEBIN_WATCHOS,
     /** Distinguisher for {@code apple_binary} rule with "tvos" platform_type. */
     APPLEBIN_TVOS,
-    /** Distinguisher for the apple crosstool configuration. */
-    APPLE_CROSSTOOL,
   }
 }
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/AppleCrosstoolTransition.java b/src/main/java/com/google/devtools/build/lib/rules/objc/AppleCrosstoolTransition.java
deleted file mode 100644
index 647c97a..0000000
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/AppleCrosstoolTransition.java
+++ /dev/null
@@ -1,82 +0,0 @@
-// Copyright 2016 The Bazel Authors. All rights reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//    http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package com.google.devtools.build.lib.rules.objc;
-
-import com.google.common.collect.ImmutableList;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
-import com.google.devtools.build.lib.analysis.config.BuildOptions;
-import com.google.devtools.build.lib.packages.Attribute.SplitTransition;
-import com.google.devtools.build.lib.rules.apple.AppleCommandLineOptions;
-import com.google.devtools.build.lib.rules.apple.AppleConfiguration.ConfigurationDistinguisher;
-import com.google.devtools.build.lib.rules.cpp.CppOptions;
-import java.util.List;
-
-/**
- * Transition that produces a configuration that causes c++ toolchain selection to use the
- * CROSSTOOL given in apple_crosstool_top.
- */
-public class AppleCrosstoolTransition implements SplitTransition<BuildOptions> {
-
-  /**
-   * A singleton instance of AppleCrosstoolTransition.
-   */
-  public static final SplitTransition<BuildOptions> APPLE_CROSSTOOL_TRANSITION =
-      new AppleCrosstoolTransition();
-  
-  @Override
-  public boolean defaultsToSelf() {
-    return true;
-  }
-
-  @Override
-  public List<BuildOptions> split(BuildOptions buildOptions) {
-    BuildOptions result = buildOptions.clone();
-    result.get(AppleCommandLineOptions.class).configurationDistinguisher =
-        ConfigurationDistinguisher.APPLE_CROSSTOOL;
-
-
-    // TODO(b/29355778): Once ios_cpu is retired, introduce another top-level flag (perhaps
-    // --apple_cpu) for toolchain selection in top-level consuming rules.
-    String cpu = "ios_" + buildOptions.get(AppleCommandLineOptions.class).iosCpu;
-    setAppleCrosstoolTransitionConfiguration(buildOptions, result, cpu);
-    return ImmutableList.of(result);
-  }
-  
-  /**
-   * Sets configuration fields required for a transition that uses apple_crosstool_top in place of
-   * the default CROSSTOOL.
-   *
-   * @param from options from the originating configuration
-   * @param to options for the destination configuration. This instance will be modified
-   *     to so the destination configuration uses the apple crosstool
-   * @param cpu {@code --cpu} value for toolchain selection in the destination configuration
-   */
-  public static void setAppleCrosstoolTransitionConfiguration(BuildOptions from,
-      BuildOptions to, String cpu) {
-    to.get(BuildConfiguration.Options.class).cpu = cpu;
-    to.get(CppOptions.class).crosstoolTop =
-        from.get(AppleCommandLineOptions.class).appleCrosstoolTop; 
-
-    // --compiler = "compiler" for all OSX toolchains.  We do not support asan/tsan, cfi, etc. on
-    // darwin.
-    to.get(CppOptions.class).cppCompiler = "compiler";
-
-    // OSX toolchains always use the runtime of the platform they are targeting (i.e. we do not
-    // support custom production environments).
-    to.get(CppOptions.class).libcTop = null;
-    to.get(CppOptions.class).glibc = null; 
-  }
-  
-}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/MultiArchSplitTransitionProvider.java b/src/main/java/com/google/devtools/build/lib/rules/objc/MultiArchSplitTransitionProvider.java
index ba091e3..1425c59 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/MultiArchSplitTransitionProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/MultiArchSplitTransitionProvider.java
@@ -21,6 +21,7 @@
 import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.ImmutableSet;
 import com.google.devtools.build.lib.analysis.RuleContext;
+import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
 import com.google.devtools.build.lib.analysis.config.BuildOptions;
 import com.google.devtools.build.lib.packages.Attribute.SplitTransition;
 import com.google.devtools.build.lib.packages.Attribute.SplitTransitionProvider;
@@ -31,6 +32,7 @@
 import com.google.devtools.build.lib.rules.apple.AppleConfiguration.ConfigurationDistinguisher;
 import com.google.devtools.build.lib.rules.apple.Platform.PlatformType;
 import com.google.devtools.build.lib.rules.objc.ObjcRuleClasses.MultiArchPlatformRule;
+
 import java.util.List;
 
 /**
@@ -159,20 +161,17 @@
 
         splitOptions.get(AppleCommandLineOptions.class).applePlatformType = platformType;
         splitOptions.get(AppleCommandLineOptions.class).appleSplitCpu = cpu;
+        // Set for backwards compatibility with rules that depend on this flag, even when
+        // ios is not the platform type.
+        // TODO(b/28958783): Clean this up.
+        splitOptions.get(AppleCommandLineOptions.class).iosCpu = cpu;
         if (splitOptions.get(ObjcCommandLineOptions.class).enableCcDeps) {
           // Only set the (CC-compilation) CPU for dependencies if explicitly required by the user.
           // This helps users of the iOS rules who do not depend on CC rules as these CPU values
           // require additional flags to work (e.g. a custom crosstool) which now only need to be
           // set if this feature is explicitly requested.
-          String platformCpu = String.format("%s_%s", platformType, cpu);
-          AppleCrosstoolTransition.setAppleCrosstoolTransitionConfiguration(buildOptions,
-              splitOptions, platformCpu);
-        } else {
-          // If the new configuration does not use the apple crosstool, then it needs ios_cpu to be
-          // to decide architecture.
-          // TODO(b/29355778, b/28403953): Use a crosstool for any apple rule, and remove this
-          // "else" clause.  Deprecate ios_cpu.
-          splitOptions.get(AppleCommandLineOptions.class).iosCpu = cpu;
+          splitOptions.get(BuildConfiguration.Options.class).cpu =
+              String.format("%s_%s", platformType, cpu);
         }
         splitOptions.get(AppleCommandLineOptions.class).configurationDistinguisher =
             configurationDistinguisher;
@@ -186,4 +185,4 @@
       return true;
     }
   }
-}
+}
\ No newline at end of file
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 7dc9e68..c2f45b5 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
@@ -251,8 +251,7 @@
   public List<SplitTransition<BuildOptions>> getPotentialSplitTransitions() {
     return ImmutableList.<SplitTransition<BuildOptions>>builder().add(
             IosApplication.SPLIT_ARCH_TRANSITION, IosExtension.MINIMUM_OS_AND_SPLIT_ARCH_TRANSITION,
-            AppleWatch1Extension.MINIMUM_OS_AND_SPLIT_ARCH_TRANSITION,
-            AppleCrosstoolTransition.APPLE_CROSSTOOL_TRANSITION)
+            AppleWatch1Extension.MINIMUM_OS_AND_SPLIT_ARCH_TRANSITION)
         .addAll(MultiArchSplitTransitionProvider.getPotentialSplitTransitions())
         .build();
   }
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 90944aa..1197cd3 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
@@ -47,6 +47,7 @@
 import com.google.devtools.build.lib.analysis.actions.SymlinkAction;
 import com.google.devtools.build.lib.analysis.actions.TemplateExpansionAction;
 import com.google.devtools.build.lib.analysis.actions.TemplateExpansionAction.Substitution;
+import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
 import com.google.devtools.build.lib.analysis.config.BuildOptions;
 import com.google.devtools.build.lib.collect.nestedset.NestedSet;
 import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
@@ -1343,7 +1344,7 @@
       ImmutableList.Builder<BuildOptions> splitBuildOptions = ImmutableList.builder();
       for (String iosCpu : iosMultiCpus) {
         BuildOptions splitOptions = buildOptions.clone();
-        setArchitectureOptions(splitOptions, buildOptions, iosCpu);
+        setArchitectureOptions(splitOptions, iosCpu);
         setAdditionalOptions(splitOptions, buildOptions);
         splitOptions.get(AppleCommandLineOptions.class).configurationDistinguisher =
             getConfigurationDistinguisher();
@@ -1371,19 +1372,17 @@
      */
     protected void setAdditionalOptions(BuildOptions splitOptions, BuildOptions originalOptions) {}
 
-    private static void setArchitectureOptions(BuildOptions splitOptions, 
-        BuildOptions originalOptions, String iosCpu) {
+    private void setArchitectureOptions(BuildOptions splitOptions, String iosCpu) {
       splitOptions.get(AppleCommandLineOptions.class).applePlatformType = PlatformType.IOS;
       splitOptions.get(AppleCommandLineOptions.class).appleSplitCpu = iosCpu;
       splitOptions.get(AppleCommandLineOptions.class).iosCpu = iosCpu;
-     if (splitOptions.get(ObjcCommandLineOptions.class).enableCcDeps) {
+      if (splitOptions.get(ObjcCommandLineOptions.class).enableCcDeps) {
         // Only set the (CC-compilation) CPU for dependencies if explicitly required by the user.
         // This helps users of the iOS rules who do not depend on CC rules as these CPU values
         // require additional flags to work (e.g. a custom crosstool) which now only need to be set
         // if this feature is explicitly requested.
-        AppleCrosstoolTransition.setAppleCrosstoolTransitionConfiguration(originalOptions,
-            splitOptions, "ios_" + iosCpu);
-     }
+        splitOptions.get(BuildConfiguration.Options.class).cpu = "ios_" + iosCpu;
+      }
     }
 
     @Override
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/mock/MOCK_CROSSTOOL b/src/test/java/com/google/devtools/build/lib/analysis/mock/MOCK_CROSSTOOL
index 5f8b523..14e38ac 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/mock/MOCK_CROSSTOOL
+++ b/src/test/java/com/google/devtools/build/lib/analysis/mock/MOCK_CROSSTOOL
@@ -21,10 +21,6 @@
   toolchain_identifier: "local_darwin"
 }
 default_toolchain {
-  cpu: "ios_x86_64"
-  toolchain_identifier: "local_ios"
-}
-default_toolchain {
   cpu: "x64_windows"
   toolchain_identifier: "local_windows_msys64"
 }
@@ -358,52 +354,6 @@
   supports_interface_shared_objects: true
 }
 
-# Stub crosstool to allow construction of apple crosstool configuration in a
-# static configuration set.
-# TODO(b/33804121): Remove this once dynamic configurations are in place.
-toolchain {
-  toolchain_identifier: "local_ios"
-
-  host_system_name: "local"
-  target_system_name: "local"
-  target_cpu: "ios_x86_64"
-  target_libc: "ios"
-  compiler: "compiler"
-  linking_mode_flags { mode: DYNAMIC }
-
-  abi_version: "local"
-  abi_libc_version: "local"
-
-  tool_path { name: "ar" path: "/usr/bin/libtool" }
-  tool_path { name: "compat-ld" path: "/usr/bin/ld" }
-  tool_path { name: "cpp" path: "/usr/bin/cpp" }
-  tool_path { name: "dwp" path: "/usr/bin/dwp" }
-  tool_path { name: "gcc" path: "/usr/bin/gcc" }
-  tool_path { name: "gcov" path: "/usr/bin/gcov" }
-  tool_path { name: "ld" path: "/usr/bin/ld" }
-  tool_path { name: "nm" path: "/usr/bin/nm" }
-  tool_path { name: "objcopy" path: "/usr/bin/objcopy" }
-  tool_path { name: "objdump" path: "/usr/bin/objdump" }
-  tool_path { name: "strip" path: "/usr/bin/strip" }
-
-  needsPic: false
-
-  builtin_sysroot: ""
-  cxx_flag: "-std=c++0x"
-  ar_flag: "-static"
-  ar_flag: "-s"
-  ar_flag: "-o"
-  linker_flag: "-lstdc++"
-  cxx_builtin_include_directory: "/usr/include"
-  cxx_builtin_include_directory: "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain"
-  cxx_builtin_include_directory: "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs"
-  cxx_builtin_include_directory: "/opt/local/include"
-  cxx_builtin_include_directory: "/Library/Developer/CommandLineTools"
-  objcopy_embed_flag: "-I"
-  objcopy_embed_flag: "binary"
-  supports_interface_shared_objects: true
-}
-
 toolchain {
   toolchain_identifier: "local_windows_mingw"
 
diff --git a/src/test/java/com/google/devtools/build/lib/packages/util/BazelMockCcSupport.java b/src/test/java/com/google/devtools/build/lib/packages/util/BazelMockCcSupport.java
index cc063b1..dd2f474 100644
--- a/src/test/java/com/google/devtools/build/lib/packages/util/BazelMockCcSupport.java
+++ b/src/test/java/com/google/devtools/build/lib/packages/util/BazelMockCcSupport.java
@@ -87,7 +87,6 @@
         "      'k8|compiler': ':cc-compiler-k8',",
         "      'piii|compiler': ':cc-compiler-piii',",
         "      'darwin|compiler': ':cc-compiler-darwin',",
-        "      'ios_x86_64|compiler': ':cc-compiler-ios_x86_64',",
         "      'armeabi-v7a|compiler': ':cc-compiler-armeabi-v7a',",
         "      'x64_windows|windows_msys64': ':cc-compiler-x64_windows',",
         "      'ppc|compiler': ':cc-compiler-ppc',",
@@ -117,13 +116,6 @@
         "    module_map = 'crosstool.cppmap', supports_header_parsing = 1,",
         "    objcopy_files = ':empty', static_runtime_libs = [':empty'], strip_files = ':empty',",
         ")",
-        "cc_toolchain(name = 'cc-compiler-ios_x86_64', all_files = ':empty', ",
-        "    compiler_files = ':empty',",
-        "    cpu = 'local', dwp_files = ':empty', dynamic_runtime_libs = [':empty'], ",
-        "    linker_files = ':empty',",
-        "    module_map = 'crosstool.cppmap', supports_header_parsing = 1,",
-        "    objcopy_files = ':empty', static_runtime_libs = [':empty'], strip_files = ':empty',",
-        ")", 
         "cc_toolchain(name = 'cc-compiler-armeabi-v7a', all_files = ':empty', ",
         "    compiler_files = ':empty',",
         "    cpu = 'local', dwp_files = ':empty', dynamic_runtime_libs = [':empty'], ",
diff --git a/tools/cpp/BUILD b/tools/cpp/BUILD
index c7df6cf..4e93a31 100644
--- a/tools/cpp/BUILD
+++ b/tools/cpp/BUILD
@@ -39,7 +39,6 @@
         "x64_windows|compiler": ":cc-compiler-x64_windows",
         "x64_windows_msvc|compiler": ":cc-compiler-x64_windows_msvc",
         "ppc|compiler": ":cc-compiler-ppc",
-        "ios_x86_64|compiler": ":cc-compiler-ios_x86_64",
     },
 )
 
@@ -155,20 +154,6 @@
     supports_param_files = 1,
 )
 
-cc_toolchain(
-    name = "cc-compiler-ios_x86_64",
-    all_files = ":empty",
-    compiler_files = ":empty",
-    cpu = "local",
-    dwp_files = ":empty",
-    dynamic_runtime_libs = [":empty"],
-    linker_files = ":empty",
-    objcopy_files = ":empty",
-    static_runtime_libs = [":empty"],
-    strip_files = ":empty",
-    supports_param_files = 0,
-)
-
 filegroup(
     name = "every-file-x64_windows",
     srcs = [
diff --git a/tools/cpp/CROSSTOOL b/tools/cpp/CROSSTOOL
index bfe3e80..0922cf3 100644
--- a/tools/cpp/CROSSTOOL
+++ b/tools/cpp/CROSSTOOL
@@ -43,12 +43,6 @@
   cpu: "ppc"
   toolchain_identifier: "local_linux"
 }
-
-default_toolchain {
-  cpu: "ios_x86_64"
-  toolchain_identifier: "ios_x86_64"
-}
-
 toolchain {
   abi_version: "armeabi-v7a"
   abi_libc_version: "armeabi-v7a"
@@ -813,37 +807,3 @@
     compiler_flag: "-Xcompilation-mode=opt"
   }
 }
-
-# Stub crosstool to allow construction of apple crosstool configuration in a
-# static configuration set.
-# TODO(b/33804121): Remove this once dynamic configurations are in place.
-toolchain {
-  toolchain_identifier: "ios_x86_64"
-  host_system_name: "x86_64-apple-macosx"
-  target_system_name: "x86_64-apple-ios"
-  target_cpu: "ios_x86_64"
-  target_libc: "ios"
-  compiler: "compiler"
-  abi_version: "local"
-  abi_libc_version: "local"
-  supports_gold_linker: false
-  supports_incremental_linker: false
-  supports_fission: false
-  supports_interface_shared_objects: false
-  supports_normalizing_ar: false
-  supports_start_end_lib: false
-
-  tool_path { name: "ar" path: "/bin/false" }
-  tool_path { name: "compat-ld" path: "/bin/false" }
-  tool_path { name: "cpp" path: "/bin/false" }
-  tool_path { name: "dwp" path: "/bin/false" }
-  tool_path { name: "gcc" path: "/bin/false" }
-  tool_path { name: "gcov" path: "/bin/false" }
-  tool_path { name: "ld" path: "/bin/false" }
-
-  tool_path { name: "nm" path: "/bin/false" }
-  tool_path { name: "objcopy" path: "/bin/false" }
-  tool_path { name: "objdump" path: "/bin/false" }
-  tool_path { name: "strip" path: "/bin/false" }
-  linking_mode_flags { mode: DYNAMIC }
-}