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