Automated rollback of commit dd3e4fba359bcc232e51e49c4c8135c5b8daacd6.

*** Reason for rollback ***

Breaks bazelbuild/rules_apple

*** Original change description ***

Delete system framework paths from blaze

This has been moved to crosstool.

RELNOTES: None.
PiperOrigin-RevId: 253795099
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 bb807f6..ff5c600 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
@@ -87,6 +87,9 @@
 import com.google.devtools.build.lib.packages.RuleClass.ConfiguredTargetFactory.RuleErrorException;
 import com.google.devtools.build.lib.rules.apple.AppleCommandLineOptions.AppleBitcodeMode;
 import com.google.devtools.build.lib.rules.apple.AppleConfiguration;
+import com.google.devtools.build.lib.rules.apple.ApplePlatform;
+import com.google.devtools.build.lib.rules.apple.ApplePlatform.PlatformType;
+import com.google.devtools.build.lib.rules.apple.AppleToolchain;
 import com.google.devtools.build.lib.rules.apple.XcodeConfig;
 import com.google.devtools.build.lib.rules.apple.XcodeConfigProvider;
 import com.google.devtools.build.lib.rules.cpp.CcCommon;
@@ -670,11 +673,28 @@
         .build();
   }
 
+  /** Add framework search paths common to both headers and libraries. */
+  private static void addCommonFrameworkSearchPaths(
+      ImmutableList.Builder<String> paths,
+      RuleContext ruleContext,
+      BuildConfiguration buildConfiguration) {
+
+    ApplePlatform platform =
+        buildConfiguration.getFragment(AppleConfiguration.class).getSingleArchPlatform();
+    paths.add(
+        AppleToolchain.sdkFrameworkDir(platform, XcodeConfig.getXcodeConfigProvider(ruleContext)));
+    // As of sdk8.1, XCTest is in a base Framework dir.
+    if (platform.getType() != PlatformType.WATCHOS) { // WatchOS does not have this directory.
+      paths.add(AppleToolchain.platformDeveloperFrameworkDir(platform));
+    }
+  }
+
   /** Returns a list of framework search paths for clang actions for pre-cleanup mode. */
   static ImmutableList<String> preCleanupFrameworkSearchPaths(
       ObjcProvider provider, RuleContext ruleContext, BuildConfiguration buildConfiguration) {
 
-    ImmutableList.Builder<String> frameworkNames = new ImmutableList.Builder<>();
+    ImmutableList.Builder<String> frameworkNames = new ImmutableList.Builder<String>();
+    addCommonFrameworkSearchPaths(frameworkNames, ruleContext, buildConfiguration);
     return frameworkNames
         // Add custom (non-SDK) framework search paths. For each framework foo/bar.framework,
         // include "foo" as a search path.
@@ -703,6 +723,7 @@
       return preCleanupFrameworkSearchPaths(provider, ruleContext, buildConfiguration);
     }
     ImmutableList.Builder<String> searchPaths = new ImmutableList.Builder<String>();
+    addCommonFrameworkSearchPaths(searchPaths, ruleContext, buildConfiguration);
     return searchPaths
         // Add header search paths corresponding to custom (non-SDK) frameworks. For each framework
         // foo/bar.framework, include "foo" as a search path.
@@ -723,6 +744,7 @@
       return preCleanupFrameworkSearchPaths(provider, ruleContext, buildConfiguration);
     }
     ImmutableList.Builder<String> searchPaths = new ImmutableList.Builder<String>();
+    addCommonFrameworkSearchPaths(searchPaths, ruleContext, buildConfiguration);
     return searchPaths
         // Add library search paths corresponding to custom (non-SDK) frameworks. For each framework
         // foo/bar.framework, include "foo" as a search path.
diff --git a/src/test/java/com/google/devtools/build/lib/rules/objc/AppleBinaryTest.java b/src/test/java/com/google/devtools/build/lib/rules/objc/AppleBinaryTest.java
index 3086405..9ba2a36 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/objc/AppleBinaryTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/objc/AppleBinaryTest.java
@@ -36,6 +36,9 @@
 import com.google.devtools.build.lib.packages.SkylarkProvider;
 import com.google.devtools.build.lib.packages.StructImpl;
 import com.google.devtools.build.lib.rules.apple.AppleConfiguration.ConfigurationDistinguisher;
