| Index: tools/gn/ninja_binary_target_writer.h
|
| diff --git a/tools/gn/ninja_binary_target_writer.h b/tools/gn/ninja_binary_target_writer.h
|
| index 14762534ed0f83772acd6ec10f06cf44d7980991..e3236ce52f6f65a896e845a8a3646127dcb5d7ce 100644
|
| --- a/tools/gn/ninja_binary_target_writer.h
|
| +++ b/tools/gn/ninja_binary_target_writer.h
|
| @@ -6,17 +6,18 @@
|
| #define TOOLS_GN_NINJA_BINARY_TARGET_WRITER_H_
|
|
|
| #include "base/compiler_specific.h"
|
| +#include "tools/gn/config_values.h"
|
| #include "tools/gn/ninja_target_writer.h"
|
| #include "tools/gn/toolchain.h"
|
| #include "tools/gn/unique_vector.h"
|
|
|
| +struct EscapeOptions;
|
| +
|
| // Writes a .ninja file for a binary target type (an executable, a shared
|
| // library, or a static library).
|
| class NinjaBinaryTargetWriter : public NinjaTargetWriter {
|
| public:
|
| - NinjaBinaryTargetWriter(const Target* target,
|
| - const Toolchain* toolchain,
|
| - std::ostream& out);
|
| + NinjaBinaryTargetWriter(const Target* target, std::ostream& out);
|
| virtual ~NinjaBinaryTargetWriter();
|
|
|
| virtual void Run() OVERRIDE;
|
| @@ -27,14 +28,10 @@ class NinjaBinaryTargetWriter : public NinjaTargetWriter {
|
| void WriteCompilerVars();
|
| void WriteSources(std::vector<OutputFile>* object_files);
|
| void WriteLinkerStuff(const std::vector<OutputFile>& object_files);
|
| - void WriteLinkerFlags(const Toolchain::Tool& tool,
|
| - const OutputFile& windows_manifest);
|
| - void WriteLibs(const Toolchain::Tool& tool);
|
| -
|
| - // Writes the build line for linking the target. Includes newline.
|
| - void WriteLinkCommand(const OutputFile& external_output_file,
|
| - const OutputFile& internal_output_file,
|
| - const std::vector<OutputFile>& object_files);
|
| + void WriteLinkerFlags();
|
| + void WriteLibs();
|
| + void WriteOutputExtension();
|
| + void WriteSolibs(const std::vector<OutputFile>& solibs);
|
|
|
| // Writes the stamp line for a source set. These are not linked.
|
| void WriteSourceSetStamp(const std::vector<OutputFile>& object_files);
|
| @@ -57,12 +54,29 @@ class NinjaBinaryTargetWriter : public NinjaTargetWriter {
|
| // Writes the implicit dependencies for the link or stamp line. This is
|
| // the "||" and everything following it on the ninja line.
|
| //
|
| - // The implicit dependencies are the non-linkable deps passed in as an
|
| + // The order-only dependencies are the non-linkable deps passed in as an
|
| // argument, plus the data file depdencies in the target.
|
| - void WriteImplicitDependencies(
|
| + void WriteOrderOnlyDependencies(
|
| const UniqueVector<const Target*>& non_linkable_deps);
|
|
|
| - Toolchain::ToolType tool_type_;
|
| + // Computes the set of output files resulting from compiling the given source
|
| + // file. If the file can be compiled and the tool exists, fills the outputs in
|
| + // and writes the tool type to computed_tool_type. If the file is not
|
| + // compilable, returns false.
|
| + //
|
| + // The target that the source belongs to is passed as an argument. In the
|
| + // case of linking to source sets, this can be different than the target
|
| + // this class is currently writing.
|
| + //
|
| + // The function can succeed with a "NONE" tool type for object files which are
|
| + // just passed to the output. The output will always be overwritten, not
|
| + // appended to.
|
| + bool GetOutputFilesForSource(const Target* target,
|
| + const SourceFile& source,
|
| + Toolchain::ToolType* computed_tool_type,
|
| + std::vector<OutputFile>* outputs) const;
|
| +
|
| + const Tool* tool_;
|
|
|
| DISALLOW_COPY_AND_ASSIGN(NinjaBinaryTargetWriter);
|
| };
|
|
|