# 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/common/fuchsia_config.gni") import("//flutter/tools/fuchsia/dart.gni") import("$dart_src/build/dart/dart_action.gni") template("dart_kernel") { prebuilt_dart_action(target_name) { assert(defined(invoker.main_dart), "main_dart is a required parameter.") assert(defined(invoker.kernel_platform_files), "kernel_platform_files target must be defined.") main_dart = rebase_path(invoker.main_dart) deps = [ invoker.kernel_platform_files ] gen_kernel_script = "$dart_src/pkg/vm/bin/gen_kernel.dart" platform_dill = "$root_out_dir/dart_runner_patched_sdk/platform_strong.dill" dot_packages = rebase_path("$dart_src/.dart_tool/package_config.json") inputs = [ platform_dill, gen_kernel_script, main_dart, dot_packages, ] output = "$target_gen_dir/$target_name.dill" outputs = [ output ] depfile = "$output.d" abs_depfile = rebase_path(depfile) rebased_output = rebase_path(output, root_build_dir) vm_args = [ "--depfile=$abs_depfile", "--depfile_output_filename=$rebased_output", ] script = gen_kernel_script args = [ "--packages=" + rebase_path(dot_packages), "--target=dart_runner", "--platform=" + rebase_path(platform_dill), "--output=" + rebase_path(output), ] if (flutter_runtime_mode == "debug") { args += [ "--embed-sources" ] } else { args += [ "--no-embed-sources" ] } if (defined(invoker.aot) && invoker.aot) { args += [ "--aot", "--tfa", ] } else { # --no-link-platform is only valid when --aot isn't specified args += [ "--no-link-platform" ] } if (defined(invoker.product) && invoker.product) { # Setting this flag in a non-product release build for AOT (a "profile" # build) causes the vm service isolate code to be tree-shaken from an app. # See the pragma on the entrypoint here: # # https://github.com/dart-lang/sdk/blob/main/sdk/lib/_internal/vm/bin/vmservice_io.dart#L240 # # Also, this define excludes debugging and profiling code from Flutter. args += [ "-Ddart.vm.product=true" ] } else { if (flutter_runtime_mode == "profile") { # The following define excludes debugging code from Flutter. args += [ "-Ddart.vm.profile=true" ] } } args += [ rebase_path(main_dart) ] } }