+import com.google.devtools.build.lib.rules.apple.ApplePlatform;
+import com.google.devtools.build.lib.rules.apple.ApplePlatform.PlatformType;
+import com.google.devtools.build.lib.rules.apple.AppleToolchain;
 import com.google.devtools.build.lib.rules.objc.AppleBinary.BinaryType;
 import com.google.devtools.build.lib.rules.objc.CompilationSupport.ExtraLinkArgs;
 import com.google.devtools.build.lib.syntax.SkylarkDict;
@@ -1516,6 +1519,33 @@
   }
 
   @Test
+  public void testMacosFrameworkDirectories() throws Exception {
+    scratch.file(
+        "test/BUILD",
+        "apple_binary(",
+        "    name = 'test',",
+        "    deps = [':lib'],",
+        "    platform_type = 'macos',",
+        ")",
+        "objc_library(",
+        "    name = 'lib',",
+        "    srcs = ['a.m'],",
+        ")");
+
+    CommandAction linkAction = linkAction("//test:test");
+    ImmutableList<String> expectedCommandLineFragments =
+        ImmutableList.<String>builder()
+            .add(AppleToolchain.sdkDir() + AppleToolchain.SYSTEM_FRAMEWORK_PATH)
+            .add(frameworkDir(ApplePlatform.forTarget(PlatformType.MACOS, "x86_64")))
+            .build();
+
+    String linkArgs = Joiner.on(" ").join(linkAction.getArguments());
+    for (String expectedCommandLineFragment : expectedCommandLineFragments) {
+      assertThat(linkArgs).contains(expectedCommandLineFragment);
+    }
+  }
+
+  @Test
   public void testDrops32BitArchitecture() throws Exception {
     verifyDrops32BitArchitecture(getRuleType());
   }
diff --git a/src/test/java/com/google/devtools/build/lib/rules/objc/BazelJ2ObjcLibraryTest.java b/src/test/java/com/google/devtools/build/lib/rules/objc/BazelJ2ObjcLibraryTest.java
index 555a2d4..16912f3 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/objc/BazelJ2ObjcLibraryTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/objc/BazelJ2ObjcLibraryTest.java
@@ -40,6 +40,7 @@
 import com.google.devtools.build.lib.cmdline.Label;
 import com.google.devtools.build.lib.cmdline.RepositoryName;
 import com.google.devtools.build.lib.packages.NativeAspectClass;
+import com.google.devtools.build.lib.rules.apple.AppleConfiguration;
 import com.google.devtools.build.lib.rules.apple.ApplePlatform.PlatformType;
 import com.google.devtools.build.lib.rules.apple.AppleToolchain;
 import com.google.devtools.build.lib.rules.apple.DottedVersion;
@@ -1211,6 +1212,8 @@
     String genfilesFragment =
         getConfiguration(j2objcLibraryTarget).getGenfilesFragment().toString();
     String binFragment = getConfiguration(j2objcLibraryTarget).getBinFragment().toString();
+    AppleConfiguration appleConfiguration =
+        getConfiguration(j2objcLibraryTarget).getFragment(AppleConfiguration.class);
 
     String commandLine = Joiner.on(" ").join(compileAction.getArguments());
     ImmutableList<String> expectedArgs =
@@ -1225,6 +1228,12 @@
             .add("-arch", "i386")
             .add("-isysroot")
             .add(AppleToolchain.sdkDir())
+            .add("-F")
+            .add(AppleToolchain.sdkDir() + "/Developer/Library/Frameworks")
+            .add("-F")
+            .add(
+                AppleToolchain.platformDeveloperFrameworkDir(
+                    appleConfiguration.getSingleArchPlatform()))
             .add("-O0")
             .add("-DDEBUG=1")
             .add("-iquote")
