Automated rollback of commit 011b55099d1afcd590b42839a143f08a4a5cd9f3.

*** Reason for rollback ***

breaking blaze nightly 2022.06.16-1

*** Original change description ***

Handle --objccopt in C++ Build API

This requires moving the required information from ObjcConfiguration
to CppConfiguration.  CppConfiuration.objccopts now has the same
information as ObjcConfiguration.copts, and we can eventually delete
the latter.

There are a couple slight changes in behavior:

- C/C++ sources in objc_library will no longer get the options from
  --objccopt.  This matches the behavior of other copts variants which
  are all done based on file extensions.

- Objective-C parse...

PiperOrigin-RevId: 455416523
Change-Id: Iccf6f951a050e14cfd309debbce9352cc456e587
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCompilationHelper.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCompilationHelper.java
index e0cf808..049441d 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCompilationHelper.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCompilationHelper.java
@@ -1617,11 +1617,6 @@
       flagsBuilder.addAll(config.getCxxopts());
     }
 
-    if (CppFileTypes.OBJC_SOURCE.matches(sourceFilename)
-        || CppFileTypes.OBJCPP_SOURCE.matches(sourceFilename)) {
-      flagsBuilder.addAll(config.getObjcopts());
-    }
-
     return flagsBuilder.build();
   }
 
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppConfiguration.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppConfiguration.java
index 54acf28..d0b2945 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppConfiguration.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppConfiguration.java
@@ -172,7 +172,6 @@
 
   private final ImmutableList<String> copts;
   private final ImmutableList<String> cxxopts;
-  private final ImmutableList<String> objcopts;
 
   private final ImmutableList<String> linkopts;
   private final ImmutableList<String> ltoindexOptions;
@@ -279,7 +278,6 @@
     this.conlyopts = ImmutableList.copyOf(cppOptions.conlyoptList);
     this.copts = ImmutableList.copyOf(cppOptions.coptList);
     this.cxxopts = ImmutableList.copyOf(cppOptions.cxxoptList);
-    this.objcopts = ImmutableList.copyOf(cppOptions.objcoptList);
     this.linkopts = linkoptsBuilder.build();
     this.ltoindexOptions = ImmutableList.copyOf(cppOptions.ltoindexoptList);
     this.ltobackendOptions = ImmutableList.copyOf(cppOptions.ltobackendoptList);
@@ -542,12 +540,6 @@
     return conlyopts;
   }
 
