# Copyright 2016 The Fuchsia Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

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

executable("bin") {
  output_name = "netconnector"

  sources = [
    "device_service_provider.cc",
    "device_service_provider.h",
    "host_name.cc",
    "host_name.h",
    "listener.cc",
    "listener.h",
    "main.cc",
    "message_transceiver.cc",
    "message_transceiver.h",
    "netconnector_impl.cc",
    "netconnector_impl.h",
    "netconnector_params.cc",
    "netconnector_params.h",
    "requestor_agent.cc",
    "requestor_agent.h",
    "responding_service_host.cc",
    "responding_service_host.h",
    "service_agent.cc",
    "service_agent.h",
  ]

  deps = [
    "//garnet/bin/media/util",
    "//garnet/lib/inet",
    "//garnet/public/fidl/fuchsia.mdns",
    "//garnet/public/fidl/fuchsia.netconnector",
    "//garnet/public/fidl/fuchsia.netstack",
    "//garnet/public/fidl/fuchsia.sys",
    "//garnet/public/lib/component/cpp",
    "//garnet/public/lib/fsl",
    "//garnet/public/lib/fxl",
    "//garnet/public/lib/mdns/cpp",
    "//garnet/public/lib/netconnector/cpp",
    "//garnet/public/lib/svc/cpp",
    "//third_party/rapidjson",
    "//zircon/public/lib/async-loop-cpp",
    "//zircon/public/lib/fit",
  ]
}

package("netconnector") {
  deps = [
    ":bin",
  ]

  binaries = [
    {
      name = "netconnector"
    },
  ]

  meta = [
    {
      path = rebase_path("meta/netconnector.cmx")
      dest = "netconnector.cmx"
    },
  ]

  resources = [
    {
      path = rebase_path("netconnector.config")
      dest = "netconnector.config"
    },
  ]
}

package("netconnector_config") {
  deprecated_system_image = true
  resources = [
    {
      dest = "sysmgr/netconnector.config"
      path = rebase_path("service.config")
    },
  ]
}
