# Copyright 2016 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/dart/dart_library.gni")
import("//build/testing/environments.gni")
import("//topaz/runtime/dart/dart_fuchsia_test.gni")

# NOTE: You must add any Dart files to sdk_ext.gni.

group("zircon") {
  public_deps = [
    ":sdk_ext",
  ]

  deps = [
    ":package_for_analysis",
  ]
}

source_set("sdk_ext") {
  sources = [
    "sdk_ext/handle.cc",
    "sdk_ext/handle.h",
    "sdk_ext/handle_waiter.cc",
    "sdk_ext/handle_waiter.h",
    "sdk_ext/natives.cc",
    "sdk_ext/natives.h",
    "sdk_ext/system.cc",
    "sdk_ext/system.h",
  ]

  deps = [
    "//garnet/public/lib/fsl",
    "//third_party/dart/runtime:dart_api",
    "//zircon/public/fidl/fuchsia-device-manager",
    "//zircon/public/lib/async-default",
    "//zircon/public/lib/ddk",
    "//zircon/public/lib/zx",
  ]

  public_deps = [
    "//src/lib/fxl",
    "//third_party/tonic",
    "//zircon/public/lib/async-cpp",
    "//zircon/public/lib/fdio",
  ]

  public_configs = [ "//topaz/public/dart-pkg:config" ]
}

# This is just so that we can run dart analysis on these files.
dart_library("package_for_analysis") {
  infer_package_name = true

  sources = [
    "src/handle.dart",
    "src/handle_waiter.dart",
    "src/system.dart",
    "zircon.dart",
  ]
}

dart_fuchsia_test("dart_zircon_test") {
  sources = [
    "channel_test.dart",
    "eventpair_test.dart",
    "handle_test.dart",
    "socket_test.dart",
    "vmo_test.dart",
  ]

  deps = [
    "//topaz/public/dart/fidl",
  ]

  meta = [
    {
      path = "//topaz/runtime/dart_runner/meta/dart_zircon_test.cmx"
      dest = "dart_zircon_test.cmx"
    },
  ]
  environments = basic_envs
}
