# Copyright 2020 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/components.gni")
import("//build/dart/dart_component.gni")
import("//build/dart/dart_library.gni")

group("dart") {
  deps = [ ":hello-world-dart" ]
}

dart_library("lib") {
  package_name = "hello-world"
  source_dir = "lib"
  sources = [ "main.dart" ]
  deps = [
    "//sdk/dart/fuchsia",
    "//sdk/dart/zircon",
  ]
}

dart_component("component") {
  component_name = "hello-world-dart"
  manifest = "meta/hello_world_dart.cmx"
  main_package = "hello-world"
  deps = [ ":lib" ]
}

fuchsia_package("hello-world-dart") {
  deps = [ ":component" ]
}

group("tests") {
  testonly = true
  deps = [ ":hello-world-dart" ]
}
