// Copyright (c) 2013 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef TOOLS_GN_BINARY_TARGET_GENERATOR_H_
#define TOOLS_GN_BINARY_TARGET_GENERATOR_H_

#include "base/macros.h"
#include "gn/target.h"
#include "gn/target_generator.h"

// Populates a Target with the values from a binary rule (executable, shared
// library, or static library).
class BinaryTargetGenerator : public TargetGenerator {
 public:
  BinaryTargetGenerator(Target* target,
                        Scope* scope,
                        const FunctionCallNode* function_call,
                        Target::OutputType type,
                        Err* err);
  ~BinaryTargetGenerator() override;

 protected:
  void DoRun() override;
  bool FillSources() override;

 private:
  bool FillCompleteStaticLib();
  bool FillFriends();
  bool FillOutputName();
  bool FillOutputPrefixOverride();
  bool FillOutputDir();
  bool FillAllowCircularIncludesFrom();
  bool ValidateSources();

  Target::OutputType output_type_;

  DISALLOW_COPY_AND_ASSIGN(BinaryTargetGenerator);
};

#endif  // TOOLS_GN_BINARY_TARGET_GENERATOR_H_
