# Copyright 2016 The Chromium 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/dart/dart_tool.gni")

dart_library("flutter_tools") {
  package_name = "flutter_tools"

  # Can be left empty as analysis is disabled.
  sources = []

  disable_analysis = true

  deps = [
    "//third_party/dart/pkg/analyzer",
    "//third_party/dart/third_party/pkg/linter",
    "//third_party/dart-pkg/pub/archive",
    "//third_party/dart-pkg/pub/args",
    "//third_party/dart-pkg/pub/collection",
    "//third_party/dart-pkg/pub/coverage",
    "//third_party/dart-pkg/pub/crypto",
    "//third_party/dart-pkg/pub/file",
    # The HTTP dependency is removed because http doesn't work on Fuchsia
    # because it uses mirrors which Fuchsia's Dart VM doesn't support.
    "//third_party/dart-pkg/pub/json_rpc_2",
    "//third_party/dart-pkg/pub/json_schema",
    "//third_party/dart-pkg/pub/meta",
    "//third_party/dart-pkg/pub/mustache",
    "//third_party/dart-pkg/pub/package_config",
    "//third_party/dart-pkg/pub/path",
    "//third_party/dart-pkg/pub/platform",
    "//third_party/dart-pkg/pub/process",
    "//third_party/dart-pkg/pub/quiver",
    "//third_party/dart-pkg/pub/stack_trace",
    "//third_party/dart-pkg/pub/test",
    "//third_party/dart-pkg/pub/usage",
    "//third_party/dart-pkg/pub/web_socket_channel",
    "//third_party/dart-pkg/pub/xml",
    "//third_party/dart-pkg/pub/yaml",
  ]
}

dart_tool("fuchsia_builder") {
  main_dart = "bin/fuchsia_builder.dart"

  disable_analysis = true

  deps = [
    ":flutter_tools",
  ]
}

dart_tool("fuchsia_asset_builder") {
  main_dart = "bin/fuchsia_asset_builder.dart"

  disable_analysis = true

  deps = [
    ":flutter_tools",
  ]
}

dart_tool("fuchsia_tester") {
  main_dart = "bin/fuchsia_tester.dart"

  disable_analysis = true

  deps = [
    ":flutter_tools",
  ]

  non_dart_deps = [
    "$flutter_root/shell",
  ]
}
