diff options
Diffstat (limited to 'src')
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'])"); - } } |