aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/rules
diff options
context:
space:
mode:
authorGravatar Googler <noreply@google.com>2015-09-25 15:43:51 +0000
committerGravatar Han-Wen Nienhuys <hanwen@google.com>2015-09-28 11:39:12 +0000
commita00b8b51926c67d572b9a1d28560669b80b7afc6 (patch)
tree2bbb51cd3d9e91294087ec10328f772b216f4088 /src/main/java/com/google/devtools/build/lib/rules
parentd0d785c6cc2e8073bd359862cb46e63a9bd4544a (diff)
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
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/rules')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CppHelper.java17
1 files changed, 11 insertions, 6 deletions
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<String> 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) {