# 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("//build/fuchsia/sdk.gni") import("//flutter/common/config.gni") import("//flutter/tools/fuchsia/dart.gni") import("//third_party/dart/utils/compile_platform.gni") compile_platform("kernel_platform_files") { single_root_scheme = "org-dartlang-sdk" single_root_base = rebase_path("../../../../../../") libraries_specification_uri = "org-dartlang-sdk:///flutter/shell/platform/fuchsia/dart_runner/kernel/libraries.json" outputs = [ "$root_out_dir/dart_runner_patched_sdk/platform_strong.dill", "$root_out_dir/dart_runner_patched_sdk/vm_outline_strong.dill", ] args = [ "--enable-experiment=non-nullable", "--nnbd-weak", # TODO(dartbug.com/36342): enable bytecode for core libraries when performance of bytecode # pipeline is on par with default pipeline and continuously tracked. # "--bytecode", "--target=dart_runner", "dart:core", ] } template("create_kernel_core_snapshot") { assert(defined(invoker.product), "The parameter 'product' must be defined") product_suffix = "" if (invoker.product) { product_suffix = "_product" } compiled_action(target_name) { deps = [ ":kernel_platform_files", ] platform_dill = "$root_out_dir/dart_runner_patched_sdk/platform_strong.dill" compilation_trace = "//flutter/shell/platform/fuchsia/flutter/compilation_trace.txt" inputs = [ platform_dill, compilation_trace, ] vm_snapshot_data = "$target_gen_dir/vm_data${product_suffix}.bin" vm_snapshot_instructions = "$target_gen_dir/vm_instructions${product_suffix}.bin" isolate_snapshot_data = "$target_gen_dir/isolate_data${product_suffix}.bin" isolate_snapshot_instructions = "$target_gen_dir/isolate_instructions${product_suffix}.bin" snapshot_profile = "$target_gen_dir/snapshot_profile${product_suffix}.json" outputs = [ vm_snapshot_data, vm_snapshot_instructions, isolate_snapshot_data, isolate_snapshot_instructions, snapshot_profile, ] gen_snapshot_to_use = gen_snapshot if (invoker.product) { gen_snapshot_to_use = gen_snapshot_product } tool = gen_snapshot_to_use args = [ "--no_causal_async_stacks", "--lazy_async_stacks", "--use_bytecode_compiler", "--enable_mirrors=false", "--deterministic", "--snapshot_kind=core-jit", "--load_compilation_trace=" + rebase_path(compilation_trace, root_build_dir), "--vm_snapshot_data=" + rebase_path(vm_snapshot_data, root_build_dir), "--vm_snapshot_instructions=" + rebase_path(vm_snapshot_instructions, root_build_dir), "--isolate_snapshot_data=" + rebase_path(isolate_snapshot_data, root_build_dir), "--isolate_snapshot_instructions=" + rebase_path(isolate_snapshot_instructions, root_build_dir), "--write_v8_snapshot_profile_to=" + rebase_path(snapshot_profile, root_build_dir), ] # No asserts in debug or release product. # No asserts in release with flutter_profile=true (non-product) # Yes asserts in non-product debug. if (!invoker.product && (is_debug || !(flutter_runtime_mode == "profile"))) { args += [ "--enable_asserts" ] } args += [ rebase_path(platform_dill) ] } } create_kernel_core_snapshot("kernel_core_snapshot") { product = false } create_kernel_core_snapshot("kernel_core_snapshot_product") { product = true }