1// Copyright (c) 2013 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef TOOLS_GN_ACTION_TARGET_GENERATOR_H_
6#define TOOLS_GN_ACTION_TARGET_GENERATOR_H_
7
8#include "base/compiler_specific.h"
9#include "tools/gn/target_generator.h"
10
11// Populates a Target with the values from an action[_foreach] rule.
12class ActionTargetGenerator : public TargetGenerator {
13 public:
14  ActionTargetGenerator(Target* target,
15                        Scope* scope,
16                        const FunctionCallNode* function_call,
17                        Target::OutputType type,
18                        Err* err);
19  virtual ~ActionTargetGenerator();
20
21 protected:
22  virtual void DoRun() OVERRIDE;
23
24 private:
25  bool FillScript();
26  bool FillScriptArgs();
27  bool FillDepfile();
28
29  // Checks for errors in the outputs variable.
30  bool CheckOutputs();
31
32  Target::OutputType output_type_;
33
34  DISALLOW_COPY_AND_ASSIGN(ActionTargetGenerator);
35};
36
37#endif  // TOOLS_GN_ACTION_TARGET_GENERATOR_H_
38