13551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)// Copyright (c) 2013 The Chromium Authors. All rights reserved. 23551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 33551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)// found in the LICENSE file. 43551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 53551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#ifndef TOOLS_GN_BINARY_TARGET_GENERATOR_H_ 63551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#define TOOLS_GN_BINARY_TARGET_GENERATOR_H_ 73551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 83551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "base/compiler_specific.h" 93551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "tools/gn/target_generator.h" 103551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 113551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)// Populates a Target with the values from a binary rule (executable, shared 123551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)// library, or static library). 133551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)class BinaryTargetGenerator : public TargetGenerator { 143551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) public: 153551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) BinaryTargetGenerator(Target* target, 163551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) Scope* scope, 17f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) const FunctionCallNode* function_call, 183551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) Target::OutputType type, 193551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) Err* err); 203551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) virtual ~BinaryTargetGenerator(); 213551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 223551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) protected: 233551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) virtual void DoRun() OVERRIDE; 243551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 253551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) private: 261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci bool FillCheckIncludes(); 271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci bool FillCompleteStaticLib(); 281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci bool FillOutputName(); 291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci bool FillOutputExtension(); 301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci bool FillAllowCircularIncludesFrom(); 3158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 323551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) Target::OutputType output_type_; 333551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 343551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(BinaryTargetGenerator); 353551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)}; 363551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 373551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#endif // TOOLS_GN_BINARY_TARGET_GENERATOR_H_ 38