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_BINARY_TARGET_GENERATOR_H_ 6 #define TOOLS_GN_BINARY_TARGET_GENERATOR_H_ 7 8 #include "gn/target.h" 9 #include "gn/target_generator.h" 10 11 // Populates a Target with the values from a binary rule (executable, shared 12 // library, or static library). 13 class BinaryTargetGenerator : public TargetGenerator { 14 public: 15 BinaryTargetGenerator(Target* target, 16 Scope* scope, 17 const FunctionCallNode* function_call, 18 Target::OutputType type, 19 Err* err); 20 ~BinaryTargetGenerator() override; 21 22 protected: 23 void DoRun() override; 24 bool FillSources() override; 25 26 private: 27 bool FillCompleteStaticLib(); 28 bool FillFriends(); 29 bool FillOutputName(); 30 bool FillOutputPrefixOverride(); 31 bool FillOutputDir(); 32 bool FillAllowCircularIncludesFrom(); 33 bool FillPool(); 34 bool ValidateSources(); 35 36 Target::OutputType output_type_; 37 38 BinaryTargetGenerator(const BinaryTargetGenerator&) = delete; 39 BinaryTargetGenerator& operator=(const BinaryTargetGenerator&) = delete; 40 }; 41 42 #endif // TOOLS_GN_BINARY_TARGET_GENERATOR_H_ 43