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

zx_library("async") {
  sdk = "source"
  sdk_publishable = true
  sdk_headers = [
    "lib/async/dispatcher.h",
    "lib/async/irq.h",
    "lib/async/paged_vmo.h",
    "lib/async/receiver.h",
    "lib/async/sequence_id.h",
    "lib/async/task.h",
    "lib/async/time.h",
    "lib/async/trap.h",
    "lib/async/wait.h",
  ]

  public_deps = [
    # <lib/async/cpp/executor.h> has #include <lib/fpromise/promise.h>
    "//sdk/lib/fit-promise:headers",

    # <lib/async/cpp/wait.h> has #include <lib/fit/function.h>.
    "//sdk/lib/fit:headers",
  ]
  sources = [ "ops.c" ]
  deps = [
    "//sdk/lib/fit",
    "//sdk/lib/fit-promise",
    "//src/zircon/lib/zircon",
  ]
}

zx_library("async-cpp") {
  sdk = "source"
  sdk_publishable = true
  sdk_headers = [
    "lib/async/cpp/executor.h",
    "lib/async/cpp/irq.h",
    "lib/async/cpp/paged_vmo.h",
    "lib/async/cpp/receiver.h",
    "lib/async/cpp/task.h",
    "lib/async/cpp/time.h",
    "lib/async/cpp/trap.h",
    "lib/async/cpp/wait.h",
    "lib/async/cpp/sequence_checker.h",
  ]

  public_deps = [
    # <lib/async/cpp/executor.h> has #include <lib/zx/time.h>.
    # <lib/async/cpp/task.h> has #include <lib/zx/time.h>.
    "//zircon/system/ulib/zx:headers",

    # <lib/async/cpp/executor.h> has many lib/fit-promise includes.
    "//sdk/lib/fit-promise:headers",

    # <lib/async/cpp/task.h> has #include <lib/fit/function.h>.
    "//sdk/lib/fit:headers",

    # <lib/async/cpp/sequence_checker.h> has #include <lib/stdcompat/variant.h>.
    "//sdk/lib/stdcompat:headers",
  ]
  sources = [
    "executor.cc",
    "irq.cc",
    "paged_vmo.cc",
    "receiver.cc",
    "sequence_checker.cc",
    "task.cc",
    "trap.cc",
    "wait.cc",
  ]
  deps = [
    ":async",
    "//src/zircon/lib/zircon",
    "//zircon/system/ulib/zx",
  ]
}

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