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

# This library is shared between the client and agent code. You should depend
# on it via one of those targets.
static_library("shared") {
  visibility = [ ":*" ]
  sources = [
    "message_reader.cc",
    "message_reader.h",
    "message_writer.cc",
    "protocol.cc",
    "protocol.h",
    "protocol_helpers.cc",
    "protocol_helpers.h",
    "records.cc",
    "records.h",
    "message_writer.h",
  ]

  public_deps = [
    "//garnet/public/lib/fxl",
  ]
}

static_library("agent") {
  sources = [
    "agent_protocol.cc",
    "agent_protocol.h",
  ]

  public_deps = [
    ":shared",
  ]
}

static_library("client") {
  sources = [
    "client_protocol.cc",
    "client_protocol.h",
  ]

  public_deps = [
    ":shared",
  ]
}

# Unit tests for this directory. These are intended to be referenced by unit
# test targets for the consumers of this library.
source_set("tests") {
  testonly = true
  sources = [
    "message_unittests.cc",
    "protocol_unittests.cc",
  ]

  deps = [
    "//third_party/googletest:gtest",
  ]

  public_deps = [
    ":agent",
    ":client",
  ]
}
