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/compiler_specific.h"
9#include "tools/gn/target_generator.h"
10
11// Populates a Target with the values from a binary rule (executable, shared
12// library, or static library).
13class 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  virtual ~BinaryTargetGenerator();
21
22 protected:
23  virtual void DoRun() OVERRIDE;
24
25 private:
26  bool FillCheckIncludes();
27  bool FillCompleteStaticLib();
28  bool FillOutputName();
29  bool FillOutputExtension();
30  bool FillAllowCircularIncludesFrom();
31
32  Target::OutputType output_type_;
33
34  DISALLOW_COPY_AND_ASSIGN(BinaryTargetGenerator);
35};
36
37#endif  // TOOLS_GN_BINARY_TARGET_GENERATOR_H_
38