aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build
diff options
context:
space:
mode:
authorGravatar Kristina Chodorow <kchodorow@google.com>2015-11-11 17:24:14 +0000
committerGravatar Laszlo Csomor <laszlocsomor@google.com>2015-11-12 09:00:15 +0000
commitd4c953f1a987ecde294a586c5c09955d87473100 (patch)
tree1c0ed4a5fd30c5e43f41c93412a2d96d8582385d /src/main/java/com/google/devtools/build
parent3c0af3d90df4e8c3dc1ae8ac2189adb4a019a129 (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.java7
-rw-r--r--src/main/java/com/google/devtools/build/lib/vfs/PathFragment.java3
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);