# Copyright (c) 2014 The WebRTC project authors. All Rights Reserved.
#
# Use of this source code is governed by a BSD-style license
# that can be found in the LICENSE file in the root of the source
# tree. An additional intellectual property rights grant can be found
# in the file PATENTS.  All contributing project authors may
# be found in the AUTHORS file in the root of the source tree.

import("../build/webrtc.gni")

source_set("tools") {
  deps = [
    ":command_line_parser",
  ]
}

source_set("command_line_parser") {
  sources = [
    "simple_command_line_parser.cc",
    "simple_command_line_parser.h",
  ]
  deps = [
    "..:gtest_prod",
  ]
  configs += [ "..:common_config" ]
  public_configs = [ "..:common_inherited_config" ]
}

source_set("video_quality_analysis") {
  sources = [
    "frame_analyzer/video_quality_analysis.cc",
    "frame_analyzer/video_quality_analysis.h",
  ]
  deps = [
    "../common_video",
  ]
  public_deps = [
    "../common_video",
  ]
}

executable("frame_analyzer") {
  sources = [
    "frame_analyzer/frame_analyzer.cc",
  ]
  deps = [
    ":command_line_parser",
    ":video_quality_analysis",
  ]
}

executable("rgba_to_i420_converter") {
  sources = [
    "converter/converter.cc",
    "converter/converter.h",
    "converter/rgba_to_i420_converter.cc",
  ]
  deps = [
    ":command_line_parser",
    "../common_video",
  ]
}

# TODO(kjellander): Convert all of tools.gyp into GN here.

if (!build_with_chromium) {
  executable("tools_unittests") {
    testonly = true

    sources = [
      "simple_command_line_parser_unittest.cc",
    ]

    configs += [ "..:common_config" ]
    public_configs = [ "..:common_inherited_config" ]

    deps = [
      ":command_line_parser",
      "../test:test_support_main",
      "//testing/gtest",
    ]
  }
}