-  /** Returns flags passed to Bazel by --objccopt option. */
-  @Override
-  public ImmutableList<String> getObjcopts() {
-    return objcopts;
-  }
-
   /** Returns flags passed to Bazel by --linkopt option. */
   @Override
   public ImmutableList<String> getLinkopts() {
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppOptions.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppOptions.java
index ea3bd3e..3bd6afa 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppOptions.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppOptions.java
@@ -294,15 +294,6 @@
   public List<String> conlyoptList;
 
   @Option(
-      name = "objccopt",
-      allowMultiple = true,
-      defaultValue = "null",
-      documentationCategory = OptionDocumentationCategory.OUTPUT_PARAMETERS,
-      effectTags = {OptionEffectTag.ACTION_COMMAND_LINES},
-      help = "Additional options to pass to gcc when compiling Objective C/C++ source files.")
-  public List<String> objcoptList;
-
-  @Option(
       name = "linkopt",
       defaultValue = "null",
       allowMultiple = true,
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 b6248ec..f35a235 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
@@ -89,6 +89,15 @@
   public String tvosSimulatorDevice;
 
   @Option(
+      name = "objccopt",
+      allowMultiple = true,
+      defaultValue = "null",
+      documentationCategory = OptionDocumentationCategory.OUTPUT_PARAMETERS,
+      effectTags = {OptionEffectTag.ACTION_COMMAND_LINES},
+      help = "Additional options to pass to Objective C compilation.")
+  public List<String> copts;
+
+  @Option(
     name = "ios_memleaks",
     defaultValue = "false",
     documentationCategory = OptionDocumentationCategory.TESTING,
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 2d6cba4..cff7514 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
@@ -80,7 +80,7 @@
     this.tvosSimulatorVersion = DottedVersion.maybeUnwrap(objcOptions.tvosSimulatorVersion);
     this.generateLinkmap = cppOptions.objcGenerateLinkmap;
     this.runMemleaks = objcOptions.runMemleaks;
-    this.copts = ImmutableList.copyOf(cppOptions.objcoptList);
+    this.copts = ImmutableList.copyOf(objcOptions.copts);
     this.compilationMode = Preconditions.checkNotNull(options.compilationMode, "compilationMode");
     this.fastbuildOptions = ImmutableList.copyOf(objcOptions.fastbuildOptions);
     this.enableBinaryStripping = cppOptions.objcEnableBinaryStripping;
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/cpp/CppConfigurationApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/cpp/CppConfigurationApi.java
index 4bbc9cb..2f48f82 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/cpp/CppConfigurationApi.java
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/cpp/CppConfigurationApi.java
@@ -83,14 +83,6 @@
   ImmutableList<String> getConlyopts() throws EvalException;
 
   @StarlarkMethod(
-      name = "objccopts",
-      structField = true,
-      doc =
-          "The flags passed to Bazel by <a href=\"${link user-manual#flag--objccopt}\">"
-              + "<code>--objccopt</code></a> option.")
-  ImmutableList<String> getObjcopts() throws EvalException;
-
-  @StarlarkMethod(
       name = "linkopts",
       structField = true,
       doc =
diff --git a/src/main/starlark/builtins_bzl/common/objc/compilation_support.bzl b/src/main/starlark/builtins_bzl/common/objc/compilation_support.bzl
index 526fe9c..e79f2df 100644
--- a/src/main/starlark/builtins_bzl/common/objc/compilation_support.bzl
+++ b/src/main/starlark/builtins_bzl/common/objc/compilation_support.bzl
@@ -226,6 +226,7 @@
 def _get_compile_rule_copts(common_variables):
     attributes = common_variables.compilation_attributes
     copts = []
+    copts.extend(common_variables.objc_config.copts)
     copts.extend(attributes.copts)
 
     if attributes.enable_modules and common_variables.ctx.attr.module_map == None:
diff --git a/src/test/java/com/google/devtools/build/lib/rules/cpp/CppConfigurationStarlarkTest.java b/src/test/java/com/google/devtools/build/lib/rules/cpp/CppConfigurationStarlarkTest.java
index 83056c3..ed49e4f 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/cpp/CppConfigurationStarlarkTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/cpp/CppConfigurationStarlarkTest.java
@@ -76,16 +76,6 @@
   }
 
   @Test
-  public void testObjcopts() throws Exception {
-    writeRuleReturning("ctx.fragments.cpp.objccopts");
-    useConfiguration("--objccopt=-wololoo");
-
-    @SuppressWarnings("unchecked")
-    Sequence<String> result = (Sequence<String>) getConfiguredTarget("//foo:bar").get("result");
-    assertThat(result).containsExactly("-wololoo");
-  }
-
-  @Test
   public void testLinkopts() throws Exception {
     writeRuleReturning("ctx.fragments.cpp.linkopts");
     useConfiguration("--linkopt=-wololoo");
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 1812dd3..21b57cb 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
@@ -233,46 +233,6 @@
   }
 
   @Test
-  public void testObjcSourceContainsObjccopt() throws Exception {
-    useConfiguration("--objccopt=--xyzzy");
-    scratch.file("objc/a.m");
-    scratch.file("objc/BUILD", RULE_TYPE.target(scratch, "objc", "lib", "srcs", "['a.m']"));
-
-    CommandAction compileActionA = compileAction("//objc:lib", "a.o");
-    assertThat(compileActionA.getArguments()).contains("--xyzzy");
-  }
-
-  @Test
-  public void testObjcppSourceContainsObjccopt() throws Exception {
-    useConfiguration("--objccopt=--xyzzy");
-    scratch.file("objc/a.mm");
-    scratch.file("objc/BUILD", RULE_TYPE.target(scratch, "objc", "lib", "srcs", "['a.mm']"));
-
-    CommandAction compileActionA = compileAction("//objc:lib", "a.o");
-    assertThat(compileActionA.getArguments()).contains("--xyzzy");
-  }
-
-  @Test
-  public void testCSourceDoesNotContainObjccopt() throws Exception {
-    useConfiguration("--objccopt=--xyzzy");
-    scratch.file("objc/a.c");
-    scratch.file("objc/BUILD", RULE_TYPE.target(scratch, "objc", "lib", "srcs", "['a.c']"));
-
-    CommandAction compileActionA = compileAction("//objc:lib", "a.o");
-    assertThat(compileActionA.getArguments()).doesNotContain("--xyzzy");
-  }
-
-  @Test
-  public void testCppSourceDoesNotContainObjccopt() throws Exception {
-    useConfiguration("--objccopt=--xyzzy");
-    scratch.file("objc/a.cc");
-    scratch.file("objc/BUILD", RULE_TYPE.target(scratch, "objc", "lib", "srcs", "['a.cc']"));
-
-    CommandAction compileActionA = compileAction("//objc:lib", "a.o");
-    assertThat(compileActionA.getArguments()).doesNotContain("--xyzzy");
-  }
-
-  @Test
   public void testCompilationModeDbg() throws Exception {
     useConfiguration(
         "--cpu=ios_i386",