diff --git a/src/test/java/com/google/devtools/build/lib/rules/objc/ObjcLibraryTest.java b/src/test/java/com/google/devtools/build/lib/rules/objc/ObjcLibraryTest.java
index 18b018b..717f0e7 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/objc/ObjcLibraryTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/objc/ObjcLibraryTest.java
@@ -47,6 +47,7 @@
 import com.google.devtools.build.lib.analysis.util.ScratchAttributeWriter;
 import com.google.devtools.build.lib.packages.NoSuchTargetException;
 import com.google.devtools.build.lib.packages.util.MockObjcSupport;
+import com.google.devtools.build.lib.rules.apple.ApplePlatform;
 import com.google.devtools.build.lib.rules.apple.AppleToolchain;
 import com.google.devtools.build.lib.rules.cpp.CppCompileAction;
 import com.google.devtools.build.lib.rules.cpp.CppModuleMap;
@@ -57,6 +58,7 @@
 import com.google.devtools.build.lib.testutil.TestConstants;
 import com.google.devtools.build.lib.vfs.PathFragment;
 import com.google.devtools.common.options.OptionsParsingException;
+import java.util.Collections;
 import java.util.List;
 import java.util.Set;
 import org.junit.Ignore;
@@ -432,6 +434,12 @@
     assertThat(compileActionA.getArguments())
         .containsAtLeast("-isysroot", AppleToolchain.sdkDir())
         .inOrder();
+    assertThat(Collections.frequency(compileActionA.getArguments(),
+        "-F" + AppleToolchain.sdkDir() + "/Developer/Library/Frameworks")).isEqualTo(1);
+    assertThat(
+            Collections.frequency(
+                compileActionA.getArguments(), "-F" + frameworkDir(ApplePlatform.IOS_SIMULATOR)))
+        .isEqualTo(1);
     assertThat(compileActionA.getArguments())
         .containsAtLeastElementsIn(AppleToolchain.DEFAULT_WARNINGS.values());
     assertThat(compileActionA.getArguments())
@@ -476,6 +484,12 @@
     assertThat(compileActionA.getArguments())
         .containsAtLeast("-isysroot", AppleToolchain.sdkDir())
         .inOrder();
+    assertThat(Collections.frequency(compileActionA.getArguments(),
+        "-F" + AppleToolchain.sdkDir() + "/Developer/Library/Frameworks")).isEqualTo(1);
+    assertThat(
+            Collections.frequency(
+                compileActionA.getArguments(), "-F" + frameworkDir(ApplePlatform.IOS_DEVICE)))
+        .isEqualTo(1);
     assertThat(compileActionA.getArguments())
         .containsAtLeastElementsIn(AppleToolchain.DEFAULT_WARNINGS.values());
     assertThat(compileActionA.getArguments())
@@ -1294,9 +1308,29 @@
     checkSdkIncludesUsedInCompileAction(RULE_TYPE);
   }
 
