blob: d21d1ae0bd093ebc42f085a107077cc1ce37a2fb [file] [log] [blame]
# Copyright 2014 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.
# embedder specific template rules.
import("embedder.gni")
source_set("dart_controller_no_snapshot") {
sources = [
"$target_gen_dir/dart_embedder_patch_resources.cc",
"$target_gen_dir/dart_embedder_service_isolate_resources.cc",
"builtin.cc",
"builtin.h",
"builtin_natives.cc",
"common.cc",
"common.h",
"dart_controller.cc",
"dart_controller.h",
"io/internet_address.h",
"mojo_dart_state.h",
"mojo_io_natives.cc",
"mojo_io_natives.h",
"mojo_natives.cc",
"mojo_natives.h",
"vmservice.cc",
"vmservice.h",
]
if (is_linux) {
sources += [ "io/internet_address_linux.cc" ]
}
if (is_android) {
sources += [ "io/internet_address_android.cc" ]
}
deps = [
":dart_embedder_packages",
":generate_dart_embedder_patch_resources_cc",
":generate_dart_embedder_service_isolate_resources_cc",
"//base",
"//base:i18n",
"//dart/runtime:libdart",
"//dart/runtime/bin:libdart_embedder_noio",
"//third_party/dart-pkg",
"//mojo/message_pump",
"//mojo/public/c/system",
"//mojo/public/cpp/system",
"//mojo/services/network/public/interfaces",
]
defines = []
if (is_debug) {
defines += [ "DEBUG" ]
} else {
defines += [ "NDEBUG" ]
}
}
dart_embedder_resources("generate_dart_embedder_patch_resources_cc") {
inputs = [
"//mojo/dart/embedder/core/natives_patch.dart",
"//mojo/dart/embedder/io/internet_address_patch.dart",
"//mojo/dart/embedder/io/mojo_patch.dart",
"//mojo/dart/embedder/io/platform_patch.dart",
"//mojo/dart/embedder/io/process_patch.dart",
"//mojo/dart/embedder/io/socket_patch.dart",
"//mojo/dart/embedder/io/server_socket_patch.dart",
]
root_prefix = "//mojo/dart/embedder/"
output = "$target_gen_dir/dart_embedder_patch_resources.cc"
table_name = "dart_embedder_patch"
}
group("dart_embedder_packages") {
deps = [
":dart_embedder_package_sdk",
":dart_embedder_package_application",
":dart_embedder_package_bindings",
":dart_embedder_package_network",
":dart_embedder_package_network_service",
]
}
dart_embedder_package("dart_embedder_package_application") {
package = "mojo/public/interfaces/application"
destination = "mojo/mojo"
}
dart_embedder_package("dart_embedder_package_bindings") {
package = "mojo/public/interfaces/bindings"
destination = "mojo/mojo"
}
dart_embedder_package("dart_embedder_package_network") {
package = "mojo/public/interfaces/network"
destination = "mojo/mojo"
}
dart_embedder_package("dart_embedder_package_network_service") {
package = "mojo/services/network/public/interfaces"
destination = "mojo_services/mojo"
}
action_foreach("dart_embedder_package_sdk") {
sources = [
"//mojo/public/dart/lib/application.dart",
"//mojo/public/dart/lib/bindings.dart",
"//mojo/public/dart/lib/core.dart",
"//mojo/public/dart/lib/src/application.dart",
"//mojo/public/dart/lib/src/application_connection.dart",
"//mojo/public/dart/lib/src/buffer.dart",
"//mojo/public/dart/lib/src/codec.dart",
"//mojo/public/dart/lib/src/control_message.dart",
"//mojo/public/dart/lib/src/data_pipe.dart",
"//mojo/public/dart/lib/src/drain_data.dart",
"//mojo/public/dart/lib/src/event_stream.dart",
"//mojo/public/dart/lib/src/handle.dart",
"//mojo/public/dart/lib/src/message.dart",
"//mojo/public/dart/lib/src/message_pipe.dart",
"//mojo/public/dart/lib/src/proxy.dart",
"//mojo/public/dart/lib/src/struct.dart",
"//mojo/public/dart/lib/src/stub.dart",
"//mojo/public/dart/lib/src/types.dart",
"//mojo/public/dart/lib/src/union.dart",
"//mojo/public/dart/lib/src/utils.dart",
"//mojo/public/dart/sdk_ext/internal.dart",
"//mojo/public/dart/sdk_ext/src/handle_watcher.dart",
"//mojo/public/dart/sdk_ext/src/natives.dart",
"//mojo/public/dart/sdk_ext/src/timer_queue.dart",
]
outputs = [
"$root_gen_dir/dart_embedder_packages/{{source_root_relative_dir}}/{{source_file_part}}",
]
script = rebase_path(
"//mojo/dart/embedder/tools/dart_rewrite_embedder_package_imports.py")
args = [
rebase_path("{{source}}", "", root_build_dir),
rebase_path(
"$root_gen_dir/dart_embedder_packages/{{source_root_relative_dir}}/{{source_file_part}}"),
]
}
dart_embedder_resources("generate_dart_embedder_service_isolate_resources_cc") {
deps = [
":deploy_observatory",
]
inputs = [
"//mojo/dart/embedder/vmservice/loader.dart",
"//mojo/dart/embedder/vmservice/main.dart",
"//mojo/dart/embedder/vmservice/resources.dart",
"//mojo/dart/embedder/vmservice/server.dart",
]
root_prefix = "//mojo/dart/embedder/"
input_directory = "$root_out_dir/observatory/deployed/web/"
output = "$target_gen_dir/dart_embedder_service_isolate_resources.cc"
table_name = "dart_embedder_service_isolate"
}
observatory_sources_gypi =
exec_script("../../../dart/tools/gypi_to_gn.py",
[ rebase_path(
"//dart/runtime/observatory/observatory_sources.gypi") ],
"scope",
[ "//dart/runtime/observatory/observatory_sources.gypi" ])
copy("copy_observatory") {
sources = rebase_path(observatory_sources_gypi.sources,
"",
"../../../dart/runtime/observatory")
outputs = [
"$root_gen_dir/observatory_copy/{{source_root_relative_dir}}/{{source_file_part}}",
]
}
action("write_observatory_pubspec_yaml") {
deps = [
":copy_observatory",
]
script = "//dart/tools/observatory_tool.py"
inputs = [
rebase_path("//dart/runtime/observatory/pubspec.yaml"),
]
args = [
"--silent=True",
"--pub-executable",
rebase_path("//third_party/dart-sdk/dart-sdk/bin/pub"),
"--directory",
rebase_path("$root_gen_dir/observatory_copy/dart/runtime/observatory/"),
"--command",
"rewrite",
rebase_path("//dart/runtime/observatory/pubspec.yaml"),
rebase_path(
"$root_gen_dir/observatory_copy/dart/runtime/observatory/pubspec.yaml"),
"../../third_party/",
rebase_path("../../../dart/third_party/"),
]
outputs = [
"$root_gen_dir/observatory_copy/dart/runtime/observatory/pubspec.yaml",
]
}
action("copy_observatory_deps") {
deps = [
":write_observatory_pubspec_yaml",
]
script = "//dart/tools/observatory_tool.py"
inputs = [
script,
"$root_gen_dir/observatory_copy/dart/runtime/observatory/pubspec.yaml",
]
args = [
"--silent=True",
"--pub-executable",
rebase_path("//third_party/dart-sdk/dart-sdk/bin/pub"),
"--directory",
rebase_path("$root_gen_dir/observatory_copy/dart/runtime/observatory/"),
"--command",
"get",
]
outputs = [
"$root_gen_dir/observatory_copy/dart/runtime/observatory/pubspec.lock",
]
}
action("pub_build_observatory") {
sources =
rebase_path(observatory_sources_gypi.sources,
"",
"$root_gen_dir/observatory_copy/dart/runtime/observatory")
deps = [
":copy_observatory",
":copy_observatory_deps",
]
script = "//dart/tools/observatory_tool.py"
inputs = [
script,
]
inputs += sources
args = [
"--silent=True",
"--pub-executable",
rebase_path("//third_party/dart-sdk/dart-sdk/bin/pub"),
"--directory",
rebase_path("$root_gen_dir/observatory_copy/dart/runtime/observatory/"),
"--command",
"build",
rebase_path("$root_out_dir/observatory/build"),
]
outputs = [
"$root_out_dir/observatory/build/web/index.html",
"$root_out_dir/observatory/build/web/index.html.polymer.bootstrap.dart.js",
]
}
action("deploy_observatory") {
deps = [
":pub_build_observatory",
]
script = "//dart/tools/observatory_tool.py"
inputs = [
script,
"$root_out_dir/observatory/build/web/index.html",
"$root_out_dir/observatory/build/web/index.html.polymer.bootstrap.dart.js",
]
args = [
"--silent=True",
"--pub-executable",
rebase_path("//third_party/dart-sdk/dart-sdk/bin/pub"),
"--directory",
rebase_path("$root_out_dir/observatory"),
"--command",
"deploy",
]
outputs = [
"$root_out_dir/observatory/deployed/web/index.html",
"$root_out_dir/observatory/deployed/web/index.html.polymer.bootstrap.dart.js",
]
}
action("generate_snapshot_bin") {
deps = [
"//dart/runtime/bin:gen_snapshot($host_toolchain)",
":dart_embedder_packages",
]
inputs = [
"snapshot.dart",
"//dart/runtime/tools/create_snapshot_bin.py",
"//mojo/dart/embedder/builtin.dart",
"//mojo/dart/embedder/packages.dart",
"//mojo/public/dart/sdk_ext/internal.dart",
"//mojo/public/dart/sdk_ext/src/handle_watcher.dart",
"//mojo/public/dart/sdk_ext/src/natives.dart",
"//mojo/public/dart/sdk_ext/src/timer_queue.dart",
]
vm_isolate_snapshot = "$target_gen_dir/vm_isolate_snapshot.bin"
isolate_snapshot = "$target_gen_dir/isolate_snapshot.bin"
outputs = [
vm_isolate_snapshot,
isolate_snapshot,
]
gen_snapshot_dir =
get_label_info("//dart/runtime/bin:gen_snapshot($host_toolchain)",
"root_out_dir")
script = "//dart/runtime/tools/create_snapshot_bin.py"
builtin_path = rebase_path("//mojo/dart/embedder/builtin.dart")
internal_path = rebase_path("//mojo/public/dart/sdk_ext/internal.dart")
io_path = rebase_path("//dart/sdk/lib/io/io.dart")
embedder_packages_path = rebase_path("//mojo/dart/embedder/packages.dart")
embedder_package_application_path = rebase_path(
"$root_gen_dir/dart_embedder_packages/mojo/public/dart/lib/application.dart")
embedder_package_bindings_path = rebase_path(
"$root_gen_dir/dart_embedder_packages/mojo/public/dart/lib/bindings.dart")
embedder_package_core_path =
rebase_path(
"$root_gen_dir/dart_embedder_packages/mojo/public/dart/lib/core.dart")
url_mappings_script =
rebase_path("//mojo/dart/embedder/tools/dart_embedder_url_mappings.py")
application_mojoms = rebase_path("//mojo/public/interfaces/application")
bindings_mojoms = rebase_path("//mojo/public/interfaces/bindings")
network_mojoms = rebase_path("//mojo/public/interfaces/network")
network_service_mojoms =
rebase_path("//mojo/services/network/public/interfaces")
# This script generates --url_mapping command line arguments for all
# generated mojom.dart bindings files. See HACKING.md for more information.
embedder_mojom_url_mappings =
exec_script(url_mappings_script,
[
# File system path containing target imports.
rebase_path("$root_gen_dir/dart_embedder_packages"),
# Embedder package directories.
"$application_mojoms,mojo/mojo",
"$bindings_mojoms,mojo/mojo",
"$network_mojoms,mojo/mojo",
"$network_service_mojoms,mojo_services/mojo",
],
"list lines")
args = [
"--executable",
rebase_path("$gen_snapshot_dir/gen_snapshot"),
"--package_root",
rebase_path("$root_gen_dir/dart-gen"),
"--script",
rebase_path("snapshot.dart"),
"--vm_output_bin",
rebase_path(vm_isolate_snapshot, root_build_dir),
"--output_bin",
rebase_path(isolate_snapshot, root_build_dir),
"--target_os",
current_os,
"--url_mapping=dart:mojo.builtin,$builtin_path",
"--url_mapping=dart:mojo.internal,$internal_path",
"--url_mapping=dart:io,$io_path",
# Embedder packages
"--url_mapping=dart:embedder_private_packages,$embedder_packages_path",
"--url_mapping=dart:_mojo/application.dart,$embedder_package_application_path",
"--url_mapping=dart:_mojo/bindings.dart,$embedder_package_bindings_path",
"--url_mapping=dart:_mojo/core.dart,$embedder_package_core_path",
] + embedder_mojom_url_mappings
}
action("generate_snapshot_file") {
deps = [
":generate_snapshot_bin",
]
inputs = [
"//dart/runtime/tools/create_snapshot_file.py",
"//mojo/dart/embedder/snapshot.cc.tmpl",
"$target_gen_dir/vm_isolate_snapshot.bin",
"$target_gen_dir/isolate_snapshot.bin",
]
output = "$root_gen_dir/dart_snapshot.cc"
outputs = [
output,
]
script = "//dart/runtime/tools/create_snapshot_file.py"
args = [
"--vm_input_bin",
rebase_path("$target_gen_dir/vm_isolate_snapshot.bin"),
"--input_bin",
rebase_path("$target_gen_dir/isolate_snapshot.bin"),
"--input_cc",
rebase_path("//mojo/dart/embedder/snapshot.cc.tmpl"),
"--output",
rebase_path(output),
]
}
source_set("dart_snapshot_cc") {
sources = [
"$root_gen_dir/dart_snapshot.cc",
]
deps = [
":generate_snapshot_file",
]
}