aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CppConfiguration.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CppHelper.java71
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CppOptions.java9
-rw-r--r--src/test/java/com/google/devtools/build/lib/rules/cpp/CcCommonTest.java21
-rw-r--r--src/test/java/com/google/devtools/build/lib/rules/cpp/CcLibraryConfiguredTargetTest.java20
5 files changed, 2 insertions, 123 deletions
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 82a4ae7176..b809ed5d30 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
@@ -974,10 +974,6 @@ public final class CppConfiguration extends BuildConfiguration.Fragment
return cppOptions.useInterfaceSharedObjects;
}
- public boolean getExpandLinkoptsLabels() {
- return cppOptions.expandLinkoptsLabels;
- }
-
public boolean getEnableCcSkylarkApi() {
return cppOptions.enableCcSkylarkApi;
}
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 ce5eef15f5..eca2691bb8 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
@@ -34,7 +34,6 @@ import com.google.devtools.build.lib.actions.ParamFileInfo;
import com.google.devtools.build.lib.actions.ParameterFile;
import com.google.devtools.build.lib.analysis.AnalysisUtils;
import com.google.devtools.build.lib.analysis.Expander;
-import com.google.devtools.build.lib.analysis.FileProvider;
import com.google.devtools.build.lib.analysis.PlatformConfiguration;
import com.google.devtools.build.lib.analysis.RuleConfiguredTargetBuilder;
import com.google.devtools.build.lib.analysis.RuleContext;
@@ -52,7 +51,6 @@ import com.google.devtools.build.lib.analysis.config.InvalidConfigurationExcepti
import com.google.devtools.build.lib.analysis.configuredtargets.RuleConfiguredTarget.Mode;
import com.google.devtools.build.lib.analysis.platform.ToolchainInfo;
import com.google.devtools.build.lib.cmdline.Label;
-import com.google.devtools.build.lib.cmdline.LabelSyntaxException;
import com.google.devtools.build.lib.collect.nestedset.NestedSet;
import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
import com.google.devtools.build.lib.collect.nestedset.Order;
@@ -96,9 +94,6 @@ public class CppHelper {
CppFileTypes.CPP_HEADER,
CppFileTypes.CPP_SOURCE);
- private static final ImmutableList<String> LINKOPTS_PREREQUISITE_LABEL_KINDS =
- ImmutableList.of("deps", "srcs");
-
/** Base label of the c++ toolchain category. */
public static final String TOOLCHAIN_TYPE_LABEL = "//tools/cpp:toolchain_type";
@@ -189,28 +184,13 @@ public class CppHelper {
return ImmutableList.copyOf(expandMakeVariables(ruleContext, "copts", unexpanded));
}
- /**
- * Expands attribute value either using label expansion
- * (if attemptLabelExpansion == {@code true} and it does not look like make
- * variable or flag) or tokenizes and expands make variables.
- */
+ /** Tokenizes and expands make variables. */
public static List<String> expandLinkopts(
RuleContext ruleContext, String attrName, Iterable<String> values) {
List<String> result = new ArrayList<>();
Expander expander = ruleContext.getExpander().withDataExecLocations();
for (String value : values) {
- if (ruleContext.getFragment(CppConfiguration.class).getExpandLinkoptsLabels()
- && isLinkoptLabel(value)) {
- if (!expandLabel(ruleContext, result, value)) {
- ruleContext.attributeError(attrName, "could not resolve label '" + value + "'");
- }
- } else {
- expander
- .tokenizeAndExpandMakeVars(
- result,
- attrName,
- value);
- }
+ expander.tokenizeAndExpandMakeVars(result, attrName, value);
}
return result;
}
@@ -277,53 +257,6 @@ public class CppHelper {
}
/**
- * Determines if a linkopt can be a label. Linkopts come in 2 varieties:
- * literals -- flags like -Xl and makefile vars like $(LD) -- and labels,
- * which we should expand into filenames.
- *
- * @param linkopt the link option to test.
- * @return true if the linkopt is not a flag (starting with "-") or a makefile
- * variable (starting with "$");
- */
- private static boolean isLinkoptLabel(String linkopt) {
- return !linkopt.startsWith("$") && !linkopt.startsWith("-");
- }
-
- /**
- * Expands a label against the target's deps, adding the expanded path strings
- * to the linkopts.
- *
- * @param linkopts the linkopts to add the expanded label to
- * @param labelName the name of the label to expand
- * @return true if the label was expanded successfully, false otherwise
- */
- private static boolean expandLabel(
- RuleContext ruleContext, List<String> linkopts, String labelName) {
- try {
- Label label =
- ruleContext
- .getLabel()
- .getRelativeWithRemapping(
- labelName, ruleContext.getRule().getPackage().getRepositoryMapping());
- for (String prereqKind : LINKOPTS_PREREQUISITE_LABEL_KINDS) {
- for (TransitiveInfoCollection target : ruleContext
- .getPrerequisitesIf(prereqKind, Mode.TARGET, FileProvider.class)) {
- if (target.getLabel().equals(label)) {
- for (Artifact artifact : target.getProvider(FileProvider.class).getFilesToBuild()) {
- linkopts.add(artifact.getExecPathString());
- }
- return true;
- }
- }
- }
- } catch (LabelSyntaxException e) {
- // Quietly ignore and fall through.
- }
- linkopts.add(labelName);
- return false;
- }
-
- /**
* Return {@link FdoSupportProvider} using default cc_toolchain attribute name.
*
* <p>Be careful to provide explicit attribute name if the rule doesn't store cc_toolchain under
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 b5616f0890..49a11a16f4 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
@@ -773,15 +773,6 @@ public class CppOptions extends FragmentOptions {
public boolean useLLVMCoverageMapFormat;
@Option(
- name = "experimental_expand_linkopts_labels",
- defaultValue = "true",
- documentationCategory = OptionDocumentationCategory.UNDOCUMENTED,
- effectTags = {OptionEffectTag.LOADING_AND_ANALYSIS},
- metadataTags = {OptionMetadataTag.EXPERIMENTAL},
- help = "If true, entries in linkopts that are not preceded by - or $ will be expanded.")
- public boolean expandLinkoptsLabels;
-
- @Option(
name = "incompatible_enable_legacy_cpp_toolchain_skylark_api",
defaultValue = "true",
documentationCategory = OptionDocumentationCategory.UNDOCUMENTED,
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 0ea347a0dd..54462ad0fe 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
@@ -646,27 +646,6 @@ public class CcCommonTest extends BuildViewTestCase {
}
@Test
- public void testMissingLabelInLinkopts() throws Exception {
- scratch.file(
- "linklow/BUILD",
- "genrule(name = 'linklow_linker_script',",
- " srcs = [ 'default_linker_script' ],",
- " tools = [ 'default_linker_script' ],",
- " outs = [ 'linklow.lds' ],",
- " cmd = 'cat $< > $@')");
- checkError(
- "ocean/scoring2",
- "ms-ascorer",
- // error:
- "could not resolve label '//linklow:linklow_linker_script'",
- "cc_binary(name = 'ms-ascorer',",
- " srcs = [ ],",
- " deps = [ ':ascorer-servlet'],",
- " linkopts = [ '-static', '-Xlinker', '-script', '//linklow:linklow_linker_script'])",
- "cc_library(name = 'ascorer-servlet')");
- }
-
- @Test
public void testCcLibraryWithDashStatic() throws Exception {
checkWarning(
"badlib",
diff --git a/src/test/java/com/google/devtools/build/lib/rules/cpp/CcLibraryConfiguredTargetTest.java b/src/test/java/com/google/devtools/build/lib/rules/cpp/CcLibraryConfiguredTargetTest.java
index b3c23cd370..f630f34f41 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/cpp/CcLibraryConfiguredTargetTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/cpp/CcLibraryConfiguredTargetTest.java
@@ -1489,24 +1489,4 @@ public class CcLibraryConfiguredTargetTest extends BuildViewTestCase {
useConfiguration("--experimental_stl=//a:stl");
getConfiguredTarget("//a:a");
}
-
- @Test
- public void testNoExpandLinkoptsLabels() throws Exception {
- useConfiguration("--noexperimental_expand_linkopts_labels");
- scratchConfiguredTarget(
- "b", "b", "cc_library(", " name = 'b',", " linkopts=['//foo/bar'])");
- assertNoEvents();
- }
-
- @Test
- public void testExpandLinkoptsLabels() throws Exception {
- useConfiguration("--experimental_expand_linkopts_labels");
- checkError(
- "b",
- "b",
- "could not resolve label",
- "cc_library(",
- " name = 'b',",
- " linkopts=['//foo/bar'])");
- }
}