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
3 // found in the LICENSE file.
5 #include "tools/gn/build_settings.h"
7 #include "base/files/file_util.h"
8 #include "tools/gn/filesystem_utils.h"
10 BuildSettings::BuildSettings() {
13 BuildSettings::BuildSettings(const BuildSettings
& other
)
14 : root_path_(other
.root_path_
),
15 root_path_utf8_(other
.root_path_utf8_
),
16 secondary_source_path_(other
.secondary_source_path_
),
17 python_path_(other
.python_path_
),
18 build_config_file_(other
.build_config_file_
),
19 build_dir_(other
.build_dir_
),
20 build_to_source_dir_string_(other
.build_to_source_dir_string_
),
21 build_args_(other
.build_args_
) {
24 BuildSettings::~BuildSettings() {
27 void BuildSettings::SetRootPath(const base::FilePath
& r
) {
28 DCHECK(r
.value()[r
.value().size() - 1] != base::FilePath::kSeparators
[0]);
29 root_path_
= r
.NormalizePathSeparatorsTo('/');
30 root_path_utf8_
= FilePathToUTF8(root_path_
);
33 void BuildSettings::SetSecondarySourcePath(const SourceDir
& d
) {
34 secondary_source_path_
= GetFullPath(d
).NormalizePathSeparatorsTo('/');
37 void BuildSettings::SetBuildDir(const SourceDir
& d
) {
39 build_to_source_dir_string_
= InvertDir(d
);
42 base::FilePath
BuildSettings::GetFullPath(const SourceFile
& file
) const {
43 return file
.Resolve(root_path_
).NormalizePathSeparatorsTo('/');
46 base::FilePath
BuildSettings::GetFullPath(const SourceDir
& dir
) const {
47 return dir
.Resolve(root_path_
).NormalizePathSeparatorsTo('/');
50 base::FilePath
BuildSettings::GetFullPathSecondary(
51 const SourceFile
& file
) const {
52 return file
.Resolve(secondary_source_path_
).NormalizePathSeparatorsTo('/');
55 base::FilePath
BuildSettings::GetFullPathSecondary(
56 const SourceDir
& dir
) const {
57 return dir
.Resolve(secondary_source_path_
).NormalizePathSeparatorsTo('/');
60 void BuildSettings::ItemDefined(scoped_ptr
<Item
> item
) const {
62 if (!item_defined_callback_
.is_null())
63 item_defined_callback_
.Run(item
.Pass());