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

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

Issue 1607423002: Allow .o files for GN generated inputs. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Comment fix Created 4 years, 11 months 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
« no previous file with comments | « tools/gn/ninja_target_writer.cc ('k') | tools/gn/target.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_TARGET_H_ 5 #ifndef TOOLS_GN_TARGET_H_
6 #define TOOLS_GN_TARGET_H_ 6 #define TOOLS_GN_TARGET_H_
7 7
8 #include <set> 8 #include <set>
9 #include <string> 9 #include <string>
10 #include <vector> 10 #include <vector>
11 11
12 #include "base/gtest_prod_util.h" 12 #include "base/gtest_prod_util.h"
13 #include "base/logging.h" 13 #include "base/logging.h"
14 #include "base/macros.h" 14 #include "base/macros.h"
15 #include "tools/gn/action_values.h" 15 #include "tools/gn/action_values.h"
16 #include "tools/gn/config_values.h" 16 #include "tools/gn/config_values.h"
17 #include "tools/gn/inherited_libraries.h" 17 #include "tools/gn/inherited_libraries.h"
18 #include "tools/gn/item.h" 18 #include "tools/gn/item.h"
19 #include "tools/gn/label_ptr.h" 19 #include "tools/gn/label_ptr.h"
20 #include "tools/gn/lib_file.h" 20 #include "tools/gn/lib_file.h"
21 #include "tools/gn/ordered_set.h" 21 #include "tools/gn/ordered_set.h"
22 #include "tools/gn/output_file.h" 22 #include "tools/gn/output_file.h"
23 #include "tools/gn/source_file.h" 23 #include "tools/gn/source_file.h"
24 #include "tools/gn/toolchain.h"
24 #include "tools/gn/unique_vector.h" 25 #include "tools/gn/unique_vector.h"
25 26
26 class DepsIteratorRange; 27 class DepsIteratorRange;
27 class InputFile; 28 class InputFile;
28 class Settings; 29 class Settings;
29 class Token; 30 class Token;
30 class Toolchain; 31 class Toolchain;
31 32
32 class Target : public Item { 33 class Target : public Item {
33 public: 34 public:
(...skipping 25 matching lines...) Expand all
59 static const char* GetStringForOutputType(OutputType type); 60 static const char* GetStringForOutputType(OutputType type);
60 61
61 // Item overrides. 62 // Item overrides.
62 Target* AsTarget() override; 63 Target* AsTarget() override;
63 const Target* AsTarget() const override; 64 const Target* AsTarget() const override;
64 bool OnResolved(Err* err) override; 65 bool OnResolved(Err* err) override;
65 66
66 OutputType output_type() const { return output_type_; } 67 OutputType output_type() const { return output_type_; }
67 void set_output_type(OutputType t) { output_type_ = t; } 68 void set_output_type(OutputType t) { output_type_ = t; }
68 69
70 // True for targets that compile source code (all types of libaries and
71 // executables).
72 bool IsBinary() const;
73
69 // Can be linked into other targets. 74 // Can be linked into other targets.
70 bool IsLinkable() const; 75 bool IsLinkable() const;
71 76
72 // True if the target links dependencies rather than propogated up the graph. 77 // True if the target links dependencies rather than propogated up the graph.
73 // This is also true of action and copy steps even though they don't link 78 // This is also true of action and copy steps even though they don't link
74 // dependencies, because they also don't propogate libraries up. 79 // dependencies, because they also don't propogate libraries up.
75 bool IsFinal() const; 80 bool IsFinal() const;
76 81
77 // Will be the empty string to use the target label as the output name. 82 // Will be the empty string to use the target label as the output name.
78 // See GetComputedOutputName(). 83 // See GetComputedOutputName().
(...skipping 159 matching lines...) Expand 10 before | Expand all | Expand 10 after
238 // These are only known once the target is resolved and will be empty before 243 // These are only known once the target is resolved and will be empty before
239 // that. This is a cache of the files to prevent every target that depends on 244 // that. This is a cache of the files to prevent every target that depends on
240 // a given library from recomputing the same pattern. 245 // a given library from recomputing the same pattern.
241 const OutputFile& link_output_file() const { 246 const OutputFile& link_output_file() const {
242 return link_output_file_; 247 return link_output_file_;
243 } 248 }
244 const OutputFile& dependency_output_file() const { 249 const OutputFile& dependency_output_file() const {
245 return dependency_output_file_; 250 return dependency_output_file_;
246 } 251 }
247 252
253 // Computes the set of output files resulting from compiling the given source
254 // file. If the file can be compiled and the tool exists, fills the outputs
255 // in and writes the tool type to computed_tool_type. If the file is not
256 // compilable, returns false.
257 //
258 // The function can succeed with a "NONE" tool type for object files which
259 // are just passed to the output. The output will always be overwritten, not
260 // appended to.
261 bool GetOutputFilesForSource(const SourceFile& source,
262 Toolchain::ToolType* computed_tool_type,
263 std::vector<OutputFile>* outputs) const;
264
248 private: 265 private:
249 FRIEND_TEST_ALL_PREFIXES(Target, ResolvePrecompiledHeaders); 266 FRIEND_TEST_ALL_PREFIXES(Target, ResolvePrecompiledHeaders);
250 267
251 // Pulls necessary information from dependencies to this one when all 268 // Pulls necessary information from dependencies to this one when all
252 // dependencies have been resolved. 269 // dependencies have been resolved.
253 void PullDependentTargetConfigsFrom(const Target* dep); 270 void PullDependentTargetConfigsFrom(const Target* dep);
254 void PullDependentTargetConfigs(); 271 void PullDependentTargetConfigs();
255 void PullDependentTargetLibsFrom(const Target* dep, bool is_public); 272 void PullDependentTargetLibsFrom(const Target* dep, bool is_public);
256 void PullDependentTargetLibs(); 273 void PullDependentTargetLibs();
257 void PullRecursiveHardDeps(); 274 void PullRecursiveHardDeps();
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
320 337
321 // Output files. Empty until the target is resolved. 338 // Output files. Empty until the target is resolved.
322 std::vector<OutputFile> computed_outputs_; 339 std::vector<OutputFile> computed_outputs_;
323 OutputFile link_output_file_; 340 OutputFile link_output_file_;
324 OutputFile dependency_output_file_; 341 OutputFile dependency_output_file_;
325 342
326 DISALLOW_COPY_AND_ASSIGN(Target); 343 DISALLOW_COPY_AND_ASSIGN(Target);
327 }; 344 };
328 345
329 #endif // TOOLS_GN_TARGET_H_ 346 #endif // TOOLS_GN_TARGET_H_
OLDNEW
« no previous file with comments | « tools/gn/ninja_target_writer.cc ('k') | tools/gn/target.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698