Index: tools/gn/ninja_helper.h |
diff --git a/tools/gn/ninja_helper.h b/tools/gn/ninja_helper.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..5bea29ed21421a5caafa685db62cb923e2720bd7 |
--- /dev/null |
+++ b/tools/gn/ninja_helper.h |
@@ -0,0 +1,71 @@ |
+// Copyright (c) 2013 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#ifndef TOOLS_GN_NINJA_HELPER_H_ |
+#define TOOLS_GN_NINJA_HELPER_H_ |
+ |
+#include <iosfwd> |
+#include <string> |
+ |
+#include "tools/gn/filesystem_utils.h" |
+#include "tools/gn/output_file.h" |
+ |
+class BuildSettings; |
+class SourceDir; |
+class SourceFile; |
+class Target; |
+ |
+// NinjaHelper ----------------------------------------------------------------- |
+ |
+class NinjaHelper { |
+ public: |
+ NinjaHelper(const BuildSettings* build_settings); |
+ ~NinjaHelper(); |
+ |
+ // Ends in a slash. |
+ std::string GetTopleveOutputDir() const; |
+ |
+ // Ends in a slash. |
+ std::string GetTargetOutputDir(const Target* target) const; |
+ |
+ // Example: "base/base.ninja". The string version will not be escaped, and |
+ // will always have slashes for path separators. |
+ OutputFile GetNinjaFileForTarget(const Target* target) const; |
+ |
+ // Returns the name of the root .ninja file for the given toolchain. |
+ OutputFile GetNinjaFileForToolchain(const Settings* settings) const; |
+ |
+ // Given a source file relative to the source root, returns the output |
+ // filename. |
+ OutputFile GetOutputFileForSource(const Target* target, |
+ const SourceFile& source, |
+ SourceFileType type) const; |
+ |
+ // Returns the filename produced by the given output. |
+ // |
+ // Some targets make multiple files (like a .dll and an import library). This |
+ // function returns the name of the file other targets should depend on and |
+ // link to (so in this example, the import library). |
+ OutputFile GetTargetOutputFile(const Target* target) const; |
+ |
+ // Returns the relative directory in either slashes or the system separator |
+ // from the ninja directory (e.g. "out/Debug") to the source root (e.g. |
+ // "../.."). It has no terminating slash. |
+ const std::string& build_to_src_no_last_slash() const { |
+ return build_to_src_no_last_slash_; |
+ } |
+ const std::string& build_to_src_system_no_last_slash() const { |
+ return build_to_src_system_no_last_slash_; |
+ } |
+ |
+ private: |
+ const BuildSettings* build_settings_; |
+ |
+ std::string build_to_src_no_last_slash_; |
+ std::string build_to_src_system_no_last_slash_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(NinjaHelper); |
+}; |
+ |
+#endif // TOOLS_GN_NINJA_HELPER_H_ |