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

Side by Side Diff: tools/gn/settings.h

Issue 51693002: GN: toolchain threading cleanup (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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « tools/gn/scope_per_file_provider_unittest.cc ('k') | tools/gn/settings.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 #ifndef TOOLS_GN_SETTINGS_H_ 5 #ifndef TOOLS_GN_SETTINGS_H_
6 #define TOOLS_GN_SETTINGS_H_ 6 #define TOOLS_GN_SETTINGS_H_
7 7
8 #include "base/files/file_path.h" 8 #include "base/files/file_path.h"
9 #include "tools/gn/build_settings.h" 9 #include "tools/gn/build_settings.h"
10 #include "tools/gn/import_manager.h" 10 #include "tools/gn/import_manager.h"
(...skipping 20 matching lines...) Expand all
31 LINUX, 31 LINUX,
32 MAC, 32 MAC,
33 WIN 33 WIN
34 }; 34 };
35 35
36 // Constructs a toolchain settings. The output_subdir_name is the name we 36 // Constructs a toolchain settings. The output_subdir_name is the name we
37 // should use for the subdirectory in the build output directory for this 37 // should use for the subdirectory in the build output directory for this
38 // toolchain's outputs. It should have no slashes in it. The default 38 // toolchain's outputs. It should have no slashes in it. The default
39 // toolchain should use an empty string. 39 // toolchain should use an empty string.
40 Settings(const BuildSettings* build_settings, 40 Settings(const BuildSettings* build_settings,
41 const Toolchain* toolchain,
42 const std::string& output_subdir_name); 41 const std::string& output_subdir_name);
43 ~Settings(); 42 ~Settings();
44 43
45 const BuildSettings* build_settings() const { return build_settings_; } 44 const BuildSettings* build_settings() const { return build_settings_; }
46 45
47 // Danger: this must only be used for getting the toolchain label until the 46 const Label& toolchain_label() const { return toolchain_label_; }
48 // toolchain has been resolved. Otherwise, it will be modified on an 47 void set_toolchain_label(const Label& l) { toolchain_label_ = l; }
49 // arbitrary thread when the toolchain invocation is found. Generally, you 48
50 // will only read this from the target generation where we know everything 49 // Indicates if this corresponds to the default toolchain.
51 // has been resolved and won't change. 50 bool is_default() const { return is_default_; }
52 const Toolchain* toolchain() const { return toolchain_; } 51 void set_is_default(bool id) { is_default_ = id; }
53 52
54 bool IsMac() const { return target_os_ == MAC; } 53 bool IsMac() const { return target_os_ == MAC; }
55 bool IsLinux() const { return target_os_ == LINUX; } 54 bool IsLinux() const { return target_os_ == LINUX; }
56 bool IsWin() const { return target_os_ == WIN; } 55 bool IsWin() const { return target_os_ == WIN; }
57 56
58 TargetOS target_os() const { return target_os_; } 57 TargetOS target_os() const { return target_os_; }
59 void set_target_os(TargetOS t) { target_os_ = t; } 58 void set_target_os(TargetOS t) { target_os_ = t; }
60 59
61 const OutputFile& toolchain_output_subdir() const { 60 const OutputFile& toolchain_output_subdir() const {
62 return toolchain_output_subdir_; 61 return toolchain_output_subdir_;
(...skipping 24 matching lines...) Expand all
87 bool greedy_target_generation() const { 86 bool greedy_target_generation() const {
88 return greedy_target_generation_; 87 return greedy_target_generation_;
89 } 88 }
90 void set_greedy_target_generation(bool gtg) { 89 void set_greedy_target_generation(bool gtg) {
91 greedy_target_generation_ = gtg; 90 greedy_target_generation_ = gtg;
92 } 91 }
93 92
94 private: 93 private:
95 const BuildSettings* build_settings_; 94 const BuildSettings* build_settings_;
96 95
97 const Toolchain* toolchain_; 96 Label toolchain_label_;
97 bool is_default_;
98 98
99 TargetOS target_os_; 99 TargetOS target_os_;
100 100
101 mutable ImportManager import_manager_; 101 mutable ImportManager import_manager_;
102 102
103 // The subdirectory inside the build output for this toolchain. For the 103 // The subdirectory inside the build output for this toolchain. For the
104 // default toolchain, this will be empty (since the deafult toolchain's 104 // default toolchain, this will be empty (since the deafult toolchain's
105 // output directory is the same as the build directory). When nonempty, this 105 // output directory is the same as the build directory). When nonempty, this
106 // is guaranteed to end in a slash. 106 // is guaranteed to end in a slash.
107 OutputFile toolchain_output_subdir_; 107 OutputFile toolchain_output_subdir_;
108 108
109 // Full source file path to the toolchain output directory. 109 // Full source file path to the toolchain output directory.
110 SourceDir toolchain_output_dir_; 110 SourceDir toolchain_output_dir_;
111 111
112 SourceDir toolchain_gen_dir_; 112 SourceDir toolchain_gen_dir_;
113 113
114 Scope base_config_; 114 Scope base_config_;
115 115
116 bool greedy_target_generation_; 116 bool greedy_target_generation_;
117 117
118 DISALLOW_COPY_AND_ASSIGN(Settings); 118 DISALLOW_COPY_AND_ASSIGN(Settings);
119 }; 119 };
120 120
121 #endif // TOOLS_GN_SETTINGS_H_ 121 #endif // TOOLS_GN_SETTINGS_H_
OLDNEW
« no previous file with comments | « tools/gn/scope_per_file_provider_unittest.cc ('k') | tools/gn/settings.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698