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 "gn/target.h" 9 #include "gn/target_generator.h" 10 11 // Populates a Target with the values from an action[_foreach] rule. 12 class 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 ~ActionTargetGenerator() override; 20 21 protected: 22 void DoRun() override; 23 24 private: 25 bool FillScript(); 26 bool FillScriptArgs(); 27 bool FillResponseFileContents(); 28 bool FillDepfile(); 29 bool FillMnemonic(); 30 bool FillPool(); 31 bool FillInputs(); 32 33 // Checks for errors in the outputs variable. 34 bool CheckOutputs(); 35 36 Target::OutputType output_type_; 37 38 ActionTargetGenerator(const ActionTargetGenerator&) = delete; 39 ActionTargetGenerator& operator=(const ActionTargetGenerator&) = delete; 40 }; 41 42 #endif // TOOLS_GN_ACTION_TARGET_GENERATOR_H_ 43