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",