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

Side by Side Diff: tools/gn/build_settings.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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "tools/gn/build_settings.h" 5 #include "tools/gn/build_settings.h"
6 6
7 #include "base/files/file_util.h" 7 #include "base/files/file_util.h"
8 #include "tools/gn/filesystem_utils.h" 8 #include "tools/gn/filesystem_utils.h"
9 9
10 BuildSettings::BuildSettings() { 10 BuildSettings::BuildSettings() {
11 } 11 }
12 12
13 BuildSettings::BuildSettings(const BuildSettings& other) 13 BuildSettings::BuildSettings(const BuildSettings& other)
14 : root_path_(other.root_path_), 14 : root_path_(other.root_path_),
15 root_path_utf8_(other.root_path_utf8_), 15 root_path_utf8_(other.root_path_utf8_),
16 secondary_source_path_(other.secondary_source_path_), 16 secondary_source_path_(other.secondary_source_path_),
17 python_path_(other.python_path_), 17 python_path_(other.python_path_),
18 build_config_file_(other.build_config_file_), 18 build_config_file_(other.build_config_file_),
19 build_dir_(other.build_dir_), 19 build_dir_(other.build_dir_),
20 build_to_source_dir_string_(other.build_to_source_dir_string_),
21 build_args_(other.build_args_) { 20 build_args_(other.build_args_) {
22 } 21 }
23 22
24 BuildSettings::~BuildSettings() { 23 BuildSettings::~BuildSettings() {
25 } 24 }
26 25
27 void BuildSettings::SetRootPath(const base::FilePath& r) { 26 void BuildSettings::SetRootPath(const base::FilePath& r) {
28 DCHECK(r.value()[r.value().size() - 1] != base::FilePath::kSeparators[0]); 27 DCHECK(r.value()[r.value().size() - 1] != base::FilePath::kSeparators[0]);
29 root_path_ = r.NormalizePathSeparatorsTo('/'); 28 root_path_ = r.NormalizePathSeparatorsTo('/');
30 root_path_utf8_ = FilePathToUTF8(root_path_); 29 root_path_utf8_ = FilePathToUTF8(root_path_);
31 } 30 }
32 31
33 void BuildSettings::SetSecondarySourcePath(const SourceDir& d) { 32 void BuildSettings::SetSecondarySourcePath(const SourceDir& d) {
34 secondary_source_path_ = GetFullPath(d).NormalizePathSeparatorsTo('/'); 33 secondary_source_path_ = GetFullPath(d).NormalizePathSeparatorsTo('/');
35 } 34 }
36 35
37 void BuildSettings::SetBuildDir(const SourceDir& d) { 36 void BuildSettings::SetBuildDir(const SourceDir& d) {
38 build_dir_ = d; 37 build_dir_ = d;
39 build_to_source_dir_string_ = InvertDir(d);
40 } 38 }
41 39
42 base::FilePath BuildSettings::GetFullPath(const SourceFile& file) const { 40 base::FilePath BuildSettings::GetFullPath(const SourceFile& file) const {
43 return file.Resolve(root_path_).NormalizePathSeparatorsTo('/'); 41 return file.Resolve(root_path_).NormalizePathSeparatorsTo('/');
44 } 42 }
45 43
46 base::FilePath BuildSettings::GetFullPath(const SourceDir& dir) const { 44 base::FilePath BuildSettings::GetFullPath(const SourceDir& dir) const {
47 return dir.Resolve(root_path_).NormalizePathSeparatorsTo('/'); 45 return dir.Resolve(root_path_).NormalizePathSeparatorsTo('/');
48 } 46 }
49 47
50 base::FilePath BuildSettings::GetFullPathSecondary( 48 base::FilePath BuildSettings::GetFullPathSecondary(
51 const SourceFile& file) const { 49 const SourceFile& file) const {
52 return file.Resolve(secondary_source_path_).NormalizePathSeparatorsTo('/'); 50 return file.Resolve(secondary_source_path_).NormalizePathSeparatorsTo('/');
53 } 51 }
54 52
55 base::FilePath BuildSettings::GetFullPathSecondary( 53 base::FilePath BuildSettings::GetFullPathSecondary(
56 const SourceDir& dir) const { 54 const SourceDir& dir) const {
57 return dir.Resolve(secondary_source_path_).NormalizePathSeparatorsTo('/'); 55 return dir.Resolve(secondary_source_path_).NormalizePathSeparatorsTo('/');
58 } 56 }
59 57
60 void BuildSettings::ItemDefined(scoped_ptr<Item> item) const { 58 void BuildSettings::ItemDefined(scoped_ptr<Item> item) const {
61 DCHECK(item); 59 DCHECK(item);
62 if (!item_defined_callback_.is_null()) 60 if (!item_defined_callback_.is_null())
63 item_defined_callback_.Run(item.Pass()); 61 item_defined_callback_.Run(item.Pass());
64 } 62 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698