# Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
# for details. All rights reserved. Use of this source code is governed by a
# BSD-style license that can be found in the LICENSE file.


declare_args() {
  dart_io_support = false
}


resources_sources_gypi =
    exec_script("../../tools/gypi_to_gn.py",
                [rebase_path("resources_sources.gypi")],
                "scope",
                ["resources_sources.gypi"])

# Generate a resources.cc file for the service isolate without Observatory.
action("gen_resources_cc") {
  visibility = [ ":*" ] # Only targets in this file can see this.
  script = "../tools/create_resources.py"
  inputs = [
    "../tools/create_resources.py",
  ]
  sources = resources_sources_gypi.sources
  outputs = [ "$target_gen_dir/resources_gen.cc" ]
  args = [
    "--output",
    rebase_path("$target_gen_dir/resources_gen.cc", root_build_dir),
    "--outer_namespace", "dart",
    "--inner_namespace", "bin",
    "--table_name", "service_bin",
    "--root_prefix", rebase_path(".", root_build_dir) + "/",
  ] + rebase_path(sources, root_build_dir)
}


template("gen_library_src_path") {
  assert(defined(invoker.sources), "Need sources in $target_name")
  assert(defined(invoker.output), "Need output in $target_name")
  action(target_name) {
    visibility = [ ":*" ]  # Only targets in this file can see this.
    script = "../tools/gen_library_src_paths.py"
    inputs = [
      "../tools/gen_library_src_paths.py",
      "builtin_in.cc",
    ]
    outputs = [ invoker.output, ]
    name = invoker.name
    kind = invoker.kind
    args = [
      "--output", rebase_path(invoker.output, root_build_dir),
      "--input_cc", rebase_path("builtin_in.cc", root_build_dir),
      "--include", "bin/builtin.h",
      "--var_name", "dart::bin::Builtin::${name}_${kind}_paths_",
      "--library_name", "dart:${name}",] +
      rebase_path(invoker.sources, root_build_dir)
  }
}


builtin_sources_gypi =
    exec_script("../../tools/gypi_to_gn.py",
                [rebase_path("builtin_sources.gypi")],
                "scope",
                ["builtin_sources.gypi"])

gen_library_src_path("generate_builtin_cc_file") {
  name = "_builtin"
  kind = "source"
  sources = builtin_sources_gypi.sources
  output = "$target_gen_dir/builtin_gen.cc"
}


iolib_sources_gypi =
    exec_script("../../tools/gypi_to_gn.py",
                [rebase_path("../../sdk/lib/io/iolib_sources.gypi")],
                "scope",
                ["../../sdk/lib/io/iolib_sources.gypi"])
iolib_sources = rebase_path(iolib_sources_gypi.sources, ".", "../../sdk/lib/io")

gen_library_src_path("generate_io_cc_file") {
  name = "io"
  kind = "source"
  sources = ["../../sdk/lib/io/io.dart"] + iolib_sources
  output = "$target_gen_dir/io_gen.cc"
}

io_sources_gypi =
    exec_script("../../tools/gypi_to_gn.py",
                [rebase_path("io_sources.gypi")],
                "scope",
                ["io_sources.gypi"])

gen_library_src_path("generate_io_patch_cc_file") {
  name = "io"
  kind = "patch"
  sources = io_sources_gypi.sources
  output = "$target_gen_dir/io_patch_gen.cc"
}


config("libdart_builtin_config") {
  libs = [
    "dl",
  ]
}


builtin_impl_sources_gypi =
    exec_script("../../tools/gypi_to_gn.py",
                [rebase_path("builtin_impl_sources.gypi")],
                "scope",
                ["builtin_impl_sources.gypi"])

static_library("libdart_builtin") {
  configs += ["..:dart_config"]
  public_configs = [":libdart_builtin_config"]
  deps = [
    ":generate_builtin_cc_file",
    ":generate_io_cc_file",
    ":generate_io_patch_cc_file",
  ]
  include_dirs = [
    "..",
  ]
  set_sources_assignment_filter(["*_test.cc", "*_test.h"])
  sources = [
    "log_android.cc",
    "log_linux.cc",
    "log_macos.cc",
    "log_win.cc",
  ] + builtin_impl_sources_gypi.sources
}


static_library("libdart_nosnapshot") {
  configs += ["..:dart_config"]
  deps = [
    "../vm:libdart_lib_nosnapshot",
    "../vm:libdart_vm_nosnapshot",
    "../vm:libdart_platform",
    "../third_party/double-conversion/src:libdouble_conversion",
    "..:generate_version_cc_file",
  ]

  sources = [
    "../include/dart_api.h",
    "../include/dart_mirrors_api.h",
    "../include/dart_native_api.h",
    "../include/dart_tools_api.h",
    "../vm/dart_api_impl.cc",
    "../vm/debugger_api_impl.cc",
    "../vm/mirrors_api_impl.cc",
    "../vm/native_api_impl.cc",
    "$target_gen_dir/../version.cc",
  ]

  include_dirs = [
    "..",
  ]

  defines = [
    "DART_SHARED_LIB",
  ]
}


