| // 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_SETUP_H_ |
| #define TOOLS_GN_SETUP_H_ |
| |
| #include <vector> |
| |
| #include "base/basictypes.h" |
| #include "base/files/file_path.h" |
| #include "base/memory/scoped_ptr.h" |
| #include "tools/gn/build_settings.h" |
| #include "tools/gn/scheduler.h" |
| #include "tools/gn/scope.h" |
| #include "tools/gn/settings.h" |
| #include "tools/gn/token.h" |
| #include "tools/gn/toolchain.h" |
| |
| class CommandLine; |
| class InputFile; |
| class ParseNode; |
| |
| // Helper class to setup the build settings and environment for the various |
| // commands to run. |
| class Setup { |
| public: |
| Setup(); |
| ~Setup(); |
| |
| // Configures the build for the current command line. On success returns |
| // true. On failure, prints the error and returns false. |
| bool DoSetup(); |
| |
| // Runs the load, returning true on success. On failure, prints the error |
| // and returns false. |
| bool Run(); |
| |
| BuildSettings& build_settings() { return build_settings_; } |
| Scheduler& scheduler() { return scheduler_; } |
| |
| private: |
| // Fills the root directory into the settings. Returns true on success. |
| bool FillSourceDir(const CommandLine& cmdline); |
| |
| // Run config file. |
| bool RunConfigFile(); |
| |
| bool FillOtherConfig(const CommandLine& cmdline); |
| |
| BuildSettings build_settings_; |
| Scheduler scheduler_; |
| |
| // State for invoking the dotfile. |
| // TODO(brettw) this seems a bit excessive, maybe we can get this down |
| // somehow? |
| base::FilePath dotfile_name_; |
| scoped_ptr<InputFile> dotfile_input_file_; |
| std::vector<Token> dotfile_tokens_; |
| scoped_ptr<ParseNode> dotfile_root_; |
| BuildSettings dotfile_build_settings_; |
| Toolchain dotfile_toolchain_; |
| Settings dotfile_settings_; |
| Scope dotfile_scope_; |
| |
| DISALLOW_COPY_AND_ASSIGN(Setup); |
| }; |
| |
| #endif // TOOLS_GN_SETUP_H_ |