Home | History | Annotate | Download | only in gn
      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/files/file_util.h"
      8 #include "tools/gn/filesystem_utils.h"
      9 
     10 BuildSettings::BuildSettings() {
     11 }
     12 
     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_) {
     22 }
     23 
     24 BuildSettings::~BuildSettings() {
     25 }
     26 
     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_);
     31 }
     32 
     33 void BuildSettings::SetSecondarySourcePath(const SourceDir& d) {
     34   secondary_source_path_ = GetFullPath(d).NormalizePathSeparatorsTo('/');
     35 }
     36 
     37 void BuildSettings::SetBuildDir(const SourceDir& d) {
     38   build_dir_ = d;
     39   build_to_source_dir_string_ = InvertDir(d);
     40 }
     41 
     42 base::FilePath BuildSettings::GetFullPath(const SourceFile& file) const {
     43   return file.Resolve(root_path_).NormalizePathSeparatorsTo('/');
     44 }
     45 
     46 base::FilePath BuildSettings::GetFullPath(const SourceDir& dir) const {
     47   return dir.Resolve(root_path_).NormalizePathSeparatorsTo('/');
     48 }
     49 
     50 base::FilePath BuildSettings::GetFullPathSecondary(
     51     const SourceFile& file) const {
     52   return file.Resolve(secondary_source_path_).NormalizePathSeparatorsTo('/');
     53 }
     54 
     55 base::FilePath BuildSettings::GetFullPathSecondary(
     56     const SourceDir& dir) const {
     57   return dir.Resolve(secondary_source_path_).NormalizePathSeparatorsTo('/');
     58 }
     59 
     60 void 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