123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)// Copyright (c) 2013 The Chromium Authors. All rights reserved. 223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)// found in the LICENSE file. 423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) 523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)#ifndef TOOLS_GN_ACTION_TARGET_GENERATOR_H_ 623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)#define TOOLS_GN_ACTION_TARGET_GENERATOR_H_ 723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) 823730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)#include "base/compiler_specific.h" 923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)#include "tools/gn/target_generator.h" 1023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) 1123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)// Populates a Target with the values from an action[_foreach] rule. 1223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)class ActionTargetGenerator : public TargetGenerator { 1323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) public: 1423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) ActionTargetGenerator(Target* target, 1523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) Scope* scope, 1623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) const FunctionCallNode* function_call, 1723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) Target::OutputType type, 1823730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) Err* err); 1923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) virtual ~ActionTargetGenerator(); 2023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) 2123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) protected: 2223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) virtual void DoRun() OVERRIDE; 2323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) 2423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) private: 251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci bool FillScript(); 261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci bool FillScriptArgs(); 271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci bool FillDepfile(); 2823730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) 2923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) // Checks for errors in the outputs variable. 301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci bool CheckOutputs(); 3123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) 3223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) Target::OutputType output_type_; 3323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) 3423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(ActionTargetGenerator); 3523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)}; 3623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) 3723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)#endif // TOOLS_GN_ACTION_TARGET_GENERATOR_H_ 38