# Copyright 2019 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("//third_party/fuchsia-sdk/build/component.gni")
import("//third_party/fuchsia-sdk/build/package.gni")

# A FIDL client that can connect to a Calculator engine.
source_set("client_lib") {
  sources = [
    "client.cc",
    "client.h",
  ]

  deps = [
    "//src/calculator/fidl:fuchsia.examples.calculator",
    "//third_party/fuchsia-sdk/pkg/async-loop-cpp",
  ]

  public_deps = [
    "//third_party/fuchsia-sdk/pkg/sys_cpp",
  ]
}

# The binary that executes when the component is launched.
executable("client_bin") {
  sources = [
    "main.cc",
  ]

  deps = [
    ":client_lib",
    "//src/calculator/fidl:fuchsia.examples.calculator",
    "//third_party/fuchsia-sdk/pkg/async-loop-cpp",
    "//third_party/fuchsia-sdk/pkg/async-loop-default",
  ]
}

# A Fuchsia component. This contains the executable that runs and a manifest
# that provides metadata about how the component should work.
fuchsia_component("component") {
  manifest = "meta/client.cml"
  data_deps = [
    ":client_bin",
  ]
}

# The complete Fuchsia package containing all the pieces needed for the client
# to run.
fuchsia_package("client") {
  package_name = "calculator_client"

  deps = [
    ":component",
  ]
}