+  // Test with ios device SDK version 9.0. Framework path differs from previous versions.
+  @Test
+  public void testCompilationActions_deviceSdk9() throws Exception {
+    useConfiguration("--cpu=ios_armv7", "--ios_minimum_os=1.0", "--ios_sdk_version=9.0");
+
+    createLibraryTargetWriter("//objc:lib")
+        .setAndCreateFiles("srcs", "a.m", "b.m", "private.h")
+        .setAndCreateFiles("hdrs", "c.h")
+        .write();
+
+    CommandAction compileAction = compileAction("//objc:lib", "a.o");
+
+    // We remove spaces, since the crosstool rules do not use spaces in command line args.
+
+    String compileArgs = Joiner.on("").join(compileAction.getArguments()).replace(" ", "");
+    assertThat(compileArgs)
+        .contains("-F" + AppleToolchain.sdkDir() + AppleToolchain.SYSTEM_FRAMEWORK_PATH);
+  }
+
   @Test
   public void testCompilationActionsWithPch() throws Exception {
     useConfiguration("--apple_platform_type=ios");
+    ApplePlatform platform = ApplePlatform.IOS_SIMULATOR;
     scratch.file("objc/foo.pch");
     createLibraryTargetWriter("//objc:lib")
         .setAndCreateFiles("srcs", "a.m", "b.m", "private.h")
@@ -1318,6 +1352,8 @@
                 .add("-mios-simulator-version-min=" + DEFAULT_IOS_SDK_VERSION)
                 .add("-arch x86_64")
                 .add("-isysroot", AppleToolchain.sdkDir())
+                .add("-F" + AppleToolchain.sdkDir() + "/Developer/Library/Frameworks")
+                .add("-F" + frameworkDir(platform))
                 .addAll(FASTBUILD_COPTS)
                 .addAll(
                     iquoteArgs(
diff --git a/src/test/java/com/google/devtools/build/lib/rules/objc/ObjcProtoLibraryTest.java b/src/test/java/com/google/devtools/build/lib/rules/objc/ObjcProtoLibraryTest.java
index e48a8f4..0842ac7 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/objc/ObjcProtoLibraryTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/objc/ObjcProtoLibraryTest.java
@@ -31,6 +31,7 @@
 import com.google.devtools.build.lib.collect.nestedset.NestedSet;
 import com.google.devtools.build.lib.packages.util.MockObjcSupport;
 import com.google.devtools.build.lib.packages.util.MockProtoSupport;
+import com.google.devtools.build.lib.rules.apple.ApplePlatform;
 import com.google.devtools.build.lib.rules.apple.AppleToolchain;
 import com.google.devtools.build.lib.rules.cpp.CppModuleMapAction;
 import com.google.devtools.build.lib.testutil.TestConstants;
@@ -463,6 +464,7 @@
   @Test
   public void testCompilationAction() throws Exception {
     useConfiguration("--apple_platform_type=ios", "--cpu=ios_i386");
+    ApplePlatform platform = ApplePlatform.IOS_SIMULATOR;
 
     // Because protos are linked/compiled within the apple_binary context, we need to traverse the
     // action graph to find the linked protos (.a) and compiled protos (.o).
@@ -504,6 +506,8 @@
             .add("-mios-simulator-version-min=" + DEFAULT_IOS_SDK_VERSION)
             .add("-arch", "i386")
             .add("-isysroot", AppleToolchain.sdkDir())
+            .add("-F", AppleToolchain.sdkDir() + AppleToolchain.DEVELOPER_FRAMEWORK_PATH)
+            .add("-F", frameworkDir(platform))
             .addAll(FASTBUILD_COPTS)
             .addAll(
                 ObjcLibraryTest.iquoteArgs(
diff --git a/src/test/java/com/google/devtools/build/lib/rules/objc/ObjcRuleTestCase.java b/src/test/java/com/google/devtools/build/lib/rules/objc/ObjcRuleTestCase.java
index 11202af..133c6ae 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/objc/ObjcRuleTestCase.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/objc/ObjcRuleTestCase.java
@@ -52,6 +52,7 @@
 import com.google.devtools.build.lib.packages.util.MockProtoSupport;
 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.apple.ApplePlatform;
 import com.google.devtools.build.lib.rules.apple.ApplePlatform.PlatformType;
 import com.google.devtools.build.lib.rules.apple.AppleToolchain;
 import com.google.devtools.build.lib.rules.apple.DottedVersion;
@@ -216,6 +217,11 @@
     MockProtoSupport.setup(mockToolsConfig);
   }
 
+  protected static String frameworkDir(ApplePlatform platform) {
+    return AppleToolchain.platformDir(
+        platform.getNameInPlist()) + AppleToolchain.DEVELOPER_FRAMEWORK_PATH;
+  }
+
   /**
    * Creates an {@code objc_library} target writer for the label indicated by the given String.
    */
@@ -358,6 +364,8 @@
             .add("-mios-simulator-version-min=" + DEFAULT_IOS_SDK_VERSION)
             .add("-arch " + arch)
             .add("-isysroot " + AppleToolchain.sdkDir())
+            .add(AppleToolchain.sdkDir() + AppleToolchain.DEVELOPER_FRAMEWORK_PATH)
+            .add(frameworkDir(ApplePlatform.forTarget(PlatformType.IOS, arch)))
             .addAll(frameworkPathFragmentParents.build())
             .add("-Xlinker -objc_abi_version -Xlinker 2")
             .add("-fobjc-link-runtime")