# Copyright 2014 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.

# GYP: //tools/android/forwarder2/forwarder.gyp:forwarder2
group("forwarder2") {
  datadeps = [
    ":host_forwarder($host_toolchain)",
    ":host_forwarder_copy($host_toolchain)",
    ":device_forwarder($default_toolchain)",
    ":device_forwarder_prepare_dist($default_toolchain)",
  ]
}

if (current_toolchain == default_toolchain) {
  import("//build/config/android/rules.gni")

  # GYP: //tools/android/forwarder2/forwarder.gyp:device_forwarder
  executable("device_forwarder") {
    sources = [
      "command.cc",
      "command.h",
      "common.cc",
      "common.h",
      "daemon.cc",
      "daemon.h",
      "device_controller.cc",
      "device_controller.h",
      "device_forwarder_main.cc",
      "device_listener.cc",
      "device_listener.h",
      "forwarder.cc",
      "forwarder.h",
      "forwarders_manager.cc",
      "forwarders_manager.h",
      "pipe_notifier.cc",
      "pipe_notifier.h",
      "self_deleter_helper.h",
      "socket.cc",
      "socket.h",
      "util.h",
    ]
    deps = [
      "//base",
      "//tools/android/common",
    ]
    datadeps = [
      "//build/android/pylib/device/commands",
    ]
  }

  # GYP: //tools/android/forwarder2/forwarder.gyp:forwarder2
  create_native_executable_dist("device_forwarder_prepare_dist") {
    dist_dir = "$root_build_dir/forwarder_dist"
    binary = "$root_build_dir/exe.stripped/device_forwarder"
    deps = [
      ":device_forwarder",
    ]
  }
}

if (current_toolchain != default_toolchain) {
  # GYP: //tools/android/forwarder2/forwarder.gyp:host_forwarder
  executable("host_forwarder") {
    sources = [
      "command.cc",
      "command.h",
      "common.cc",
      "common.h",
      "daemon.cc",
      "daemon.h",
      "forwarder.cc",
      "forwarder.h",
      "forwarders_manager.cc",
      "forwarders_manager.h",
      "host_controller.cc",
      "host_controller.h",
      "host_forwarder_main.cc",
      "pipe_notifier.cc",
      "pipe_notifier.h",
      "self_deleter_helper.h",
      "socket.cc",
      "socket.h",
      "util.h",
    ]
    deps = [
      "//base",
      "//tools/android/common",
    ]
  }

  # GYP: //tools/android/forwarder2/forwarder.gyp:forwarder2
  copy("host_forwarder_copy") {
    sources = [
      "$root_out_dir/host_forwarder",
    ]
    outputs = [
      "$root_build_dir/host_forwarder",
    ]
    deps = [
      ":host_forwarder",
    ]
  }
}
