blob: 2aa900d9b0cb0cc11afa3d705a4f0fd52e570b9b [file] [log] [blame]
# Copyright 2013 The Flutter 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("//flutter/tools/fuchsia/dart/dart_library.gni")
import("//flutter/tools/fuchsia/dart/dart_package_config.gni")
import("//flutter/tools/fuchsia/dart/toolchain.gni")
# Wraps a dart snapshot in a script to be invoked by dart
#
# Parameters
#
# dart (required)
# The path to the dart binary
#
# snapshot (required)
# The path to the dart snapshot
#
# deps (optional)
# Dependencies of this application
#
# output_name (optional)
# Name of the output file to generate. Defaults to $target_name.
template("_dart_snapshot_invocation") {
assert(defined(invoker.dart), "Must specify the path to the dart binary")
assert(defined(invoker.snapshot),
"Must specify the path to the dart snapshot")
if (defined(invoker.output_name)) {
app_name = invoker.output_name
} else {
app_name = target_name
}
# Builds a convenience script to invoke the app.
action(target_name) {
forward_variables_from(invoker,
[
"testonly",
"deps",
])
script = "//flutter/tools/fuchsia/dart/gen_app_invocation.py"
app_path = "$root_out_dir/dart-tools/$app_name"
dart_binary = invoker.dart
snapshot = invoker.snapshot
inputs = [
dart_binary,
snapshot,
]
outputs = [ app_path ]
args = [
"--out",
rebase_path(app_path, root_build_dir),
# `--dart` and `--snapshot` are used in the output app script, use
# absolute path so the script would work regardless where it's invoked.
"--dart",
rebase_path(dart_binary),
"--snapshot",
rebase_path(snapshot),
]
metadata = {
# Record metadata for the //:tool_paths build API.
tool_paths = [
{
cpu = current_cpu
label = get_label_info(":$target_name", "label_with_toolchain")
name = app_name
os = current_os
path = rebase_path(app_path, root_build_dir)
},
]
snapshot_path = [ rebase_path(snapshot, root_build_dir) ]
}
}
}
# Defines a Dart application that can be run on the host which is
# compiled from an existing snapshot
#
# Parameters
#
# snapshot (required)
# The path to the dart snapshot
#
# deps (optional)
# Dependencies of this application
#
# output_name (optional)
# Name of the output file to generate. Defaults to $target_name.
template("dart_prebuilt_tool") {
assert(defined(invoker.snapshot),
"Must specify the path to the dart snapshot")
_dart_snapshot_invocation(target_name) {
dart = prebuilt_dart
forward_variables_from(invoker, "*")
}
}