C++: Remove 'coptnopic' feature
We have proved this is no longer needed after having a few releases with no
issues.
RELNOTES:none
PiperOrigin-RevId: 242119718
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppHelper.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppHelper.java
index 9451e87..c9634bf 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppHelper.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppHelper.java
@@ -470,12 +470,6 @@
CcToolchainProvider toolchain,
CppConfiguration cppConfiguration,
FeatureConfiguration featureConfiguration) {
- // TODO(b/124030770): Please do not use this feature without contacting the C++ rules team at
- // bazel-team@google.com. The feature will be removed in a later Bazel release and it might
- // break you. Contact us so we can find alternatives for your build.
- if (featureConfiguration.getRequestedFeatures().contains("coptnopic")) {
- return false;
- }
return cppConfiguration.forcePic()
|| (toolchain.usePicForDynamicLibraries(cppConfiguration, featureConfiguration)
&& cppConfiguration.getCompilationMode() != CompilationMode.OPT);
diff --git a/src/test/java/com/google/devtools/build/lib/rules/cpp/CcCommonTest.java b/src/test/java/com/google/devtools/build/lib/rules/cpp/CcCommonTest.java
index 418d37b..1d359bd 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/cpp/CcCommonTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/cpp/CcCommonTest.java
@@ -380,55 +380,6 @@
assertThat(baseNamesOf(getFilesToBuild(alwaysLink))).contains("libalways_link.lo");
}
- /**
- * Tests that nocopts= "-fPIC" takes '-fPIC' out of a compile invocation even if the crosstool
- * requires fPIC compilation (i.e. nocopts overrides crosstool settings on a rule-specific
- * basis).
- */
- @Test
- public void testNoCoptfPicOverride() throws Exception {
- getAnalysisMock()
- .ccSupport()
- .setupCcToolchainConfig(
- mockToolsConfig,
- CcToolchainConfig.builder()
- .withFeatures(CppRuleClasses.SUPPORTS_PIC, CppRuleClasses.PIC));
- // Prevent Android from trying to setup ARM crosstool by forcing it on system cpu.
- useConfiguration("--fat_apk_cpu=k8");
-
- scratch.file(
- "a/BUILD",
- "cc_binary(name = 'pic',",
- " srcs = [ 'binary.cc' ])",
- "cc_binary(name = 'libpic.so',",
- " srcs = [ 'binary.cc' ])",
- "cc_library(name = 'piclib',",
- " srcs = [ 'library.cc' ])",
- "cc_binary(name = 'nopic',",
- " srcs = [ 'binary.cc' ],",
- " features = ['coptnopic'],",
- " nocopts = '-fPIC')",
- "cc_binary(name = 'libnopic.so',",
- " srcs = [ 'binary.cc' ],",
- " features = ['coptnopic'],",
- " nocopts = '-fPIC')",
- "cc_library(name = 'nopiclib',",
- " srcs = [ 'library.cc' ],",
- " features = ['coptnopic'],",
- " nocopts = '-fPIC')");
-
- assertThat(getCppCompileAction("//a:pic").getArguments()).contains("-fPIC");
- assertThat(getCppCompileAction("//a:libpic.so").getArguments()).contains("-fPIC");
- assertThat(getCppCompileAction("//a:piclib").getArguments()).contains("-fPIC");
- assertThat(getCppCompileAction("//a:piclib").getOutputFile().getFilename())
- .contains("library.pic.o");
- assertThat(getCppCompileAction("//a:nopic").getArguments()).doesNotContain("-fPIC");
- assertThat(getCppCompileAction("//a:libnopic.so").getArguments()).doesNotContain("-fPIC");
- assertThat(getCppCompileAction("//a:nopiclib").getArguments()).doesNotContain("-fPIC");
- assertThat(getCppCompileAction("//a:nopiclib").getOutputFile().getFilename())
- .contains("library.o");
- }
-
@Test
public void testPicModeAssembly() throws Exception {
AnalysisMock.get()