# Copyright 2021 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/zircon/migrated_targets.gni")

# TODO(schottm): make sdk_source_set when zxc is in the SDK
source_set("fasync-source-set") {
  sources = [
    "include/lib/fasync/barrier.h",
    "include/lib/fasync/bridge.h",
    "include/lib/fasync/future.h",
    "include/lib/fasync/internal/bridge.h",
    "include/lib/fasync/internal/compiler.h",
    "include/lib/fasync/internal/future.h",
    "include/lib/fasync/internal/type_traits.h",
    "include/lib/fasync/poll.h",
    "include/lib/fasync/scheduler.h",
    "include/lib/fasync/scope.h",
    "include/lib/fasync/sequencer.h",
    "include/lib/fasync/single_threaded_executor.h",
    "include/lib/fasync/type_traits.h",
  ]
  public_deps = [
    "//sdk/lib/fit",
    "//sdk/lib/stdcompat",
    "//zircon/system/ulib/zxc",
  ]
}

zx_library("fasync") {
  sdk = "source"

  sdk_publishable = false
  sdk_name = "fasync"
  sdk_headers = [
    "lib/fasync/internal/bridge.h",
    "lib/fasync/internal/compiler.h",
    "lib/fasync/internal/future.h",
    "lib/fasync/internal/type_traits.h",
    "lib/fasync/barrier.h",
    "lib/fasync/bridge.h",
    "lib/fasync/future.h",
    "lib/fasync/poll.h",
    "lib/fasync/scheduler.h",
    "lib/fasync/scope.h",
    "lib/fasync/sequencer.h",
    "lib/fasync/single_threaded_executor.h",
    "lib/fasync/type_traits.h",
  ]

  sources = [
    "scheduler.cc",
    "single_threaded_executor.cc",
  ]
  deps = []
  public_deps = [
    ":fasync-source-set",
    "//sdk/lib/fit",
    "//sdk/lib/stdcompat",
    "//zircon/system/ulib/zxc",
  ]
}

zx_library("fexecutor") {
  sdk = "source"

  sdk_publishable = false
  sdk_name = "fasync-fexecutor"
  sdk_headers = [ "lib/fasync/fexecutor.h" ]

  sources = [ "fexecutor.cc" ]
  deps = []
  public_deps = [
    ":fasync",
    "//zircon/system/ulib/async:async-cpp",
    "//zircon/system/ulib/async-loop:async-loop-cpp",
  ]
}

group("tests") {
  testonly = true
  deps = [ "tests" ]
}
