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