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

Unified Diff: tools/gn/scope_per_file_provider.cc

Issue 80463004: GN generator for GYP actions (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 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
« no previous file with comments | « tools/gn/scope_per_file_provider.h ('k') | tools/gn/source_dir.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tools/gn/scope_per_file_provider.cc
diff --git a/tools/gn/scope_per_file_provider.cc b/tools/gn/scope_per_file_provider.cc
index c2fdd3eef6cfbc3a5b559bf42af51c702dce5396..c6a0cd7f635b6d799709379c4139090eecbd44b3 100644
--- a/tools/gn/scope_per_file_provider.cc
+++ b/tools/gn/scope_per_file_provider.cc
@@ -66,8 +66,8 @@ const Value* ScopePerFileProvider::GetPythonPath() {
const Value* ScopePerFileProvider::GetRootBuildDir() {
if (!root_build_dir_) {
- root_build_dir_.reset(new Value(NULL,
- "/" + GetRootOutputDirWithNoLastSlash(scope_->settings())));
+ root_build_dir_.reset(new Value(NULL, DirectoryWithNoLastSlash(
+ scope_->settings()->build_settings()->build_dir())));
}
return root_build_dir_.get();
}
@@ -75,7 +75,7 @@ const Value* ScopePerFileProvider::GetRootBuildDir() {
const Value* ScopePerFileProvider::GetRootGenDir() {
if (!root_gen_dir_) {
root_gen_dir_.reset(new Value(NULL,
- "/" + GetToolchainGenDirWithNoLastSlash(scope_->settings())));
+ DirectoryWithNoLastSlash(GetToolchainGenDir(scope_->settings()))));
}
return root_gen_dir_.get();
}
@@ -83,7 +83,7 @@ const Value* ScopePerFileProvider::GetRootGenDir() {
const Value* ScopePerFileProvider::GetRootOutDir() {
if (!root_out_dir_) {
root_out_dir_.reset(new Value(NULL,
- "/" + GetToolchainOutputDirWithNoLastSlash(scope_->settings())));
+ DirectoryWithNoLastSlash(GetToolchainOutputDir(scope_->settings()))));
}
return root_out_dir_.get();
}
@@ -91,9 +91,7 @@ const Value* ScopePerFileProvider::GetRootOutDir() {
const Value* ScopePerFileProvider::GetTargetGenDir() {
if (!target_gen_dir_) {
target_gen_dir_.reset(new Value(NULL,
- "/" +
- GetToolchainGenDirWithNoLastSlash(scope_->settings()) +
- GetFileDirWithNoLastSlash()));
+ DirectoryWithNoLastSlash(GetCurrentGenDir(scope_))));
}
return target_gen_dir_.get();
}
@@ -101,61 +99,7 @@ const Value* ScopePerFileProvider::GetTargetGenDir() {
const Value* ScopePerFileProvider::GetTargetOutDir() {
if (!target_out_dir_) {
target_out_dir_.reset(new Value(NULL,
- "/" +
- GetToolchainOutputDirWithNoLastSlash(scope_->settings()) + "/obj" +
- GetFileDirWithNoLastSlash()));
+ DirectoryWithNoLastSlash(GetCurrentOutputDir(scope_))));
}
return target_out_dir_.get();
}
-
-// static
-std::string ScopePerFileProvider::GetRootOutputDirWithNoLastSlash(
- const Settings* settings) {
- const std::string& output_dir =
- settings->build_settings()->build_dir().value();
-
- if (output_dir == "//")
- return "//.";
-
- // Trim off a leading and trailing slash. So "//foo/bar/" -> /foo/bar".
- DCHECK(output_dir.size() > 2 && output_dir[0] == '/' &&
- output_dir[output_dir.size() - 1] == '/');
- return output_dir.substr(1, output_dir.size() - 2);
-}
-
-// static
-std::string ScopePerFileProvider::GetToolchainOutputDirWithNoLastSlash(
- const Settings* settings) {
- const OutputFile& toolchain_subdir = settings->toolchain_output_subdir();
-
- std::string result;
- if (toolchain_subdir.value().empty()) {
- result = GetRootOutputDirWithNoLastSlash(settings);
- } else {
- // The toolchain subdir ends in a slash, trim it.
- result = GetRootOutputDirWithNoLastSlash(settings) + "/" +
- toolchain_subdir.value();
- DCHECK(toolchain_subdir.value()[toolchain_subdir.value().size() - 1] ==
- '/');
- result.resize(result.size() - 1);
- }
- return result;
-}
-
-// static
-std::string ScopePerFileProvider::GetToolchainGenDirWithNoLastSlash(
- const Settings* settings) {
- return GetToolchainOutputDirWithNoLastSlash(settings) + "/gen";
-}
-
-std::string ScopePerFileProvider::GetFileDirWithNoLastSlash() const {
- const std::string& dir_value = scope_->GetSourceDir().value();
-
- if (dir_value == "//")
- return "//.";
-
- // Trim off a leading and trailing slash. So "//foo/bar/" -> /foo/bar".
- DCHECK(dir_value.size() > 2 && dir_value[0] == '/' &&
- dir_value[dir_value.size() - 1] == '/');
- return dir_value.substr(1, dir_value.size() - 2);
-}
« no previous file with comments | « tools/gn/scope_per_file_provider.h ('k') | tools/gn/source_dir.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698