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. 4 5 #include "tools/gn/build_settings.h" 6 7 #include "base/file_util.h" 8 #include "tools/gn/filesystem_utils.h" 9 BuildSettings()10BuildSettings::BuildSettings() { 11 } 12 BuildSettings(const BuildSettings & other)13BuildSettings::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_) { 22 } 23 ~BuildSettings()24BuildSettings::~BuildSettings() { 25 } 26 SetRootPath(const base::FilePath & r)27void BuildSettings::SetRootPath(const base::FilePath& r) { 28 DCHECK(r.value()[r.value().size() - 1] != base::FilePath::kSeparators[0]); 29 root_path_ = r; 30 root_path_utf8_ = FilePathToUTF8(root_path_); 31 } 32 SetSecondarySourcePath(const SourceDir & d)33void BuildSettings::SetSecondarySourcePath(const SourceDir& d) { 34 secondary_source_path_ = GetFullPath(d); 35 } 36 SetBuildDir(const SourceDir & d)37void BuildSettings::SetBuildDir(const SourceDir& d) { 38 build_dir_ = d; 39 build_to_source_dir_string_ = InvertDir(d); 40 } 41 GetFullPath(const SourceFile & file) const42base::FilePath BuildSettings::GetFullPath(const SourceFile& file) const { 43 return file.Resolve(root_path_); 44 } 45 GetFullPath(const SourceDir & dir) const46base::FilePath BuildSettings::GetFullPath(const SourceDir& dir) const { 47 return dir.Resolve(root_path_); 48 } 49 GetFullPathSecondary(const SourceFile & file) const50base::FilePath BuildSettings::GetFullPathSecondary( 51 const SourceFile& file) const { 52 return file.Resolve(secondary_source_path_); 53 } 54 GetFullPathSecondary(const SourceDir & dir) const55base::FilePath BuildSettings::GetFullPathSecondary( 56 const SourceDir& dir) const { 57 return dir.Resolve(secondary_source_path_); 58 } 59 ItemDefined(scoped_ptr<Item> item) const60void BuildSettings::ItemDefined(scoped_ptr<Item> item) const { 61 DCHECK(item); 62 if (!item_defined_callback_.is_null()) 63 item_defined_callback_.Run(item.Pass()); 64 } 65