diff options
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/rules/cpp/CppHelper.java | 10 |
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)); } /** |