# 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",

    # TODO(viktard): remove, needed to soft transition
    # https://fuchsia-review.googlesource.com/c/fuchsia/+/295264
    "//sdk/fidl/fuchsia.ui.input2:fuchsia.ui.input2_sdk",

    # TODO(SCN-1343): Remove this temporary dependency.
    # Temporarily added as a direct dependency so that it can be removed from
    # //sdk/fidl/fuchsia.ui.views.
    "//sdk/fidl/fuchsia.intl:fuchsia.intl_sdk",
    "//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_inspect:fuchsia_inspect_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_modular_testing:fuchsia_modular_testing_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/public/dart/fuchsia_webview_flutter:fuchsia_webview_flutter_sdk($dart_toolchain)",
    "//topaz/runtime/dart:gen_snapshot_sdk($dart_toolchain)",
    "//topaz/runtime/dart:kernel_compiler_sdk($host_toolchain)",
  ]
}
