Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(88)

Unified Diff: tools/gn/function_get_path_info.cc

Issue 630223002: gn: Support build directories outside the source tree. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Updated patch set Created 6 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: tools/gn/function_get_path_info.cc
diff --git a/tools/gn/function_get_path_info.cc b/tools/gn/function_get_path_info.cc
index 67f934427c91a025e16d1dd0f7be620670761916..a3f2c109301c120ddf01f4a7c4f7da45b2660db2 100644
--- a/tools/gn/function_get_path_info.cc
+++ b/tools/gn/function_get_path_info.cc
@@ -26,15 +26,18 @@ enum What {
// Returns the directory containing the input (resolving it against the
// |current_dir|), regardless of whether the input is a directory or a file.
-SourceDir DirForInput(const SourceDir& current_dir,
+SourceDir DirForInput(const Settings* settings,
+ const SourceDir& current_dir,
const std::string& input_string) {
if (!input_string.empty() && input_string[input_string.size() - 1] == '/') {
// Input is a directory.
- return current_dir.ResolveRelativeDir(input_string);
+ return current_dir.ResolveRelativeDir(input_string,
+ settings->build_settings()->root_path_utf8());
}
// Input is a directory.
- return current_dir.ResolveRelativeFile(input_string).GetDir();
+ return current_dir.ResolveRelativeFile(input_string,
+ settings->build_settings()->root_path_utf8()).GetDir();
}
std::string GetOnePathInfo(const Settings* settings,
@@ -81,18 +84,24 @@ std::string GetOnePathInfo(const Settings* settings,
case WHAT_GEN_DIR: {
return DirectoryWithNoLastSlash(
GetGenDirForSourceDir(settings,
- DirForInput(current_dir, input_string)));
+ DirForInput(settings, current_dir,
+ input_string)));
}
case WHAT_OUT_DIR: {
return DirectoryWithNoLastSlash(
GetOutputDirForSourceDir(settings,
- DirForInput(current_dir, input_string)));
+ DirForInput(settings, current_dir,
+ input_string)));
}
case WHAT_ABSPATH: {
- if (!input_string.empty() && input_string[input_string.size() - 1] == '/')
- return current_dir.ResolveRelativeDir(input_string).value();
- else
- return current_dir.ResolveRelativeFile(input_string).value();
+ if (!input_string.empty() &&
+ input_string[input_string.size() - 1] == '/') {
+ return current_dir.ResolveRelativeDir(input_string,
+ settings->build_settings()->root_path_utf8()).value();
+ } else {
+ return current_dir.ResolveRelativeFile(input_string,
+ settings->build_settings()->root_path_utf8()).value();
+ }
}
default:
NOTREACHED();

Powered by Google App Engine
This is Rietveld 408576698