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

group("cpp") {
  testonly = true
  deps = [
    ":future",
    ":future_unittest",
    ":operation",
    ":operation_unittest",
    ":unittests",
  ]
}

source_set("future") {
  sources = [
    "future.cc",
    "future.h",
  ]

  public_deps = [
    "//sdk/lib/syslog/cpp",
    "//src/lib/fxl",
    "//zircon/public/lib/async-cpp",
    "//zircon/system/ulib/async-default",
  ]

  # TODO(fxbug.dev/58162): delete the below and fix compiler warnings
  configs += [ "//build/config:Wno-conversion" ]
}

source_set("operation") {
  sources = [
    "operation.cc",
    "operation.h",
  ]

  public_deps = [
    ":future",
    "//zircon/public/lib/async-cpp",
  ]

  deps = [ "//zircon/system/ulib/trace" ]
}

group("unittests") {
  testonly = true

  deps = [
    ":future_unittest",
    ":operation_unittest",
  ]
}

source_set("future_unittest") {
  testonly = true

  sources = [ "future_unittest.cc" ]

  deps = [
    ":future",
    "//third_party/googletest:gtest",
    "//zircon/system/ulib/async-testing",
  ]

  # TODO(fxbug.dev/58162): delete the below and fix compiler warnings
  configs += [ "//build/config:Wno-conversion" ]
}

source_set("operation_unittest") {
  testonly = true

  sources = [ "operation_unittest.cc" ]

  deps = [
    ":operation",
    "//garnet/public/lib/gtest",
    "//third_party/googletest:gtest",
  ]
}
