blob: c13b2d1e264a02014c04fc264fa2ed7c5d743c30 [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("//build/compiled_action.gni")
import("//flutter/common/config.gni")
import("//third_party/dart/build/dart/dart_action.gni")
import("//third_party/dart/sdk_args.gni")
import("//third_party/dart/build/dart/dart_action.gni")
# Generates a Dart kernel snapshot using flutter_frontend_server.
#
# Arguments
# dart_main (required): The Main Dart file.
#
# dart_kernel (required): The path to the output kernel snapshot in the out
# directory.
#
# packages (required): The path to the .packages file.
template("compile_flutter_dart_test") {
assert(defined(invoker.dart_file), "The Dart test file must be specified.")
assert(defined(invoker.dart_kernel),
"The Dart Kernel file location must be specified.")
assert(defined(invoker.packages),
"The path to the .packages file must be specified.")
common_deps = [
"//flutter/flutter_frontend_server:frontend_server",
"//flutter/lib/snapshot:strong_platform",
]
if (defined(invoker.deps)) {
common_deps += invoker.deps
}
snapshot_depfile =
"$root_gen_dir/flutter/testing/snapshot_$target_name.depfile.d"
common_vm_args = [ "--disable-dart-dev" ]
flutter_patched_sdk = rebase_path("$root_out_dir/flutter_patched_sdk")
common_args = [
"--sound-null-safety",
"--sdk-root",
flutter_patched_sdk,
"--target=flutter",
"--packages",
rebase_path(invoker.packages),
"--depfile",
rebase_path(snapshot_depfile),
"--output-dill",
rebase_path(invoker.dart_kernel, root_out_dir),
rebase_path(invoker.dart_file),
]
if (flutter_prebuilt_dart_sdk) {
action(target_name) {
testonly = true
deps = common_deps + [ "//flutter:dart_sdk" ]
pool = "//flutter/build/dart:dart_pool"
script = "//build/gn_run_binary.py"
inputs = [ invoker.dart_file ]
outputs = [ invoker.dart_kernel ]
depfile = snapshot_depfile
ext = ""
if (is_win) {
ext = ".exe"
}
dart = rebase_path("$host_prebuilt_dart_sdk/bin/dart$ext", root_out_dir)
frontend_server =
rebase_path("$root_gen_dir/frontend_server.dart.snapshot")
args = [ dart ] + common_vm_args + [ frontend_server ] + common_args
}
} else {
dart_action(target_name) {
testonly = true
deps = common_deps
pool = "//flutter/build/dart:dart_pool"
script = "$root_gen_dir/frontend_server.dart.snapshot"
packages = rebase_path(invoker.packages)
inputs = [ invoker.dart_file ]
outputs = [ invoker.dart_kernel ]
depfile = snapshot_depfile
vm_args = common_vm_args
args = common_args
}
}
}