# Copyright 2013 The Flutter 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/fuchsia/sdk.gni")
import("//flutter/testing/testing.gni")

config("zircon_config") {
  include_dirs = [ "." ]
}

source_set("zircon") {
  public_configs = [ ":zircon_config" ]

  sources = [
    "sdk_ext/handle.cc",
    "sdk_ext/handle.h",
    "sdk_ext/handle_disposition.cc",
    "sdk_ext/handle_disposition.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 = [
    "$fuchsia_sdk_root/pkg:async-cpp",
    "$fuchsia_sdk_root/pkg:async-default",
    "$fuchsia_sdk_root/pkg:async-loop-cpp",
    "$fuchsia_sdk_root/pkg:fdio",
    "$fuchsia_sdk_root/pkg:zx",
    "//flutter/fml",
    "//flutter/third_party/tonic",
  ]
}

if (enable_unittests) {
  source_set("test") {
    testonly = true
    deps = [ "test" ]
  }
}
