| Index: tools/gn/setup.h
|
| diff --git a/tools/gn/setup.h b/tools/gn/setup.h
|
| index e3607503f1f9e9c4135c54b344e34a9d5b6d4359..2e0e3677dd182bd66d43ac02840461fc7e3dc4b5 100644
|
| --- a/tools/gn/setup.h
|
| +++ b/tools/gn/setup.h
|
| @@ -29,14 +29,44 @@ class CommandLine;
|
|
|
| extern const char kDotfile_Help[];
|
|
|
| -// Base class for code shared between Setup and DependentSetup.
|
| -class CommonSetup {
|
| +// Helper class to setup the build settings and environment for the various
|
| +// commands to run.
|
| +class Setup {
|
| public:
|
| - virtual ~CommonSetup();
|
| + Setup();
|
| + ~Setup();
|
| +
|
| + // Configures the build for the current command line. On success returns
|
| + // true. On failure, prints the error and returns false.
|
| + //
|
| + // The parameter is the string the user specified for the build directory. We
|
| + // will try to interpret this as a SourceDir if possible, and will fail if is
|
| + // is malformed.
|
| + //
|
| + // With force_create = false, setup will fail if the build directory doesn't
|
| + // alreay exist with an args file in it. With force_create set to true, the
|
| + // directory will be created if necessary. Commands explicitly doing
|
| + // generation should set this to true to create it, but querying commands
|
| + // should set it to false to prevent creating oddly-named directories in case
|
| + // the user omits the build directory argument (which is easy to do).
|
| + bool DoSetup(const std::string& build_dir, bool force_create);
|
| +
|
| + // Runs the load, returning true on success. On failure, prints the error
|
| + // and returns false. This includes both RunPreMessageLoop() and
|
| + // RunPostMessageLoop().
|
| + bool Run();
|
| +
|
| + Scheduler& scheduler() { return scheduler_; }
|
|
|
| - // Returns the scheduler. This is virtual since only the main setup has a
|
| - // scheduler and the derived ones just store pointers.
|
| - virtual Scheduler* GetScheduler() = 0;
|
| + // Returns the file used to store the build arguments. Note that the path
|
| + // might not exist.
|
| + SourceFile GetBuildArgFile() const;
|
| +
|
| + // Sets whether the build arguments should be filled during setup from the
|
| + // command line/build argument file. This will be true by default. The use
|
| + // case for setting it to false is when editing build arguments, we don't
|
| + // want to rely on them being valid.
|
| + void set_fill_arguments(bool fa) { fill_arguments_ = fa; }
|
|
|
| // When true (the default), Run() will check for unresolved dependencies and
|
| // cycles upon completion. When false, such errors will be ignored.
|
| @@ -69,74 +99,12 @@ class CommonSetup {
|
| // arguements.
|
| static const char kBuildArgFileName[];
|
|
|
| - protected:
|
| - CommonSetup();
|
| - CommonSetup(const CommonSetup& other);
|
| -
|
| + private:
|
| // Performs the two sets of operations to run the generation before and after
|
| // the message loop is run.
|
| void RunPreMessageLoop();
|
| bool RunPostMessageLoop();
|
|
|
| - BuildSettings build_settings_;
|
| - scoped_refptr<LoaderImpl> loader_;
|
| - scoped_refptr<Builder> builder_;
|
| -
|
| - SourceFile root_build_file_;
|
| -
|
| - bool check_for_bad_items_;
|
| - bool check_for_unused_overrides_;
|
| - bool check_public_headers_;
|
| -
|
| - // See getter for info.
|
| - scoped_ptr<std::vector<LabelPattern> > check_patterns_;
|
| -
|
| - private:
|
| - CommonSetup& operator=(const CommonSetup& other); // Disallow.
|
| -};
|
| -
|
| -// Helper class to setup the build settings and environment for the various
|
| -// commands to run.
|
| -class Setup : public CommonSetup {
|
| - public:
|
| - Setup();
|
| - ~Setup() override;
|
| -
|
| - // Configures the build for the current command line. On success returns
|
| - // true. On failure, prints the error and returns false.
|
| - //
|
| - // The parameter is the string the user specified for the build directory. We
|
| - // will try to interpret this as a SourceDir if possible, and will fail if is
|
| - // is malformed.
|
| - //
|
| - // With force_create = false, setup will fail if the build directory doesn't
|
| - // alreay exist with an args file in it. With force_create set to true, the
|
| - // directory will be created if necessary. Commands explicitly doing
|
| - // generation should set this to true to create it, but querying commands
|
| - // should set it to false to prevent creating oddly-named directories in case
|
| - // the user omits the build directory argument (which is easy to do).
|
| - bool DoSetup(const std::string& build_dir, bool force_create);
|
| -
|
| - // Runs the load, returning true on success. On failure, prints the error
|
| - // and returns false. This includes both RunPreMessageLoop() and
|
| - // RunPostMessageLoop().
|
| - bool Run();
|
| -
|
| - Scheduler& scheduler() { return scheduler_; }
|
| -
|
| - Scheduler* GetScheduler() override;
|
| -
|
| - // Returns the file used to store the build arguments. Note that the path
|
| - // might not exist.
|
| - SourceFile GetBuildArgFile() const;
|
| -
|
| - // Sets whether the build arguments should be filled during setup from the
|
| - // command line/build argument file. This will be true by default. The use
|
| - // case for setting it to false is when editing build arguments, we don't
|
| - // want to rely on them being valid.
|
| - void set_fill_arguments(bool fa) { fill_arguments_ = fa; }
|
| -
|
| - private:
|
| // Fills build arguments. Returns true on success.
|
| bool FillArguments(const base::CommandLine& cmdline);
|
|
|
| @@ -168,6 +136,19 @@ class Setup : public CommonSetup {
|
|
|
| bool FillOtherConfig(const base::CommandLine& cmdline);
|
|
|
| + BuildSettings build_settings_;
|
| + scoped_refptr<LoaderImpl> loader_;
|
| + scoped_refptr<Builder> builder_;
|
| +
|
| + SourceFile root_build_file_;
|
| +
|
| + bool check_for_bad_items_;
|
| + bool check_for_unused_overrides_;
|
| + bool check_public_headers_;
|
| +
|
| + // See getter for info.
|
| + scoped_ptr<std::vector<LabelPattern>> check_patterns_;
|
| +
|
| Scheduler scheduler_;
|
|
|
| // These empty settings and toolchain are used to interpret the command line
|
| @@ -196,33 +177,4 @@ class Setup : public CommonSetup {
|
| DISALLOW_COPY_AND_ASSIGN(Setup);
|
| };
|
|
|
| -// A dependent setup allows one to do more than one build at a time. You would
|
| -// make a dependent setup which clones the state of the main one, make any
|
| -// necessary changes, and then run it.
|
| -//
|
| -// The way to run both at the same time is:
|
| -// dependent_setup.RunPreMessageLoop();
|
| -// main_setup.Run();
|
| -// dependent_setup.RunPostMessageLoop();
|
| -// so that the main setup executes the message loop, but both are run.
|
| -class DependentSetup : public CommonSetup {
|
| - public:
|
| - // Note: this could be one function that takes a CommonSetup*, but then
|
| - // the compiler can get confused what to call, since it also matches the
|
| - // default copy constructor.
|
| - explicit DependentSetup(Setup* derive_from);
|
| - explicit DependentSetup(DependentSetup* derive_from);
|
| - ~DependentSetup() override;
|
| -
|
| - // These are the two parts of Run() in the regular setup, not including the
|
| - // call to actually run the message loop.
|
| - void RunPreMessageLoop();
|
| - bool RunPostMessageLoop();
|
| -
|
| - Scheduler* GetScheduler() override;
|
| -
|
| - private:
|
| - Scheduler* scheduler_;
|
| -};
|
| -
|
| #endif // TOOLS_GN_SETUP_H_
|
|
|