# Copyright 2018 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/toolchain.gni")
import("//build/sdk/sdk.gni")
import("//build/sdk/sdk_molecule.gni")
import("//sdk/config.gni")

# This default target is empty because there are multiple flavors of SDKs and
# there is no "default" one. The empty target is still needed so that all the
# other targets in this file are attached to the build graph.
group("sdk") {
}

# Tools and libraries to develop for Fuchsia with Dart.
sdk("fuchsia_dart") {
  category = "partner"

  id = sdk_id

  api = "fuchsia_dart.api"

  deps = [
    "//sdk/docs:modular_config_schema",
    "//topaz/bin/fidlgen_dart:fidlgen_dart_sdk($host_toolchain)",
    "//topaz/public/dart/composition_delegate:composition_delegate_sdk($dart_toolchain)",
    "//topaz/public/dart/fidl:fidl_sdk($dart_toolchain)",
    "//topaz/public/dart/fuchsia:fuchsia_sdk($dart_toolchain)",
    "//topaz/public/dart/fuchsia_logger:fuchsia_logger_sdk($dart_toolchain)",
    "//topaz/public/dart/fuchsia_media:fuchsia_media_sdk($dart_toolchain)",
    "//topaz/public/dart/fuchsia_modular:fuchsia_modular_sdk($dart_toolchain)",
    "//topaz/public/dart/fuchsia_scenic:fuchsia_scenic_sdk($dart_toolchain)",
    "//topaz/public/dart/fuchsia_scenic_flutter:fuchsia_scenic_flutter_sdk($dart_toolchain)",
    "//topaz/public/dart/fuchsia_services:fuchsia_services_sdk($dart_toolchain)",
    "//topaz/public/dart/fuchsia_vfs:fuchsia_vfs_sdk($dart_toolchain)",
    "//topaz/runtime/dart:gen_snapshot_sdk($dart_toolchain)",
    "//topaz/runtime/dart:kernel_compiler_sdk($host_toolchain)",
  ]
}
