# Copyright 2015 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.

source_set("tonic") {
  sources = [
    "dart_api_scope.h",
    "dart_builtin.cc",
    "dart_builtin.h",
    "dart_class_library.cc",
    "dart_class_library.h",
    "dart_class_provider.cc",
    "dart_class_provider.h",
    "dart_converter.cc",
    "dart_converter.h",
    "dart_debugger.cc",
    "dart_debugger.h",
    "dart_dependency_catcher.cc",
    "dart_dependency_catcher.h",
    "dart_error.cc",
    "dart_error.h",
    "dart_exception_factory.cc",
    "dart_exception_factory.h",
    "dart_gc_context.cc",
    "dart_gc_context.h",
    "dart_gc_controller.cc",
    "dart_gc_controller.h",
    "dart_gc_visitor.cc",
    "dart_gc_visitor.h",
    "dart_invoke.cc",
    "dart_invoke.h",
    "dart_isolate_scope.cc",
    "dart_isolate_scope.h",
    "dart_library_loader.cc",
    "dart_library_loader.h",
    "dart_library_provider.cc",
    "dart_library_provider.h",
    "dart_library_provider_files.cc",
    "dart_library_provider_files.h",
    "dart_library_provider_network.cc",
    "dart_library_provider_network.h",
    "dart_persistent_value.cc",
    "dart_persistent_value.h",
    "dart_script_loader_sync.cc",
    "dart_script_loader_sync.h",
    "dart_snapshot_loader.cc",
    "dart_snapshot_loader.h",
    "dart_state.cc",
    "dart_state.h",
    "dart_timer_heap.cc",
    "dart_timer_heap.h",
    "dart_wrappable.cc",
    "dart_wrappable.h",
    "dart_wrapper_info.h",
    "float32_list.cc",
    "float32_list.h",
    "mojo_converter.h",
  ]

  deps = [
    "//base",
    "//build/config/sanitizers:deps",
    "//mojo/data_pipe_utils",
    "//mojo/message_pump",
    "//mojo/public/cpp/system",
    "//mojo/services/network/interfaces",
    "//url",
  ]

  public_deps = [
    "//dart/runtime:libdart",
    "//dart/runtime/vm:libdart_platform",
  ]

  public_configs = [ ":tonic_config" ]
}

config("tonic_config") {
  include_dirs = [ "//dart/runtime" ]
}

# TODO(johnmccutchan): Move these sources into sky_engine and remove this.
source_set("tonic_wtf") {
  sources = [
    "dart_converter_wtf.cc",
    "dart_converter_wtf.h",
    "dart_string.cc",
    "dart_string.h",
    "dart_string_cache.cc",
    "dart_string_cache.h",
    "dart_value.cc",
    "dart_value.h",
  ]

  deps = [
    "//base",
    "//mojo/common",
    "//mojo/public/cpp/system",
  ]

  public_deps = [
    "//dart/runtime:libdart",
    "//dart/runtime/vm:libdart_platform",
  ]
}
