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