Index: tools/gn/label.cc |
diff --git a/tools/gn/label.cc b/tools/gn/label.cc |
index f672a3a23c2f5265f7b50ee63f44b6a3bc04d8b9..957ffddabe72aae4c9cc7697c4e3867898060afb 100644 |
--- a/tools/gn/label.cc |
+++ b/tools/gn/label.cc |
@@ -28,6 +28,7 @@ bool ComputeBuildLocationFromDep(const Value& input_value, |
const SourceDir& current_dir, |
const base::StringPiece& input, |
SourceDir* result, |
+ const base::FilePath& source_root, |
Err* err) { |
// No rule, use the current locaton. |
if (input.empty()) { |
@@ -44,7 +45,7 @@ bool ComputeBuildLocationFromDep(const Value& input_value, |
return false; |
} |
- *result = current_dir.ResolveRelativeDir(input); |
+ *result = current_dir.ResolveRelativeDir(input, source_root); |
return true; |
} |
@@ -99,6 +100,7 @@ bool Resolve(const SourceDir& current_dir, |
std::string* out_name, |
SourceDir* out_toolchain_dir, |
std::string* out_toolchain_name, |
+ const base::FilePath& source_root, |
Err* err) { |
// To workaround the problem that StringPiece operator[] doesn't return a ref. |
const char* input_str = input.data(); |
@@ -160,7 +162,7 @@ bool Resolve(const SourceDir& current_dir, |
} |
if (!ComputeBuildLocationFromDep(original_value, current_dir, location_piece, |
- out_dir, err)) |
+ out_dir, source_root, err)) |
return false; |
if (!ComputeTargetNameFromDep(original_value, *out_dir, name_piece, |
@@ -179,7 +181,8 @@ bool Resolve(const SourceDir& current_dir, |
} else { |
return Resolve(current_dir, current_toolchain, |
original_value, toolchain_piece, |
- out_toolchain_dir, out_toolchain_name, NULL, NULL, err); |
+ out_toolchain_dir, out_toolchain_name, NULL, NULL, |
+ source_root, err); |
} |
} |
return true; |
@@ -212,6 +215,7 @@ Label::~Label() { |
Label Label::Resolve(const SourceDir& current_dir, |
const Label& current_toolchain, |
const Value& input, |
+ const base::FilePath& source_root, |
Err* err) { |
Label ret; |
if (input.type() != Value::STRING) { |
@@ -227,7 +231,7 @@ Label Label::Resolve(const SourceDir& current_dir, |
if (!::Resolve(current_dir, current_toolchain, input, input_string, |
&ret.dir_, &ret.name_, |
&ret.toolchain_dir_, &ret.toolchain_name_, |
- err)) |
+ source_root, err)) |
return Label(); |
return ret; |
} |