diff options
author | 2015-11-11 17:24:14 +0000 | |
---|---|---|
committer | 2015-11-12 09:00:15 +0000 | |
commit | d4c953f1a987ecde294a586c5c09955d87473100 (patch) | |
tree | 1c0ed4a5fd30c5e43f41c93412a2d96d8582385d /src/main/java/com/google/devtools/build | |
parent | 3c0af3d90df4e8c3dc1ae8ac2189adb4a019a129 (diff) |
C++ libraries in remote repos don't need to set include paths
Fixes #445, based on https://github.com/bazelbuild/bazel/compare/master...ulfjack:cpp-include-path.
RELNOTES: C++ libraries no longer need includes = ["."] (or similar copts) to include paths relative to a remote repository's root.
--
MOS_MIGRATED_REVID=107593486
Diffstat (limited to 'src/main/java/com/google/devtools/build')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/rules/cpp/CcLibraryHelper.java | 7 | ||||
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/vfs/PathFragment.java | 3 |
2 files changed, 8 insertions, 2 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLibraryHelper.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLibraryHelper.java index 0b5fb442cd..cce02514eb 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLibraryHelper.java +++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLibraryHelper.java @@ -743,8 +743,11 @@ public final class CcLibraryHelper { // generated files. It is important that the execRoot (EMPTY_FRAGMENT) comes // before the genfilesFragment to preferably pick up source files. Otherwise // we might pick up stale generated files. - contextBuilder.addQuoteIncludeDir(PathFragment.EMPTY_FRAGMENT); - contextBuilder.addQuoteIncludeDir(ruleContext.getConfiguration().getGenfilesFragment()); + PathFragment repositoryPath = + ruleContext.getLabel().getPackageIdentifier().getRepository().getPathFragment(); + contextBuilder.addQuoteIncludeDir(repositoryPath); + contextBuilder.addQuoteIncludeDir( + ruleContext.getConfiguration().getGenfilesFragment().getRelative(repositoryPath)); for (PathFragment systemIncludeDir : systemIncludeDirs) { contextBuilder.addSystemIncludeDir(systemIncludeDir); diff --git a/src/main/java/com/google/devtools/build/lib/vfs/PathFragment.java b/src/main/java/com/google/devtools/build/lib/vfs/PathFragment.java index 434cdcfc2c..97221abf6f 100644 --- a/src/main/java/com/google/devtools/build/lib/vfs/PathFragment.java +++ b/src/main/java/com/google/devtools/build/lib/vfs/PathFragment.java @@ -379,6 +379,9 @@ public final class PathFragment implements Comparable<PathFragment>, Serializabl * with no path normalization or I/O performed. */ public PathFragment getRelative(PathFragment otherFragment) { + if (otherFragment == EMPTY_FRAGMENT) { + return this; + } return otherFragment.isAbsolute() ? otherFragment : new PathFragment(this, otherFragment); |