| Index: tools/gn/target_generator.h
|
| diff --git a/tools/gn/target_generator.h b/tools/gn/target_generator.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..11e920ceadbc724597b14f0bc1a9c5c98e725f5b
|
| --- /dev/null
|
| +++ b/tools/gn/target_generator.h
|
| @@ -0,0 +1,83 @@
|
| +// 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_TARGET_GENERATOR_H_
|
| +#define TOOLS_GN_TARGET_GENERATOR_H_
|
| +
|
| +#include <string>
|
| +#include <vector>
|
| +
|
| +#include "base/basictypes.h"
|
| +#include "base/gtest_prod_util.h"
|
| +#include "base/memory/scoped_ptr.h"
|
| +#include "tools/gn/source_dir.h"
|
| +#include "tools/gn/target.h"
|
| +
|
| +class BuildSettings;
|
| +class Err;
|
| +class Location;
|
| +class Scope;
|
| +class Token;
|
| +class Value;
|
| +
|
| +// Creates Target objects from a Scope (the result of a script execution).
|
| +class TargetGenerator {
|
| + public:
|
| + TargetGenerator(Target* target,
|
| + Scope* scope,
|
| + const Token& function_token,
|
| + const std::vector<Value>& args,
|
| + const std::string& output_type,
|
| + Err* err);
|
| + ~TargetGenerator();
|
| +
|
| + void Run();
|
| +
|
| + // The function token is the token of the function name of the generator for
|
| + // this target. err() will be set on failure.
|
| + static void GenerateTarget(Scope* scope,
|
| + const Token& function_token,
|
| + const std::vector<Value>& args,
|
| + const std::string& output_type,
|
| + Err* err);
|
| +
|
| + private:
|
| + // Sets err_ on failure.
|
| + Target::OutputType GetOutputType() const;
|
| +
|
| + // Reads configs from the given var name, and uses the given setting on the
|
| + // target to save them
|
| + void FillGenericConfigs(const char* var_name,
|
| + void (Target::*setter)(std::vector<const Config*>*));
|
| +
|
| + void FillConfigs();
|
| + void FillAllDependentConfigs();
|
| + void FillDirectDependentConfigs();
|
| + void FillSources();
|
| + void FillData();
|
| + void FillDependencies();
|
| + void FillDestDir();
|
| + void FillScript();
|
| + void FillScriptArgs();
|
| + void FillOutputs();
|
| +
|
| + const BuildSettings* GetBuildSettings() const;
|
| +
|
| + Target* target_;
|
| + Scope* scope_;
|
| + const Token& function_token_;
|
| + std::vector<Value> args_;
|
| + std::string output_type_;
|
| + Err* err_;
|
| +
|
| + // Sources are relative to this. This comes from the input file which doesn't
|
| + // get freed so we don't acautlly have to make a copy.
|
| + const SourceDir& input_directory_;
|
| +
|
| + FRIEND_TEST_ALL_PREFIXES(TargetGenerator, ResolveInputPath);
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(TargetGenerator);
|
| +};
|
| +
|
| +#endif // TOOLS_GN_TARGET_GENERATOR_H_
|
|
|