aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CppHelper.java10
1 files changed, 9 insertions, 1 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 91013a9bbc..69f212bff7 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
@@ -585,8 +585,16 @@ public class CppHelper {
private static Artifact getIncludesOutput(RuleContext ruleContext, Artifact src) {
Preconditions.checkArgument(!src.isSourceArtifact(), src);
+ PathFragment pkgPath = ruleContext.getLabel().getPackageFragment();
+ PathFragment fileName = src.getRootRelativePath();
+ if (fileName.startsWith(pkgPath)) {
+ // In most cases actions grep the includes of files that they create and that are located
+ // within their own package. In this case, don't duplicate the package path underneath the
+ // actions genfiles directory.
+ fileName = fileName.relativeTo(pkgPath);
+ }
return ruleContext.getGenfilesArtifact(
- src.getRootRelativePath().replaceName(src.getFilename() + GREPPED_INCLUDES_SUFFIX));
+ fileName.replaceName(src.getFilename() + GREPPED_INCLUDES_SUFFIX));
}
/**