From a00b8b51926c67d572b9a1d28560669b80b7afc6 Mon Sep 17 00:00:00 2001 From: Googler Date: Fri, 25 Sep 2015 15:43:51 +0000 Subject: Resolve labels in linkopts against either 'deps' or 'srcs' RELNOTES[NEW]: labels in "linkopts" may match any label in either "deps" or "srcs" to be considered valid. -- MOS_MIGRATED_REVID=103945104 --- .../google/devtools/build/lib/rules/cpp/CppHelper.java | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) (limited to 'src/main/java/com/google/devtools/build/lib/rules') 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 1e0641ce44..09464b17ed 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 @@ -68,6 +68,9 @@ public class CppHelper { CppFileTypes.CPP_HEADER, CppFileTypes.CPP_SOURCE); + private static final ImmutableList LINKOPTS_PREREQUISITE_LABEL_KINDS = + ImmutableList.of("deps", "srcs"); + private CppHelper() { // prevents construction } @@ -190,13 +193,15 @@ public class CppHelper { String labelName) { try { Label label = ruleContext.getLabel().getRelative(labelName); - for (FileProvider target : ruleContext - .getPrerequisites("deps", Mode.TARGET, FileProvider.class)) { - if (target.getLabel().equals(label)) { - for (Artifact artifact : target.getFilesToBuild()) { - linkopts.add(artifact.getExecPathString()); + for (String prereqKind : LINKOPTS_PREREQUISITE_LABEL_KINDS) { + for (FileProvider target : ruleContext + .getPrerequisites(prereqKind, Mode.TARGET, FileProvider.class)) { + if (target.getLabel().equals(label)) { + for (Artifact artifact : target.getFilesToBuild()) { + linkopts.add(artifact.getExecPathString()); + } + return true; } - return true; } } } catch (LabelSyntaxException e) { -- cgit v1.2.3