executable("gen_snapshot") {
  configs += ["..:dart_config"]
  deps = [
    ":gen_resources_cc",
    ":gen_snapshot_dart_io",
    ":generate_builtin_cc_file",
    ":generate_io_cc_file",
    ":generate_io_patch_cc_file",
    ":libdart_builtin",
    ":libdart_nosnapshot",
  ]

  sources = [
    "address_sanitizer.cc",
    "gen_snapshot.cc",
    # Very limited native resolver provided.
    "builtin_common.cc",
    "builtin_gen_snapshot.cc",
    "builtin.cc",
    "builtin.h",
    "platform_android.cc",
    "platform_linux.cc",
    "platform_macos.cc",
    "platform_win.cc",
    "platform.h",
    "vmservice_impl.cc",
    "vmservice_impl.h",
    # Include generated source files.
    "$target_gen_dir/builtin_gen.cc",
    "$target_gen_dir/io_gen.cc",
    "$target_gen_dir/io_patch_gen.cc",
    "$target_gen_dir/resources_gen.cc",
  ]

  include_dirs = [
    "..",
  ]
}


source_set("libdart_embedder_noio") {
  configs += ["..:dart_config",]
  deps = [
    "..:libdart",
    "../vm:libdart_platform",
  ]
}

io_impl_sources_gypi =
    exec_script("../../tools/gypi_to_gn.py",
                [ rebase_path("io_impl_sources.gypi") ],
                "scope",
                [ "io_impl_sources.gypi" ])


# A source set for the implementation of 'dart:io' library
# (without secure sockets) suitable for linking with gen_snapshot.
source_set("gen_snapshot_dart_io") {
  configs += ["..:dart_config",]

  # Set custom sources assignment filter. The custom filters does three things:
  # 1) Filters out unnecessary files pulled in from the gypi files.
  # 2) Filters out secure socket support.
  # 3) Enables dart:io by filtering out _unsupported.cc implementations.
  custom_sources_filter = [
    "*net/nss_memio.cc",
    "*net/nss_memio.h",
    "*secure_socket.cc",
    "*secure_socket.h",
    "filter.cc",
    "*io_service_unsupported.cc",
    "platform_*.cc",
    "*io_service.cc",
    "*io_service.h",
    "*_test.cc",
    "*_test.h",
    "*dbg*",
    "builtin.cc",
    "builtin_common.cc",
    "builtin_gen_snapshot.cc",
  ]
  if (!is_mac && !is_ios) {
    # Dart tree uses *_macos.* instead of *_mac.*
    custom_sources_filter += [
      "*_macos.h",
      "*_macos.cc",
    ]
  }
  set_sources_assignment_filter(custom_sources_filter)

  defines = [ "DART_IO_SECURE_SOCKET_DISABLED" ]

  sources = io_impl_sources_gypi.sources + builtin_impl_sources_gypi.sources
  sources += [
    "io_natives.cc",
    "io_natives.h",
    "log_android.cc",
    "log_linux.cc",
    "log_macos.cc",
    "log_win.cc",
    "log.h",
  ]

  include_dirs = [
    "..",
    "//third_party"
  ]
}

# A source set for the implementation of 'dart:io' library
# (without secure sockets).
source_set("embedded_dart_io") {
  configs += ["..:dart_config",]

  # Set custom sources assignment filter. The custom filters does three things:
  # 1) Filters out unnecessary files pulled in from the gypi files.
  # 2) Filters out secure socket support.
  # 3) Enables dart:io by filtering out _unsupported.cc implementations.
  custom_sources_filter = [
    "*net/nss_memio.cc",
    "*net/nss_memio.h",
    "*secure_socket.cc",
    "*secure_socket.h",
    "*filter_unsupported.cc",
    "*io_service_unsupported.cc",
    "*io_service.cc",
    "*io_service.h",
    "*_test.cc",
    "*_test.h",
    "*dbg*",
    "builtin.cc",
    "builtin_gen_snapshot.cc",
  ]
  if (!is_mac && !is_ios) {
    # Dart tree uses *_macos.* instead of *_mac.*
    custom_sources_filter += [
      "*_macos.h",
      "*_macos.cc",
    ]
  }
  set_sources_assignment_filter(custom_sources_filter)

  defines = [ "DART_IO_SECURE_SOCKET_DISABLED" ]

  sources = io_impl_sources_gypi.sources + builtin_impl_sources_gypi.sources
  sources += [
    "builtin_nolib.cc",
    "builtin_natives.cc",
    "io_natives.cc",
    "io_natives.h",
    "embedded_dart_io.cc",
    "embedded_dart_io.h",
    "log_android.cc",
    "log_linux.cc",
    "log_macos.cc",
    "log_win.cc",
    "log.h",
  ]

  include_dirs = [
    "..",
    "//third_party"
  ]
}
